首页 科技正文

新乡市人才网:kafka新闻分区机制原理

admin 科技 2020-04-23 49 0

靠山

kafka若何支持海量新闻的集中写入?

谜底就是新闻分区。

焦点头脑是:负载平衡,接纳合适的分区计谋把新闻写到差别的broker上的分区中;

其它的产物中有类似的头脑。

好比monogodb, es 内里叫做 shard;   hbase叫region,  cassdra叫vnode;

新闻的三层结构

如下图:

即  topic -> partition -> message ;


topic是逻辑上的新闻容器;

partition现实承载新闻,漫衍在差别的kafka的broke上;

message即详细的新闻。

分区计谋

round-robin轮询


新闻根据分区挨个的写。

randomness随机分区

随机的找一个分区写入,代码如下:

List<PartitionInfo> partitions = cluster.partitionsForTopic(topic);
return ThreadLocalRandom.current().nextInt(partitions.size());


key

相同的key的新闻写到牢固的分区中

新乡市人才网:kafka新闻分区机制原理  第1张

自定义分区

必须完成两步:

1,自定义分区实现类,需要实现org.apache.kafka.clients.producer.Partitioner接口。

主要是实现下面的方式:

int partition(String topic, Object key, byte[] keyBytes, 
              Object value, byte[] valueBytes, Cluster cluster);

好比根据区域分区。

List<PartitionInfo> partitions = cluster.partitionsForTopic(topic);
return partitions.stream().filter(p -> isSouth(p.leader().host()))
    .map(PartitionInfo::partition).findAny().get();

2,显示设置生产者端的参数partitioner.class为详细的类

系统默认:若是新闻有key,根据key分区计谋,否则根据轮询计谋。

小结

kafka的分区实现新闻的高吞吐量的主要依托,主要是实现了写的负载平衡。可以指定种种负载平衡算法。
负载平衡算法非常重要,需要尽力制止新闻分区不均的情形,可能给消费者带来性能瓶颈。

小结如下:

新乡市人才网:kafka新闻分区机制原理  第2张

原创不易,点赞关注支持一下吧!转载请注明出处,让我们互通有无,共同进步,迎接沟通交流。
我会连续分享Java软件编程知识和程序员生长职业之路,迎接关注,我整理了这些年编程学习的种种资源,关注民众号‘李福春连续输出’,发送'学习资料'分享给你!

,

菲律宾申慱手机登录网址

欢迎进入菲律宾申慱手机登录网址!Sunbet 申博提供申博开户(sunbet开户)、SunbetAPP下载、Sunbet客户端下载、Sunbet代理合作等业务。

版权声明

本文仅代表作者观点,
不代表本站Sunbet的立场。
本文系作者授权发表,未经许可,不得转载。

评论