欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

kafka中消息數據如何保證按順序消費

阮建安2年前15瀏覽0評論

kafka中消息數據如何保證按順序消費?

分享一個別人的方法,來源見圖片水印。

關于順序消費的幾點說明:

①、kafka的順序消息僅僅是通過partitionKey,將某類消息寫入同一個partition,一個partition只能對應一個消費線程,以保證數據有序。

②、除了發送消息需要指定partitionKey外,producer和consumer實例化無區別。

③、kafka broker宕機,kafka會有自選擇,所以宕機不會減少partition數量,也就不會影響partitionKey的sharding。

那么如何保證數據的消費?

1、如順序消費中的第①點說明,生產者在寫的時候,可以指定一個 key,比如說我們指定了某個訂單 id 作為 key,那么這個訂單相關的數據,一定會被分發到同一個 partition 中去,而且這個 partition 中的數據一定是有順序的。

2、消費者從 partition 中取出來數據的時候,也一定是有順序的。到這里,順序還是 ok 的,沒有錯亂。

3、但是消費者里可能會有多個線程來并發來處理消息。因為如果消費者是單線程消費數據,那么這個吞吐量太低了。而多個線程并發的話,順序可能就亂掉了。

解決方案:

寫N個queue,將具有相同key的數據都存儲在同一個queue,然后對于N個線程,每個線程分別消費一個queue即可。

注:在單線程中,一個 topic,一個 partition,一個 consumer,內部單線程消費,這樣的狀態數據消費是有序的。但由于單線程吞吐量太低,在數據龐大的實際場景很少采用。

加米谷大數據培訓,大數據開發0基礎班、提高班,成都小班面授!

相關:突發宕機,Kafka寫入的數據如何保證不丟失?

https://www.toutiao.com/i6667797088824197644/

java 線程丟失,kafka中消息數據如何保證按順序消費