A simplified version of the orchestrator pattern is the pipes and filter pattern. This pattern extends the familiar Unix paradigm of simple-services-connected-by-smart-pipes to distributed systems.
This pattern decomposes a task that involves complex processing into a series of separate filters, which are connected by a messaging infrastructure, called pipes. Generally, each filter is a service with a specific contract—in terms on the expected input format. These filters can be reused so that more than one task can use the same filter to perform a specific action. This helps to avoid duplicating code, and makes it easy to handle changes in requirements by adding or removing filters from an org-wide set of the filter library. For more information, you can refer to https://docs.microsoft.com/en-us/azure/architecture/patterns/pipes-and-filters: