Apache Kafka異步
消息中間件->流式數據處理平臺分佈式
特色: 高可靠性(分佈式、分區、複製和容錯)、高吞吐量、持久化性能
消息模式:
1)隊列式(或點對點):在點對點消息系統中,消息被保存在隊列中,一個或者多個消費者能夠消費隊列中的消息,可是特定消息只能由最多一個消費者消費,一旦消費者讀取隊列中的消息,它就從隊列中消失;中間件
2)發佈-訂閱:在發佈-訂閱的消息系統中,消息被保存在主題中,與點對點的消息系統不一樣的是消費者能夠訂閱一個或者多個主題並使用該主題中的全部消息,多個消費者能夠訂閱同一個主題中的消息隊列
kafka爲這兩種消費模型設置了統一的消費者抽象模型,消費者組,消費者使用一個消費者組名標記本身,Topic上的一條消息只能由消費者組中的一個成員消費者組消費,假設消費某一個Topic的消費者都屬於同一個消費者組,這就是隊列式消費模型,相反若是全部的消費者不在同一個消費者分組中便是分佈-訂閱的消息模型。Kafka雖然在服務端保證消息的有序性可是不保證消息並行消費下的全局有序性,由於消息是異步發送給各個消費者,消費者接受消息的前後順序沒法保證,若是隻讓一個消費者處理消息有違背並行處理的初衷也極大下降了性能,故kafka在兼顧性能與消息有序性的基礎上作了折衷,kafka採用了分而治之的策略-分區,而且保證Topic分區中的消息只能由惟一一個消費者進行處理,這樣在犧牲跨分區消息處理順序的基礎上,保證了Topic一個分區的處理順序,RocketMQ保證全局有序和局部有序應該也是借鑑了Kafka的實現機制kafka