索引
链接
https://mp.weixin.qq.com/s/omrj7wsJ5EYqs0a-etEO4g
文章截图
简评
看这篇文章是因为最近工作上有个项目需要我去调研并设计出一套可行的解决方案,其中有一步大概率会需要使用到kafka,所以就特意关注一下kafka相关的文章。
除了这篇文章,还看了其他文章,现在主要疑问存在于如何保证消息顺序。首先,消息的生产不是在一个进程中,可能是多个机器上同时生产,同一个用户的交易数据按需求是需要按先后顺序被消费的,但是分布式生产就意味着可能会乱序。然后还有消费端的顺序,这个看了一些文章后,应该是可以通过控制生产端写清除消息的partion或key,就可以做到同一个用户的数据都写到一个partition内,kafka保证的是一个parition肯定只会被一个线程消费,这就做到了消费端的顺序控制。但是还有一个点,kafka貌似在有些情况下会重分配partition(大概是这个意思),会造成数据不是一直被一个线程处理,这点得日后再看看。
综上,我感觉应该是大概率不能强求kafka保证顺序,应该是业务代码去兼容可能的无序才是对的。
原创文章,作者:geekgao,如若转载,请注明出处:https://www.geekgao.cn/archives/1677