00:03
好,那下面我们来看这个消息发送重试机制。呃,我把这个顺序呢,稍微调了一下啊,本来它放到最后了,呃,顺序稍调了一下。先给大家说一下这个啊。那么我们先来看这个说明啊,当这个producer对发送失败的消息进行重新发送的机制啊,称为消息发送重试机制,也称为消息从头机制。给发送消息失败了,失败了,我重发。是吧?那么关于消息从头需要注意。一个。生者,在发送消息的时候啊,如果采用的是同步或异步发送。报。发送失败会重试,注意啊,我们这个发送不是有三种。
01:01
对吧。同步发送,异步发送,呃,然后我们的单向发送。是吧,同步异步单向,那么如果采用的是。同步或异步。发送。啊,它是会从事的啊,是会,你注意这是。会从事。但消息发送方式啊,发送失败是没有同时机制的。呃,这是我们大家需要注意的啊,它是它不从事,因为单线筒它它不需要获取。呃,我们服务端的啊,我也只管发。只管上,所以它的发送效率很高。呃,但是就是不能保证呃消息呃它它不丢失。
02:00
是吧,而且我是只管夸,一直给你发就行了,我不管成功不成功啊,所以他没有从事机制。这两种都有,这两种都有啊。呃,然后只有普通消息具有发送充实机制,摄影消息没有,就我们前面说这个。我们我们说这个。顺顺序消息啊,顺序消息是没有的,为什么呢?我们一会儿啊再往下分析呃,就会知道为什么顺序消息是没有的。那么消息从头机制可以保证消息尽可能发送成功。我是尽可能的给你发展成功啊呃,然后失败了我我就给你重发是吧,也不丢。不丢失,实际上就是可以保证消息不丢失,但可能会造成消息重复。可能会造成消息重复,所以消息重复在里边啊,是无法避免的一个问题。
03:03
我可以保证不丢。但是有可能消息会重。那么消息重复在一般情况下是不会发生的。可能会重,但是一般不会发生。当出现消息量大。然后网络抖动。消息重复就会成为大概率事件,那你发生的消息少啊,咔嚓一下就过去了,你看我们举的例子里边一般都不会发生,就是消息重复的啊。就是一次性就成功了。是吧?要是大数据量很大,或者网络不稳定,那有可能会出现。另外呢?Producer,如果我是主动给你重发的,又发了一遍,我又给你发一遍。或者是consumer负载发生变化。也会导致消息重复,这个consumer负载发生变化啊,什么意思?其实就是很简单,就是发生什么re。
04:08
放re balance。它负载变化什么意思?就是他原来消费的是哪一个Q,现在又换了,那我们之前就给大家说过,发生re balance的时候,是不是可能会导致。这个这个重复消息啊。啊,不过啊,这里边儿这个重复。其实还不一样,给大家说啊,它的负载啊发生变化。这里边儿这个重复啊,实际上哪不一样,它不是消息重复,它是什么,是我们后边要说的。叫重复消费。他这个重复是重复消费。重复。消息。Fair balance。嗯。不会。
05:00
导致。呃,消息。重复。但。可能。出现。呃。消费就我。我博客里边存的消息啊,是。不重复的,那你读的时候重复的,咱们再再把它说一下吧,再把它说一下啊,比如说呃,这是我的,呃Q这里是吧,呃,这是我的,呃,Consumer是吧,然后这又是一个consumer。原来这consumer啊,他消费呃,他提交了,提交这个off是吧,他提交消费到这了。啊,提前凹下来,然后呢。提交过以后呢,紧接着。又读走了一批数据。读得了一批,读过来这一批数据假设100条,这100条正在消费过程里面出现了。
06:00
发生re balance。但是他还没有提交他的。消费进度offset。是吧?那这时候发生re balance把这个又分给他来消费了。那分给他来消费,他肯定从哪开始消费。从这从offset这个位置啊,这不消费记录吗?所以他会再读,比如说一次也是读100条,要把这100条重新读过来进行消费,所以这100条里边可能有一部分在这消费过了。在这儿又重新被消费了,这叫什么?这叫重复消费,但是在我们的博客里边,这个消息并没有。重复。是吧?所以。消息重复。无法避免,但要避免消息的重复消费,就是我们这个是没办法避免的,但是我们要尽量我们要避免到什么重复消费。避免消息重复消费的解决方案是什么?为消息添加唯一标识?
07:01
为消息添加唯一标识我,我添加唯一标识我,呃,消费者在对消息进行消费的时候,我判断一下,我获取到这个唯一标识一看哟,我以前处理过。那我就不再梳理。我读过来,可能我不进行处理,我获取到了,不对其进行处理,也就不对进行消费。这是可以的,对吧,为消息添加唯一的标识,当然这个唯一标识啊,我们最常用的是什么?呃,就是。下一题。这是最常用的啊。呃,然后。呃,消息发送重试啊,有三种策略我们是可以选择的什么呢?同步发送失败策略,异步发送失败策略,然后消息刷盘,刷盘失败策略,也就是我们下边要详细说的这三种策略,诶,这是我们先从整体上啊对这个消息发送。从事机制。
08:01
呃,有所认识,有所了解。
我来说两句