Part 3 · আর্কিটেকচার 📖 ১৪ মিনিট পড়া 📝 ২০টি কুইজ

Message Brokers

Service-গুলোর মধ্যে asynchronous communication-এর মধ্যস্থতাকারী।

📝 কুইজে যান

আপনি একটি ই-কমার্সে অর্ডার দিলেন। সাথে সাথে — payment process হবে, inventory কমবে, email পাঠানো হবে, SMS পাঠানো হবে, recommendation update হবে। এই সব একসাথে synchronous হলে — অর্ডার confirm-এ ৩০ সেকেন্ড লাগবে। সমাধান: order create করেই একটা message queue-এ ফেলে ব্যবহারকারীকে "OK" বলে দিন। বাকিগুলো background-এ। এটাই Message Broker-এর জাদু।

Message Broker কী?

Message Broker = একটি middleware সিস্টেম যা producer (sender) ও consumer (receiver)-এর মাঝে message asynchronously transmit করে। Producer ও consumer একে অপরকে চেনে না — broker-এর মধ্যস্থতায় communicate।

কেন Message Broker?

  • Asynchronous processing: Producer fire-and-forget; consumer পরে process।
  • Decoupling: Service-গুলো একে অপরকে directly জানে না।
  • Buffering: Spike-এ message queue-এ জমা — overwhelmed হয় না।
  • Reliability: Consumer down হলে message persisted।
  • Load distribution: Multiple consumer queue থেকে নিতে পারে।
  • Scalability: Producer ও consumer স্বাধীনভাবে scale।

দুই কমন pattern

১. Point-to-Point (Queue)

একটি producer একটি queue-এ পাঠায়, একটিমাত্র consumer সেটি পায়।

[Producer] → [Queue] → [Consumer 1] (or Consumer 2 — যে আগে পাবে)
  • Each message একবার consumed।
  • Order processing-এ ভালো।
  • Multiple consumer থাকলে — load distributed।

২. Publish-Subscribe (Topic)

Publisher topic-এ পাঠায় — সব subscriber copy পায়।

[Publisher] → [Topic] → [Subscriber A] → [Subscriber B] → [Subscriber C]
  • Each message সব subscriber-এ broadcast।
  • Notification, event broadcast-এ ভালো।
  • পরের chapter-এ বিস্তারিত।

Terminology

  • Producer/Publisher: Message-এর প্রেরক।
  • Consumer/Subscriber: Message-এর গ্রাহক।
  • Queue: Point-to-point destination।
  • Topic/Exchange: Pub-sub destination।
  • Message: Header + payload।
  • Acknowledgment (ACK): Consumer confirm করেছে।
  • Dead Letter Queue (DLQ): Failed message-এর জায়গা।
  • Routing: Message কোথায় যাবে — rule-based।

RabbitMQ

  • AMQP protocol
  • Routing flexible (exchange)
  • Per-message priority
  • Throughput: medium
  • Use: workflow, RPC

Apache Kafka

  • Distributed log
  • Massive throughput
  • Replay/persistence-friendly
  • Use: stream, event sourcing

AWS SQS

  • Managed, fully serverless
  • Standard ও FIFO queue
  • Easy setup
  • Use: AWS workloads

Redis Streams / Pub-Sub

  • In-memory speed
  • Light-weight
  • Limited durability
  • Use: real-time, simple

Kafka vs RabbitMQ

Kafka

  • Distributed log/stream
  • Pull-based (consumer pulls)
  • Message persisted (replay possible)
  • High throughput (million/sec)
  • Order guaranteed within partition
  • Stream processing

RabbitMQ

  • Traditional broker
  • Push-based (broker pushes)
  • Message-এর পর deleted (ack-এ)
  • Medium throughput
  • Complex routing
  • Workflow, transient task

Message Delivery Guarantees

At-most-once

Message একবার বা শূন্য বার deliver — duplicate নেই, কিন্তু lost হতে পারে।

At-least-once

Message কমপক্ষে একবার deliver — duplicate possible।

সবচেয়ে কমন। Consumer-এর idempotent হতে হবে।

Exactly-once

Message exactly একবার — কঠিন।

Kafka exactly-once support করে (transaction API)।

Persistence ও Reliability

  • Disk persistence: Crash-এ message হারায় না।
  • Replication: Multiple broker-এ message copy।
  • Acknowledgment: Consumer ack না করলে message redelivered।
  • Dead Letter Queue: Repeatedly failed message DLQ-তে।

কখন Message Broker ব্যবহার করবেন?

  • Long-running task (video transcoding, ML inference)।
  • Email/SMS notification।
  • Microservice communication।
  • Event-driven architecture।
  • Spike absorption (traffic burst)।
  • Decoupling।
  • Audit log/event sourcing।

বাস্তব উদাহরণ

  • LinkedIn: Kafka তৈরি করেছিল — বর্তমানে trillion+ message/day।
  • Uber: Kafka — trip event, driver location।
  • Netflix: Kafka — viewing data, recommendations।
  • Slack: Kafka — message delivery।
  • Many e-commerce: RabbitMQ for order processing।

সাধারণ ভুল ধারণা

  1. "Message broker সব সমস্যার সমাধান": না — sync call simpler হলে সেটাই ভালো।
  2. "Exactly-once trivial": না — distributed system-এ কঠিন।
  3. "Kafka = RabbitMQ": না — fundamentally different।

Best Practices

  • Consumer idempotent বানান (at-least-once delivery থেকে)।
  • Dead Letter Queue configure করুন।
  • Message-এ schema (Avro, Protobuf) ব্যবহার করুন।
  • Versioning support — backward compatible message।
  • Monitor — queue length, consumer lag।
  • Right tool: streaming-এ Kafka, complex routing-এ RabbitMQ।

📌 চ্যাপ্টার সারমর্ম

  • Message Broker = async communication middleware।
  • Queue (point-to-point) ও Topic (pub-sub) দুই pattern।
  • RabbitMQ: routing, workflow। Kafka: massive throughput, log।
  • At-most-once / At-least-once / Exactly-once delivery।
  • Decoupling, buffering, reliability — মূল সুবিধা।