天天看点

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语句