天天看點

kafka 的有序與無序

同時建立kafka生産者produce,kafka消費者consumer,其中我們的topic建立了3個分區,

 生産者發送幾條資料,使用指令檢視消費。

kafka 的有序與無序

可以看到剛剛生産的這幾條資料,當我退出消費指令,重新使用消費者指令來消費資料時,看一下資料

kafka 的有序與無序

這時候看到的資料時無序的,總結一點

單個分區:有序

全局分區:無序

1 4肯定是同一個分區的資料,如何保證生産環境下,全局有序呢,先說下必須要保持有序的需求情況,

有一張students表,對表操作的消息發送到kafka中,但是操控表有增加有删除的時候,必須增加先執行

完,才去删除,如果先執行删除了,在insert增加就是錯誤的了。如下,發送幾條執行sql的指令到kafak,

insert  into student value(1,'json',18);

insert  into student value (2,'jinfei',20) ;

update student set name='JF' where id=2 ;

delete from student where id=2 ;

照上面所說,kafka消費有可能順序如下

分區1:

分區2:

分區3:

這樣的話就會造成錯誤,解決問題核心點:特征資料發送到同一個topic的一個分區,

針對id=2的拼裝特征資料key :  student_id=2             kafka預設會Hash(student_id=2) 取模

                                     value:   sql語句