上一篇 <<<Kafka集群如何實現(xiàn)相互感知
下一篇 >>>Kafka如何保證消息順序消費
Kafka如何實現(xiàn)分區(qū)
將所有Broker(假設(shè)共n個Broker)和待分配的Partition排序
將第i個Partition分配到第(i mod n)個Broker上
將第i個Partition的第j個Replica分配到第((i + j) mode n)個Broker上
根據(jù)上面的分配規(guī)則阴孟,若replica的數(shù)量大于broker的數(shù)量,必定會有兩個相同的replica分配到同一個broker上秸仙,產(chǎn)生冗余。因此replica的數(shù)量應(yīng)該小于或等于broker的數(shù)量部逮。
操作命令:
./bin/kafka-topics.sh --create --zookeeper 10.211.55.16:2181 --replication-factor 2 --partitions 3 --topic test1221
Kafka集群是如何知道投遞到哪個broker中
生產(chǎn)者在投遞消息的時候傳遞key枷恕,然后根據(jù)key計算hash值存在到具體的broker中,如果是相同的key味抖,最終投遞消息都是同一個broker中评甜。
消費者如何指定分區(qū)消費
@KafkaListener(topicPartitions = {@TopicPartition(topic = "mayikt", partitions = {"0"})})
public void receive(ConsumerRecord<?, ?> consumer) {
System.out.println("topic名稱:" + consumer.topic() + ",key:" +
consumer.key() + "," +
"分區(qū)位置:" + consumer.partition()
+ ", 下標(biāo)" + consumer.offset());
}
推薦閱讀:
<<<消息中間件的核心思想
<<<消息中間件常見問題匯總
<<<基于Netty簡單手寫消息中間件思路
<<<消息隊列常用名詞與中間件對比
<<<Rabbitmq基礎(chǔ)知識
<<<Rabbitmq示例之點對點簡單隊列
<<<Rabbitmq示例之工作(公平)隊列
<<<Rabbitmq示例之發(fā)布訂閱模式
<<<Rabbitmq示例之路由模式Routing
<<<Rabbitmq示例之通配符模式Topics
<<<Rabbitmq示例之RPC模式
<<<Rabbitmq隊列模式總結(jié)
<<<Rabbitmq如何保證消息不丟失
<<<Springboot利用AmqpTemplate整合Rabbitmq
<<<Rabbitmq如何保證冪等性
<<<Rabbitmq的重試策略
<<<Rabbitmq通過死信隊列實現(xiàn)過期監(jiān)聽
<<<Rabbitmq解決分布式事務(wù)思路
<<<Rabbitmq解決分布式事務(wù)demo
<<<Rabbitmq環(huán)境安裝
<<<Kafka中的專業(yè)術(shù)語都有哪些
<<<Kafka的設(shè)計原理介紹
<<<Kafka集群如何實現(xiàn)相互感知
<<<Kafka如何保證消息順序消費
<<<Kafka如何保證高吞吐量
<<<Kafka集群環(huán)境搭建
<<<RocketMQ架構(gòu)原理
<<<RocketMQ、RabbitMQ和Kafka的對比
<<<SpringBoot整合RocketMQ示例
<<<RocketMQ保證順序消費demo
<<<RocketMQ如何動態(tài)擴容和縮容
<<<RocketMQ如何解決分布式事務(wù)
<<<RocketMQ單機版本安裝
<<<RocketMQ集群環(huán)境程序啟用相關(guān)知識點
<<<RocketMQ單機做主備實操
<<<RocketMQ所有配置說明