[elixir! #0071] 功能强大的消息处理库 ---- Broadway (1)

互联网产品每每要面对突如其来的巨大请求量,然后端业务可以支持的并发请求数量是有限的。经常使用的架构是首先让请求进入消息队列,例如 Kafka,RabbitMQ,GooglePubSub 等等。同时后端服务最为消费者分批地从消息队列中获取本身可以处理的消息。后端

这里就涉及到一些复杂问题,例如:网络

  1. 消息处理的原子性,或者叫事务性。即一个消息处理到一半出错了,那么这个消息不该该被从消息队列中删除。
  2. 消息的批处理,尤为是网络延迟较高的状况下,批量消费消息能够减小不少等待时间。
  3. 避免消息丢失,在出错的时候消息不该该丢失。
  4. “软着陆”,或者说正确处理关机,在关机前应该作好准备工做。

以上这些功能 Broadway 都提供了,而且还有更多。架构

而要用好 Broadway,首先须要熟悉 GenStage。GenStage 是一个更加基础的库,使用它能够定义出消息的消费者和生产者。并发

使用 GenStage 定义出的生产者和消费者本质上是一个个进程,包含了特定的预设的行为模式。队列

相关文章
相关标签/搜索