美文网首页
消费者竞争模式 Competing Consumers Patt

消费者竞争模式 Competing Consumers Patt

作者: GongMeng | 来源:发表于2019-01-15 23:51 被阅读0次

在并发情况下, 允许多个消费者消费同一个消息队列, 并保证消息被消费的基本语义(Kafka的模式). 通过消费者之间对消息进行收取竞争, 来保证整体负载的平衡.

问题

分布式环境下的程序往往对下层的服务有大量的需求. 由于网络的不稳定性等, 我们往往希望底层的服务能够分布在不同的机器上, 同时去响应需求并异步返回结果.

在真实引用中, 往往业务需求和时间有很大的关系. 如每年双11, 双12, 大量的请求会涌入电商服务. 每天晚上10点到12点, 对于欧洲足球联赛的需求会挤压底层服务等等. 我们需要对能够接受的请求, 进行削峰填谷. 避免大量请求和链接淹没整个底层基础架构

解决

image.png

这个设计模式是Kafka使用的, 内部就不再累述了, 可以直接阅读Kafka的设计文档

问题

  • 消息顺序 队列是否需要维护进来的消息的先后顺序, 是一个需要权衡的点. 像Kafka并不保证全局消息的顺序性, 带来的是更高的吞吐

  • 弹性服务 是否需要在线横向扩容, 是否支持故障节点的重启和fail-over

  • 检查有毒信息 在经典的拜占庭将军问题中, 有一个概念是poison message, 部分将军可能是判断节点. 队列系统是否需要识别这些有害的信息, 并把它们自动剔除掉是一个权衡点.

  • 结果处理 很多分布式队列系统, 支持一个基本概念是future, 异步的把处理结果返回到消息的发送方. 这是一个需要注意的点.

  • 消息可靠性 在分布式队列系统里, 需要保证消息不会丢失, 可靠性的设计是需要考虑的

相关文章

网友评论

      本文标题:消费者竞争模式 Competing Consumers Patt

      本文链接:https://www.haomeiwen.com/subject/ioikdqtx.html