key shared 消费者增加减少需要解决的问题?
key shared 消费者增加减少需要解决的问题? 1.解决顺序问题 让新加进来的consumer 等前面的消息都签收掉在分发给他消息就可以。 缺点:增加所有消费者的消费延迟时间!(所有的消费者暂停,直到新的消费者加入之前,读取的所有消息被确认为止) 1.1缓冲区优化: 加了一个缓冲区,把消息发到缓冲区,老的消费者根据hash算法消费属于自己的消息。发给新消费者的消息暂存在缓冲区。新的消费者属于暂停状态。老的消费者可以继续消费新的消息。 1.2新增缓存区缺点:当频繁变动消费者数量时,需要复杂的逻辑处理,来保证消息的顺序性。缓存区满后,所有消费者进入暂停状态 2解决hash分配均匀问题 2.1一致性hash槽,类似redis 集群hash槽 2.2hash range 2 分法(扩容找到最大的平均分配,缩容找到最小的) https://github.com/apache/pulsar/pull/6977 https://github.com/apache/pulsar/pull/7106 https://github.com/apache/pulsar/pull/6791 topic 游标 0-100 1. 游标0-5 游标6-10 | (游标为10的时候c3加入) c1 c2 c3加入 2. 缓存区(c1,c2继续消费属于自己的消息 | c3等游标10确认后推给c3消息) 0-5