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:

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






上一篇:Spark基本的RDD算子之groupBy,groupByKey,mapValues


下一篇:svn 服务器搭建