我们可以在一个消费组中创建多个消费实例来达到高可用、高容错的特性,不会出现单线程以及独立消费者挂掉之后数据不能消费的情况。同时基于多线程的方式也极大的提高了消费效率。
而当新增消费实例或者是消费实例挂掉时 Kakfa 会为我们重新分配消费实例与分区的关系就被称为消费组 Rebalance。
发生这个的前提条件一般有以下几个:
消费组中新增消费实例。
消费组中消费实例 down 掉。
订阅的 Topic 分区数发生变化。
如果是正则订阅 Topic 时,匹配的 Topic 数发生变化也会导致 Rebalance。
所以推荐使用这样的方式消费数据,同时扩展性也非常好。当性能不足新增分区时只需要启动新的消费实例加入到消费组中即可。
总结本次只分享了几个不同消费数据的方式,并没有着重研究消费参数、源码;这些内容感兴趣的话可以在下次分享。
文中提到的部分源码可以在这里查阅:
https://github.com/crossoverJie/JCSprout
欢迎关注公众号一起交流: