Push vs Pull у брокерах повідомлень 💌💌💌
Одна з речей, які дадуть вам краще розуміння роботи брокерів - це моделі доставки повідомлень.
Насправді все доволі просто й логічно, але багато хто не приділяє цьому уваги. Через це потім не до кінця зрозуміло, коли і який брокер варто використовувати.
А від незнання, в вашій голові завжди буде звучати фраза: «беремо Kafka, вона сама лучча» 😁
Push
Брокер сам відправляє повідомлення consumer-у, щойно воно з’явилося. Такий спосіб найбільш простий і очевидний, оскільки дозволяє дуже швидко отримати та обробити повідомлення.
Але є суттєвий мінус - повідомлень може надходити більше, ніж consumer здатен обробити. Виникає backpressure: повідомлення накопичуються швидше, ніж обробляються.
На практиці, в умовному Datadog, ви будете бачити графік де розмір черги лінійно повзе вгору. Зазвичай, всі роблять вигляд, що не бачать його, а потім рандомний розробник отримує по шапці і страждаючи фіксить корінь проблеми.
Pull
Тут система трохи складніша. Consumer сам запитує у брокера наступну порцію повідомлень і таким чином контролює швидкість їх отримання. Це спрощує роботу з backpressure (але тільки частково), оскільки consumer сам вирішує, коли забирати нові повідомлення.
Загалом pull-модель дає consumer-у більше контролю над тим, коли, скільки і як опрацьовувати повідомлення.
Яскравий представник pull-моделі - Kafka.
#microservices #brokers
Post #197
960
- 👍 16
- 🔥 3