OfferGenie
All Questions

Implement Pub/Sub System

NetflixTechnicalDifficulty: Medium
Share on

Ready to answer it out loud?

Run a mock interview on this exact question and get instant AI feedback.

Practice this question

Question Explain

Design and implement a Publisher/Subscriber (Pub/Sub) messaging system.

Requirements:

  • Support multiple topics
  • Allow multiple subscribers per topic
  • Ensure message delivery
  • Handle subscriber failure

Example: publisher.publish("topic1", "message"); subscriber1.subscribe("topic1"); subscriber2.subscribe("topic1");

Answer Example

Publisher/Subscriber System Design:

  1. Core Components:

    • Message Broker
    • Topic Manager
    • Subscriber Manager
    • Message Queue
  2. Implementation:

interface Publisher {
  publish(topic: string, message: Message): void;
}

interface Subscriber {
  subscribe(topic: string): void;
  unsubscribe(topic: string): void;
  receive(message: Message): void;
}

class MessageBroker {
  private topics: Map<string, Set<Subscriber>>;
  private messageQueue: Queue<Message>;

  async publish(topic: string, message: Message): Promise<void> {
    const subscribers = this.topics.get(topic);
    for (const subscriber of subscribers) {
      await this.deliverMessage(subscriber, message);
    }
  }

  private async deliverMessage(subscriber: Subscriber, message: Message): Promise<void> {
    try {
      await subscriber.receive(message);
    } catch (error) {
      await this.handleDeliveryFailure(subscriber, message);
    }
  }
}
  1. Features:

    • Message persistence
    • At-least-once delivery
    • Dead letter queue
    • Message ordering
    • Back-pressure handling
  2. Scalability:

    • Partitioned topics
    • Consumer groups
    • Load balancing
    • Fault tolerance

Company Context (Netflix):

  • High availability
  • Eventual consistency
  • Failure recovery
  • Performance monitoring