同时创建kafka生产者produce,kafka消费者consumer,其中我们的topic创建了3个分区,
生产者发送几条数据,使用命令查看消费。
可以看到刚刚生产的这几条数据,当我退出消费命令,重新使用消费者命令来消费数据时,看一下数据
这时候看到的数据时无序的,总结一点
单个分区:有序
全局分区:无序
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:
insert into student value(1,'json',18);
delete from student where id=2 ;
分区2:
insert into student value (2,'jinfei',20) ;
分区3:
update student set name='JF' where id=2 ;
这样的话就会造成错误,解决问题核心点:特征数据发送到同一个topic的一个分区,
针对id=2的拼装特征数据key : student_id=2 kafka默认会Hash(student_id=2) 取模
value: sql语句