kafka 的有序与无序


同时创建kafka生产者produce,kafka消费者consumer,其中我们的topic创建了3个分区,

 生产者发送几条数据,使用命令查看消费。


b66e7b694eb0eb2b5183031478ec519b7f12a527

可以看到刚刚生产的这几条数据,当我退出消费命令,重新使用消费者命令来消费数据时,看一下数据


22ab45332f9fddcc73ed622c4d24ce82040cd432

这时候看到的数据时无序的,总结一点

单个分区:有序

全局分区:无序

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






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值