00:00
好,我们同样把昨天的东西去做一个简单回顾,那首先呢,其实上午的时候我们是把最后收了个尾,对吧?啊,收了个尾就是自定义了一个think啊,自己呢,在里边写的那个事物啊,当然是调人家人调用人家自己写好的China里边的一个事物,然后我们去用一下它这个事物啊,大家能看到两边都有事物,一个铺一个T啊。之后呢,是我们所讲的那个一个监控,这个监控呢,大家一定要装起来,自己去玩一玩。自己去玩一玩,因为这个东西在面试的过程当中,他不会问你说你这个东西怎么装的,然后内部的运行原理,它怎么获取数据的,这个不会问,那问的问题呢,就是说你有没有用过,你用过这个东西干什么了,你一定要自己用起来啊,用起来之后,你在面试过程当中,你去说你用过的时候,至少你不需。要不然你比较虚,对你都没用起来,然后人家问你就没用过,你就在没人过程当中,那个状态不一样能听懂啊,一定要自己玩一玩,虽然它是一个工具啊,像很多工具呢,一定要自己呃装起来玩一玩,特别到面试之前,我的建议呢,是到面试之前,因为我们中间会讲很多的一个小框架。
01:08
这些小框架呢,就类似于如现在有很有一些同学呢,都可能都忘了。对吧,有一些操作可能都忘了,对吧,你像这种小框架学一天两天的,甚至到后面你学完失败了之后,你会把这个辅装啊,卡不卡这些东西。都忘了。啊,这也很正常,因为说学了不报,我觉得这这都不是人啊,学了汇报,但是到面试之前呢,不要光看文档,抽一点时间把那些小关家自己再大一点,自己再操作一下,因为这样印象更深一点啊,当然现在我说这话呢,也没啥用,因为我说我说的这话到面试前还是忘了,对吧?啊,还是一样的。行,那我们看一下,我们主要就把这个卡卡,首先呢,我们要了解一下这个卡呢,它是一个消息队列。
02:01
对吧?啊,它是一个消息队列,那我们来总回顾一下消息队列干什么用的,以及有什么好处。消息队列干什么用的?这样说起来,它的作用好像不好说,还不如说它的一个优点是不是对吧,大家一说你结偶的作用。对吧,暂存消息的一个作用啊,其实暂存消息的一个作用,它的好处就是。解,有学风这两个主要的对吧,啊主要的啊,由于我们卡不卡这个内容呢,又是分布式的,它可以动态的上下线,就该加一台机器,或者挂一下一台机器,这个也也还好啊也还好,所以呢,它可以应对什么。高峰期临时来的那种突发情况嘛,啊这样是可以的啊,这样可以的,我们可以去啊做它的一个缓冲啊,中间的一个缓冲啊防止呢,我们AB2个系统在进行通信的时候啊,由于速度不对等,就生产速度跟消费速度不对等,导致的,A这边有可能会崩掉了,那我们中间有个消息,中间面做一个暂存啊,大家都按照自己合适的速度来。
03:13
对吧,啊,这样就比较好一点啊,有没有好一点,因为我可以存很多的内容啊呃,之后呢,是我们所说的它应用场景以及它的一个优点啊优点,然后还有接下来是我们聊的模式,模式总的我们说的分为两种吧。一对一的点对点的对吧?啊点对点的也就一对一的这种模式,还有就是发布订阅这种模式对吧,订阅的这种模式好。那一对一的时候呢,他是你收到这个消息之后。消息就没了,给他处理掉了对吧?啊处理掉了,哎,这个很像China跟SIM之间的关系对不对。很像吧,China跟C我们说的C是不是绑定的China一个呀,然后15完成了,China要把数据清掉吧,啊要清掉就是这个啊,那这不一样的吗?消息收到之后是不是消息队列把消息进度啊。
04:05
对吧,啊不是说消费者刚把消息接收到,然后自己把它删了,那不有毛病嘛,是吧?啊是这意思,好,那发布订阅当中呢,他又有两种。一种呢,是你消费者主动拉取的一种方式,还有一种呢,是我消息队列做一个推的这种方式,对吧?啊推的这种方式,那主动拉取的方式有好处。对吧,就是说速度可以自己控制法啊,速度自己控制,但是呢,也有坏处,它就一直要维护一个常规循,对吧,要一直去不断的去询问他,不断的询问它,那有同学提到一个点,那我基于拉屎的这种模式,我这样行不行?呃,当有新的消息来了,由消息队列来通知订阅的人。然后你订阅的人呢,根据自己的速度去拉取消息。对吧,那这样好像看似是拉取这种模式当中,我也不用维护一个常形,其实它也有问题,它问题在于哪呢?你就是你作为一个消经列。
05:06
你要维护一个列表,内存当中维护一个什么样的列表?对所有订阅的人的列表对不对?要不然你消息来了,你通知谁呀?能听懂这个意思吗?就假如说有十个人要消费当前这个主题的数据,那如果说我们刚才说的那个点,大家应该听懂了,就是说我主动拉取的这种方式呢,要维护一个长轮群,对吧,但是我可以不维护团队群,我可以怎么做呢?让消息队列这边假如说有新消息来了,我通知到。你那个什么消费者。这种方式那是不是解决了我们常人型的问题?对吧,但是他还有另外的问题,另外的问题在于哪呢?第一个点就是我们所说的,那既然你作为消息列,你能通知消费者,前提是你得知道有哪些人订阅了当前这个主题,对不对?
06:03
这个没问题吧,那也就等于消消一个列表,是不是要多维护一个列表,而且你也不知道将来有多少人要维护一个很大的列表。第二个问题。甲,我们之前说过,消息队列呢它可以结偶,就AB系统呢可以不同时在线。也就是说我消费者此时我可以不企业挂掉的,那你告诉我你消息队列能通知到我挂掉的消费者吗?是不是通知不到啊,对吧,所以呢,它也有问题,但是卡夫卡呢,它选用的就是我们所说的拉取的这种模式,同时呢,是维护了一个。长春型,哎,不需要你卡不卡队列着来维护一个消费者的列量,能听懂这个意思啊,无论怎怎么模式呢,它都有它的一个优缺点。如果说某一个模式所有的比其他都好,那其他模式就不复存在了,就不会聊其他的模式了,对不对,对吧,那肯定是有优缺点,就看你使用场景,他觉得哪一种更合适,就这个意思啊,对吧?啊,因为不可能说你这个东西只有只有优点没有缺点,那其他东西是不是没有存在的必要了呀,对吧啊,所以呢,存在即合理,都有自己的一个可取之处啊,可取之处啊,那之后呢,是我们所聊的这个什么。
07:16
推推的这个呢,问题就在于。消费者,消费者,因为你是一个消息要发送给不同的消费者,但是不同的消费者每个人的消费能力。是不一样的对吧,啊,消费能力是不一样的,那这个时候如果说你直接推的话,那就有问题了。对吧,啊,那就有问题了,因为你无法保证你在这个消息队列,这你没办法说根据不同的消费者来决定推送的速度。这不行吧,对吧,在你那个接触公众号那种方式,是不是完全由人家推的,不是说你自己去,诶问一下他有没有新的内容,然后自己去拉去吧,不是的,是人家推的,那你想想看,他一推公众号的时候,只要大家的那个,呃。
08:02
网速啊,什么东西都在一块儿,是不是大家同时进入到一个消息,也就是说他推的速度是怎么样的,是一样的啊,一样的,所以他没办法根据你消费者的一个消费能力来决定这个消费速度啊,决定这个消费速度,但是它有一个好处就是。我不需要维护什么。消费者不需要维护那个常人询嘛啊,不断的去询问,不需要你被动接收就行了,因为主动推给你的,你只要等着接收就完了,对吧?啊是这意思,所以呢,你要区分开这里边一点啊,这里边的点啊,之后呢,是我们所说的架构啊,所说的架构,架构呢,后面我们的安装,那结合着架构来说一下我们的那个后面的命令行这个操作啊,后面命令行的操作,我们再来把这个过一下,好过一下,因为早上有同学问的问题呢,觉得还是这个,我感觉啊,还是这个架构这块呢,呃,有的地方。还是没有特别的理解啊,当然也很正常,因为里边的东西涉及的比较多,我们后面呢,今天上午呢,专门呢,就讲这块很多的一个理论知识点啊,在扩展的去讲好。
09:02
首先呢,我们要把这个东西分为三块内容,对吧,第一块生产者,第二块暂存数据的地方,也就是我们的卡卡集群叫broke对吧?啊,它有个D,第三块呢,就是我们的一个消费者,就是我们消费者,好,那从大的面上来说,后面我们画了一个zoo cable,对吧?Zoo cable是在里边提供什么作用的?我们昨天所讲的第一部分是不是帮助卡夫卡组建集权,也就是说很多的一个卡不卡信息都要存在退保。对吧,啊有我们可以把这个东西呢,叫做原数据,就是卡卡原数据对吧?啊原数据那这个呢,其中就包括我们所说的哪个东西啊。Topic的信息对吧?啊,Topic的信息,你这个topic有几个,每一个叫什么名字,Topic有几个分区对吧?有几个副本,每一个分区拎的是谁,然后他有副本在哪台机器上,还有最后我们还提到一个点,那个IR说的,当时说的不要大家掌握的,今天我们就能看到那个is SR是什么东西了,是不是这些东西都在CK当中,我们连断4OK吧?啊,这个是属于我们所说的卡不卡这个什么。
10:13
集群信息,所以你只要操作这些信息,无论是增删查或者后面的改也能改啊,添加分区可以,但是减少分就不可以,后面我们再聊那。其实改的操作比较少做啊,在生产环境当中也一样,分身查这些操作呢,是不是操作我们刚才所说的keep里面内容。啊,属于操作它的原数据信息,那这一块呢,我们写命令行的时候连的。就是谁啊kable对吧?啊连的就是你想一下我们今天所讲的卡夫卡杠斯点SH这个命令。连的都是这样。啊,这是一套啊,你看其他的不行,然后接下来还有一个内容,就是我们所说的这个消费者,他是不是跟K也有关系呢。对吧,他在组K8当中存什么内容。
11:04
还记得吗?便宜量对吧?啊,存的是便宜量,存在便宜量,也就是说我当前这个消费者,我要每次消费公司数据,我不能再消费了吧,对于我同一个消费者来说,你不能说第一次消费一到十,第二次消费一到20,第三次一到30,这样不合适吧,对吧?啊,应该是有一个便宜量,那它在ZK当中呢,存的是这个便宜量,但是我们还聊了一个问题,就是0.9版本之前它是存在这K了对吧,到现在我们看到的内容来说,卡夫卡集群了,对吧?啊卡法集群了不一样了,是不是你连租K的时候他给你发送啊。对吧,啊,不是报错就包一个警告是吧?啊,一个警告,他说这个被标记为过时了,在不久的将来可能会被移除,对吧?啊,可能会被移除,说让我们建议用那个phototo serve来代替这个K宝,所以你在写消费者命令行的时候。
12:01
你是不是有两种连法呀,一个就是我们所说的cable,一个就是那这块对吧,命令行前面是命令,后面连的是谁,那生产者跟消费者这个东西是不是你要指定主题啊。对吧,啊,你可以指定主题是这个意思啊,那无非命令行就是这些东西。对吧,命令卡你把它分为块来记哦,但是呢,关于生产者,生产者不依赖素,所以呢,它不需要连什么。它连的东西叫brook list对吧,所以呢,你分为三块来记,那命令行里面呢,它连的是brook list,它连的叫。ZK它连的叫to so和什么ZK2块对吧,那连的东西搞定了,那接下来是不是三者都要一个主题这个内容。你发消息,消费消息是不是都要主题,那你对于主题的增删查。
13:01
我们搜查是假如说描述一个详细信息,是不是也要主题对吧,或者说你全量的去查就是什么。List吧,啊分为两种长,一个呢是带topic,一个是list好,那增深。Create和delete,那delete就跟一个topic就行了,增加的时候是不是我们要关注当前这个主题的分区和副本数啊,所以你再把这两个参数给它加上。对吧,啊,命令堂其实就其实就那些东西啊,不难记啊不难记,就是大家呢,就可能在死记硬背啊,觉得这个东西呢,东西太多了啊,东西太多了,所以你把它分类的去记啊,分类的去写以后也一样要归纳,因为这样就。有变,我们记忆,要不然也不容易忘,你死记硬背的东西呢,容易忘啊,对吧,好,那之后呢,是我们所说的这个深圳证,我们再看一下。第一个这里边儿有一个。卡法集群叫broke对吧,是一台服务器,就是我们看到的起到那个卡普卡进程啊,起到卡法进程,好,那这个东西呢,它里边我们所说的是存数据的地方,暂存数据的地方,它真正的存数据存在了我们所说的。
14:16
Topic一个里边吧,啊,分为不同的主题,因为我们说了,如果你不分主题,那你这个消息非常的混乱。你都存在一块儿,那最后消费者他也不知道他消费什么东西嘛,啊所以呢,他有主题的一个概念啊,你不同的消息呢,发到不同的主题啊,做消息的一个分类,相当于做这个事,好,那这个是主题,那对于这个主题里边呢,我们创建的时候也看到了有分区有。副本对吧,分区有什么作用,现在想一想。第一个对于卡卡机群来说,是不是可以做到对于某一个主题的负载均衡啊,啊存储方面的负载均衡,还有呢。提对提高读写的必度,是不是因为你分区,每一个分区呢,有一个leader啊,他都找那个leader吧,找也就是说假如说就算没有leader之分,没有leader之分,你不同的分区。
15:09
假如说不在一块,那这个时候生产者有1234条消息,诶一三发到这,二四发到这儿。对吧,好提高负载,那第二方面。消费者,如果你一个消费者组的话,我这样消费。是不是提高他的一个消费,这个时候的一个并发呀,啊就等于提高了读写的一个并发度,相当于啊是做这个事的啊做这个事的好,那这个是我们所说的一个分区,那接下来还有一个什么。副本吧,啊,副本的作用就简单。副本就数据冗余对吧,啊,冗余一份,冗余一份呢,就做一个备灾。溶塞对吧?啊做这个事儿,假如说你挂掉了,因为你如果说只有一个副本的话,你挂掉就没了是不是啊,那这样你挂掉了之后,我还能用我把另外一个起为leader的就行了,但是呢,这里面还有很多的一些细节。
16:02
啊,就关于副本这一块,其实它这个作用很简单,就是为了干什么。备份的吧,但是它里边还要保证数据的一致性问题。你这个怎么备份对吧?啊,这是个问题,我们后面要聊的,其实这个其实副本里边的一个知识点比分区要复杂。分区就简单的将数据分开,就跟类似于我们那个have一样,你把数据分开,这个读的时候也分开读吧,啊分开读就做这个事,分区呢它比较简单,但是副本呢,作用简单,就简单的做那个什么。备份的一个作用,但是呢,它里面还有很多的一个知识点啊,还有很多知识点在面试的时候呢,有可能会被问到啊,我们今天要去说的啊,那这个呢是我们一个点啊,之后呢,就是数据往这里边发啊,数据往这里边发一个点啊,一步一步发,那之后呢就可以去消费,消费者这边还有一个概念,就是我们所说的。消费者组的问题啊,消费者,其实消费者这块呢,重要的就是一个消费者的一个问题。
17:00
啊,因为它涉及到消费者组织里边的一个分区分配的一个策略问题。假如说这个消费者组,我叫爱的硅谷组啊,这个组名呢,也随便你随便取的啊,随便取的,这里面呢,有A和B2个消费者。我启动的过程当中,这AB肯定它这个组名都叫才能是一个组啊好,那接下来你俩都订阅一个主题叫topic a啊,假如说叫ta topic a,好你俩订阅的时候呢,都订阅的它。那接下来问题来了,那你消费者A是拿零号分区,还是消费者B拿零号分区,也就是说他消费是这个样子的。这是一种吧,还有一种是不是这样子的。对吧,啊是这个样子的,甚至还有你现在是正好两个分区。对吧,两个消费者,假如说我当前这个topic,我有四个很清楚。对吧,一人两个,大家可能想着平均分对吧,那一人两个OK,那到底是零一给你还是零三给你呢?是轮询还是画块呢?
18:07
是不是都有可能啊,对吧?啊,这个消费者组里边,我们还有后面还有一个知识点,就是消费者组里边的分区的分配策略问题。他一定有分配策略,他不是说随便来了乱消费。不是这样的啊,不是乱消费的,它有分区分配的策略啊,其实那两种策略都有,我刚才画的那两种,一个是一三画在一块,一个是一二画在一块儿,对吧?啊,两种都有啊,两种都有后面我们再聊,但是呢,两种的应用的前提条件它是不一样的。啊,它是不一样的啊,那这个呢,其实我们消费者当中呢,我们最主要关心的是这个。消费者组的问题,其实生产者还有一个问题。对吧,因为你这涉及到多个分区,那我消息来了,我有六条消息。我怎么给这两个分区或者四个分区,我怎么给这个数据,是不是生产者这边也有一个分区的一个策略问题啊,对吧,就类似于我们所讲的,呃。
19:08
那个在。MR当中按照什么默认的哈希值?记得吧,那就是它的一个分区策略问题了啊,其实这里边也有啊,这里边也有啊,我们都要去详细去聊的,所以说呢,这张图大家现在啊,就是截止到昨天为止吧,呃,有很多东西呢,很多是不理解的,这很正常,因为没有展开的去说,呃,不可能说过通过那个就讲一下简单的架构,把里面东西所有的全部聊清楚啊,因为它里边的东西非常的多啊,非常多,卡不卡这块我们之前说过卡把这个整个框架呢,在大数据这块还是Java这块都非常重要,在面试过程当中问的也多,所以对于这个原理我们要多介绍一些啊,我们要多讲,像呢,他其实几乎很少去问原理上的东西啊,可能就问一问事物啊,还有这些东西啊,你用的是什么,Source China symbol所以呢,你看那边原理我们讲的会少一点啊,少1.ok,这个是我们所说的整个一个啊,架构方面的,这是最后的一个kable对吧,109版本之前以及。
20:07
哎,八分之后,哎,它就不存在,你看这个线啊。现在这个消费者是不是连着苏K吧,对吧,到0.9版本之后,他就连着谁了呀。卡帕奇群,它是个绿色的线对吧,啊原亮色的线。老师,那个偏移量是相对于整个。开始对,马上就要聊这个问题了,好吧,啊,接下来马上就要聊这个问题,我说了这里的细节我会跟大家聊清楚的啊,肯定会聊的。
我来说两句