天天看點

kafka0.8新特性小結

      通過兩張圖可以一目了然地對比0.8版本和0.7版本的不同:

kafka0.8新特性小結

                                                        kafka0.7架構圖

kafka0.8新特性小結

                                                kafka0.8架構圖

0.7版:

1)對于0.7版本,我們要寫入資料時(producer)必須顯性地指定寫入的broker和partition,負載均衡必須自己處理;

2)對于同一個topic的同一個partition 序号,在不同的broker(假設為n個broker)上,被表現為多個partition(最多為n個)

0.8版本:

1)基于leader-follower以及備援備份的方案,一個partition可以在多個server上備份,那麼其中一個server作為此partiton的leader,leader負責此partition所有的讀寫操作,如果leader失效,那麼将會有其他follower來接管(成為新的leader),follower隻是單調的和leader跟進,同步消息即可。 由此可見作為leader的server承載了全部的請求壓力,是以從叢集的整體考慮,有多少個partitions就意味着有多少個"leader",kafka會将"leader"均衡的分散在每個執行個體上,來確定整體的性能穩定。 (kafka提供了一些有效的工具來對叢集的leader進行均衡以及線上添加partition,參考官方wiki)

2) 叢集概念,主要展現在producer方面(不過對于0.8版本提供的進階API,在consumer端也進行了抽象,讀取消息也可以不care broker和partition, 0.7版本很蛋疼地需要自己記錄下讀取到哪個broker 、partition、offset ),kafka在釋出消息到kafak cluster的過程中,也提供了一層抽象,即Partitoner的接口,對釋出消息到哪個partition進行自定義政策,使用者可以自己實作該接口來控制消息寫入到哪個partition;