消息队列之kafka(消费语义)-成都快上网建站

消息队列之kafka(消费语义)

1. 消费语义的介绍

   at last once:至少消费一次(对一条消息有可能多次消费,有可能会造成重复消费数据)
     原因:Proudcer产生数据的时候,已经写入在broker中,但是由于broker的网络异常,没有返回ACK,这时Producer,认为数据没有写入成功,此时producer会再次写入,相当于一条数据,被写入了多次。
   at most once:最多消费一次,对于消息,有可能消费一次,有可能一次也消费不了
    原因:producer在产生数据的时候,有可能写数据的时候不成功,此时broker就跳过这个消息,那么这条数据就会丢失,导致consumer无法消费。
   exactly once:有且仅有一次。这种情况是我们所需要的,也就是精准消费一次。

创新互联建站是一家网站设计公司,集创意、互联网应用、软件技术为一体的创意网站建设服务商,主营产品:响应式网站、品牌网站制作成都全网营销。我们专注企业品牌在网站中的整体树立,网络互动的体验,以及在手机等移动端的优质呈现。成都网站制作、网站设计、移动互联产品、网络运营、VI设计、云产品.运维为核心业务。为用户提供一站式解决方案,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏析悦目的作品,网站的价值服务。

2.kafka中消费语义的场景

   at last once:可以先读取数据,处理数据,最后记录offset,当然如果在记录offset之前就crash,新的consumer会重复的来消费这条数据,导致了”最少一次“
   at most once:可以先读取数据,然后记录offset,最后在处理数据,这个方式,就有可能在offset后,还没有及时的处理数据,就crash了,导致了新的consumer继续从这个offset处理,那么刚刚还没来得及处理的数据,就永远不会被处理,导致了”最多消费一次“
   exactly once:可以通过将提交分成两个阶段来解决:保存了offset后提交一次,消息处理成功后,再提交一次。

3.kafka中如何实现精准写入数据?

A:Producer 端写入数据的时候保证幂等性操作:
幂等性:对于同一个数据无论操作多少次都只写入一条数据,如果重复写入,则执行不成功
B:broker写入数据的时候,保证原子性操作, 要么写入成功,要么写入失败。(不成功不断进行重试)


网页标题:消息队列之kafka(消费语义)
文章地址:http://kswjz.com/article/jhppdi.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流