| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> kafka分区分配策略 -> 正文阅读 |
|
[大数据]kafka分区分配策略 |
?如下图,有两个主题,每个主题有3个分区,两个消费者组,组1有两个消费者A和B,并且都订阅了T1,但是B同时还订阅了T2,而组2有一个消费者,只订阅了T1,所以这里就有分区的分配策略问题了 kafka的分区分配策略有两种:roundrobin和range如果使用roundrobin,也就是以消费者组为中心,把消费者组里所有的消费者订阅的主题作为一个整体轮询的发送给消费者组里的消费者进行消费,也就是说总共有6个分区,轮询的发送给Group1,这就有一个问题,即:A并没有订阅T2,但是T2的消息就有可能被A消费到 所以采用range的策略,这也是kafka默认的策略,以主题为中心,比如T1有3个分区,group1有两个消费者,那么使用3/2,除不尽,那就有一个消费者多消费一个,即:P0,P1给A消费,P2给B消费,但这样同样有个问题,A没有订阅T2,只有B订阅了,那么T2的消息会发送给A消费吗,答案是否定的,T2的3个分区全部由B来消费? 所以range的策略是主题先是看哪个消费者订阅了它,然后才考虑消费者组,比如T1发现A,B和C都订阅了它,但是又发现A,B是一个组,所以对A,B采用除2的分配策略,而C只有它自己订阅了,所以T1的就都给C,但是range策略有个问题是分配不均衡的问题,比如现在P0,和P1都分配给了A,P2分配给了B,如果Group1订阅的主题很多,那么A消费的分区要比B消费的多很多 但是RoundRobin是先看组,它先拿到一个组,看这个组里的消费者都订阅了哪些主题,把这些主题包括在一个大圈子里,轮询的发送给这个组里的消费者,也不管某个消费者有没有订阅该主题,只要你在这个消费者组里,就会发送给你,所以这是一个问题,所以使用轮询分配策略的前提是一个消费者组里所有的消费者订阅的主题都是一样的,可以订阅多个主题,但是要订阅某个主题,所有的消费者都得订阅 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 16:48:22- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |