1.kafka所采用的設計方式,盤子就是partition,每個人就是一個consumer,每個蘋果就是一條message。辦法三每個盤子中蘋果的消費是有序的,而辦法二的消費是完全無序的
第二種方法:
第三種方法:
2.Partition的讀和寫
我們知道topic下划分了多個partition,消息的生產和消費最終都是發生在partition之上。下圖是一個三個partition的topic的讀寫示意
我們先看右邊的producer,可以看到寫的時候,采用round-robin算法,輪詢往每個partition寫入。
而在消費者端,每個consumer都維護一個offset值,指向的是它所消費到的消息坐標。
我們先看group A的三個consumer,他們分別獨立消費不同的三個partition。每個consumer維護了自己的offset。
我們再看group B,可以看到兩個group是並行消費整個topic,同一條消息會被不同group消費到。
https://blog.csdn.net/liyiming2017/article/details/82805479
https://zhuanlan.zhihu.com/p/60110741
此處有如下知識點:
1、每個partition都是有序的不可變的。
2、Kafka可以保證partition的消費順序,但不能保證topic消費順序。
3、無論消費與否,保留周期默認兩天(可配置)。
4、每個consumer維護的唯一元數據是offset,代表消費的位置,一般線性向后移動。
5、consumer也可以重置offset到之前的位置,可以以任何順序消費,不一定線性后移。
————————————————
原文鏈接:https://blog.csdn.net/liyiming2017/java/article/details/82805479