00:00
对吧,啊好,那我们看一下这个整个的架构啊,那深入理解啊,深入理解就是里边的一些细节的知识点啊,就是我们之前提到的一些疑问点,对吧?啊大家呢,就是平时想的时候也可以,其实我我还挺愿意,就是你们之前就是哎,还没讲这个点的时候就问一问,证明大家在思考。思考,因为你思考之后,你听课就带着问题听课,这样效率能高一点,如果说你听课的时候什么问题都没有,就光被动的去接收,这样有可很可能就左耳朵进右耳朵说,甚至根本就没进去,对吧?啊这都有可能的,所以说呢,在这问题听挺好的啊,挺好OK,那接下来呢,我们看一下第一个就卡不卡的一个工作流程和这个文件存储机制,那这个讲的什么事呢?诶我我得这样啊。好,刚才呢,我是把这个集群给大家写了一下啊,给他写了一下,那接下来我们聊这个这些工作流程呢,就是它具体的啊,这个数据流吧,啊大的方面来一个数据流,我们快速的看一下啊,我们快速看一下来。第一个首先是这样的,有伸展者有什么。
01:04
消费者组,或者说你把它看作一个消费者也可以对吧?啊,就消费消息的啊,消费消费的,那中间就是我们所说的什么卡卡集群啊,有三台机器,BROKE0 broke1broke2啊这个是broke ID对吧?啊那接下来那上面这个时候你要发消息它也能发,对吧?因为有同学其实尝试了,当我们伸展者往某一个不存在的主题里边发数据的时候。也能发对吧,他自己给你创建一个主题。系统创建,它会创建一个分区,一个副本的一个主题,那这一个分区一个副本哪来的呢?是缩点里边定义的。是so点里边定义的啊,你在那里边可以改点,你会找到number.part啊,还有那个副本数分居数,你改了之后,它就系统按照你那个参数去给你创建主题能听懂啊,它有默认值啊,默认值呢,大家我们因为刚才之前配置的时候又改了,所以呢,你会看到你describe一下那个,它系统创建的那个是一个分一个副本啊这意思啊好,那假如说这个我们一般的都会先创建嘛啊,一般的都会先创建了啊,很少说去直接去去去往一个不存在的里面去发啊,先创建,那创建了一个topic a。
02:19
好比A呢,有三个分区啊,有三个分区,同样的我们给它。两个副本,注意副本数为二,不是说立的一个FOLLOW2个,而是立的加法总数能听懂啊,是副本数Li的也算其中的一个副本啊,只不过说它这个副本呢,分了利跟方数而已。能听懂啊,副本呢为二,也就是说它还有一个发网啊,有一个发网啊,那接下来而且呢,我们所知道的其中有一个点就是这个,它接近零的坡度啊,一定不可能在这个。对吧,他可以在这一台,可以在这一台,这个都可以,但是一定不会什么在同一台机器,因为没有任何意义,对吧?啊没有任何意义,是这意思啊,那接下来是生产者是不是往这三个区里边去发送消息啊,对吧?啊去发送消息,那发送消息的过程来看一下,哎,它可以批量发送,当然也可以一个一个的发送,这个也可以啊,有个批次的啊批次的,当然你一个批次里边只有一条数据,是不是也可以啊,啊,这个也是可以的,OK,那你看这里边呢。
03:31
这个东西012345,这个东西我们把它就叫做。叫偏移量啊,这个东西叫偏移量啊,就是这个点012345,而且图量化的。总共你看生产者应该发送了,这是六条消息,对吧,这四条总共发了15条消息。对吧,啊,总共发送15条消息,那15条消息它的一个off,并不是说这边是012,然后345,不是这样有一个全渠道天量,而是每一个分区里面。
04:05
维护了一个独立的从头开始的一个定量。啊,从头开始变的,这样来来来定义的啊,这样来定义的,OK,那接下来我们的方要去干什么事了。你既然做备份的,那而且我们之前说了,生产者消费者都是跟leader打交道的,那你作为for网是不是应该主动的去找到leader,把这个数据给他干嘛,同步过来啊,备份过来啊,那这个时候你假如说你挂掉了,对吧,你挂掉了我才能再给你工作吧。那说你是到五条我没同步,我在店里工作的时候会怎么样,数据丢失吧,啊数据丢失啊,到时候我们也会说就算你同步了啊,他有可能某种特定情况下也会丢数据啊,还是会丢数据啊,那就是生产者消费者同样的还是找这个什么。Lead的去消费吧,那中间的这个五或者这一套,我们把它叫做赛,那同样的这个我们之前说了消费者。
05:05
要保存的那个偏移量就是这样。就是他啊,就是存数据的时候给每个人呢,一个给每一个这个东西呢,到时候我们写API的时候能看到,因为我现在只是口头说他00123458,因为我没有看到啊,后面呢,我们写代码的时候是能看到这个内容的。啊,因为我们可以做个什么事呢,发送完数据之后,让他给我们把这个平移量给他干什么。发回来发回来到时候你能看到诶,两个分区同步增长的。零号门就有一个22,一号门就同样的有一个22,那既然出现两个22,是不是能说明这个问题啊,对吧?如果说按照我们所说的全局有一个唯一的平量的话,那这个时候不可能出现同一个主题里边两个分区会出现两个22法,对吧?啊,到时候这个点呢,我们能看到,我们能看到,而且呢,这张图是官方直接给的,但是呢,官方肯定不是给了一个什么。
06:06
肯定不会给我们PPT吧,啊啊,他就一个图啊,它那个图呢,也还要OK板,我们看一下这个documentation,但是这个文档的,你看现在这个卡法出了2.3了,对吧。看着好像我们用的0.11很low是吧,你看0.1的位置在这。其实没经过几个版本吧,1.01.1就直接干到什么2.0了,对吧?啊直接干到2.0了,是这意思啊,他更新的很快,现在在生长环境当中,呃,目前好像没有发现用这个。太新了啊,太新了啊,很少再用的,这个还是比较多的啊,点开这里面呢,就有往下翻啊,这里面就有个图。嗯,其实这个其实就是这样。某一个主题123个分区吧,这个是。往里写的其实就是什么?伸展者吧,往里写数据的不是伸展者吗?对吧,你看这块它是。
07:04
零吧,啊,零是这意思啊,那你每个人呢,都维护这一个什么独立的啊,维护这个独立的这个点啊,后面呢,我们写代码的时候其实也能看到啊,他是这样的方式来存的啊,就是刚才呃,刚才下课那个同学啊,就中间那个同学问的问题,到底是全局的还是每一个分区独立的,对吧,我们说了这个地方呢,说明对于卡不卡这个消息队列来说,它并不能保证消息的什么。全局有序性,它只能保证区内有序啊,它只能保证区内有序,因为你有序指的什么意思啊,生产顺序和消费顺序一致,这个叫有序吧。对吧,这个叫有趣啊,伸展速度,但是呢,全局的其实不是的吧,我伸展123,哎123都在这个里边,123,那将来拉取数据的时候,我不知道先读的是零号分局还是一号分区,它不是说一定先按零号分局来,不一定这个不一定啊,啊那这个我们所说的就保证了虚内有序,并不能保证全举有序啊,并不能保证全体有序,这个大家要关注一下这个点啊,关注一下这个点,当然这个里边呢,还有EZK的它的一个作用。
08:13
作用好,那接下来我们看一下这几个点啊。第一个嗯,卡卡当中呢,消息是以。主题进行分类的,这个大家应该没有问题了,对吧,它的作用主要的就是干什么。分类消息的吧,啊,主要的作用就分类消息的主题嘛,啊不同的主题,那生产者生产消息,消费者消费消息都是面向主题的。啊,都是那样说,我们消费者跟生产者都要连接一个主题啊,对吧,都要指定主题是谁,你要往哪个主题发,你要从哪个主题去拉取消息啊这个意思,那接下来他提到一个这个题,他说topic是一个逻辑上的概念,而partition是一个物理上的概念。这句话能不能等什么意思?就是你能从物理条件上去找到topic吗?找不到,因为我们发现那个文件夹,它是以topic加分区来命名的。
09:11
对吧,没有说,诶主题叫topic a a是一个文件夹,下面是012,不是这样命名的吧,所以topic只是一个逻辑上的概念,它并不是说真正存在的,真正存在的是我们所说的什么分区啊,是主题加分区,所以呢,这个分区是一个物理上的概念。啊,也就是说物理上的概念,就是这个东西能看到能找到啊,能找到这个意思啊,然后呢,我们接下来看一下啊,刚才呢,是我们聊的一个数据流,接下来呢,我们来看一下它的一个存储特点,然后我们把这个截一下吧。
我来说两句