Skip to content

Fan Out Component

Fan-out component are a type of distributed system component responsible for propagating data or events to multiple destinations or consumers in a scalable and efficient manner. They act as an intermediary between a source (e.g., a database, message queue, or application) and multiple targets or services that need to receive or process the same data or events.

Examples of Fan-out Services

Some common examples of fan-out services or components include:

  1. News Feed Service: Responsible for updating news feeds or activity streams for users based on their connections or subscriptions.
  2. Timeline Update Service: Distributes user activity updates to various timeline services or storage systems.
  3. News Feed Blender: Combines and ranks updates from various sources (e.g., friends, groups, pages) to create a personalized news feed for each user.
  4. Search Indexing Service: Distributes data updates to multiple search index shards or partitions for indexing.
  5. Notification Service: Broadcasts notifications or messages to multiple recipients or devices.
  6. Copy Service: Distributes data or content updates to multiple replicas or caching layers for redundancy and faster access.

Push vs. Pull Models

Fan-out services can operate using either a push or a pull model, or a combination of both:

  1. Push Model: In the push model, the fan-out service actively pushes data or events to the consumers or destinations as soon as they become available. This model is suitable for scenarios that require real-time or near real-time delivery of updates.

  2. Pull Model: In the pull model, the consumers or destinations periodically poll or request data from the fan-out service. This model is suitable for scenarios where consumers can tolerate some delay in receiving updates.

  3. Hybrid Model: In some cases, a hybrid approach combining push and pull models can be used. For example, the fan-out service could push updates to a message queue, and consumers could pull from the queue at their own pace.

The choice between push, pull, or a hybrid model depends on the specific requirements of the system, such as latency, consistency, scalability, and resource constraints.