rocketmq分布式事務(wù) kafka的一致性為什么不替換成raft?
~!1:卡夫卡在2011捐贈給阿帕奇基金會,拉夫的論文是在尋找一個潛在的共識算法,由斯坦福大學(xué)在2013出版,卡夫卡出生在RAFT之前。當(dāng)1/3節(jié)點不可用時,服務(wù)不可用。Kafka中維護的ISR(in
~!1:卡夫卡在2011捐贈給阿帕奇基金會,拉夫的論文是在尋找一個潛在的共識算法,由斯坦福大學(xué)在2013出版,卡夫卡出生在RAFT之前。當(dāng)1/3節(jié)點不可用時,服務(wù)不可用。Kafka中維護的ISR(in-sync replica,同步副本)可以提供服務(wù),即使副本不可用,只剩下領(lǐng)頭羊
3:更大的數(shù)據(jù)吞吐量。Raft適用于強一致性
需要一個存儲元信息的地方。Zookeeper也是分布式的,這對于配置管理來說是更好的。所以我用了它。
沒有zookeeper,我們還需要一種機制來存儲元數(shù)據(jù)和交換集群信息。
卡夫卡的官方文件有說明。Zookeeper是解決分布式一致性問題的工具。
至于Kafka為什么使用ZK,您應(yīng)該首先了解ZK作為分散集群模式的作用。
消費者需要知道哪些生產(chǎn)者(對于消費者來說,卡夫卡是生產(chǎn)者)是可用的。
如果沒有ZK,消費者怎么知道?如果每個消費者在消費之前都嘗試連接到生產(chǎn)者,以測試連接是否成功,那么效率問題如何解決。
因此,卡夫卡需要ZK,卡夫卡的設(shè)計依賴于ZK。
kafka的一致性為什么不替換成raft?
卡夫卡的分布式單元是分區(qū)。Kafka保證分區(qū)中的數(shù)據(jù)是有序的,而分區(qū)之間的數(shù)據(jù)不能保證順序。多分區(qū)的特性使Kafka在一定程度上具備了分布式消息傳遞的能力。
在業(yè)務(wù)中,我們需要將需要嚴(yán)格排序的數(shù)據(jù)放在一個分區(qū)上,同時,我們需要將可以分發(fā)到其他分區(qū)的消息放在一個分區(qū)上,以確保高性能。