00:00
好,我们接下来看一下这个就是分配,这个分区分配策略结束之后,应该就正常的去消费吧,那正常的消费过程当中。正常消费过程当中,它是为了能够如果挂掉了之后是不是要接着消费,他要保存一个off吧,我们说了他在ZK当中也要保存在。卡巴本地是不是分高低版本的不同嘛,对吧?啊,那我们接下来就要看一看这两个地方,它保留的这个什么。Off啊,保留的这个off是什么东西啊,那还有一个问题就在于它这个off。保存在ZK里边,还有保存在卡不卡本地,它是按照什么东西来确定这个。我们要想一下这个问题。就是我消费者正常的去保存,对吧,我们一直在说的一个点,就是你新加一个消费者进来了,假如说我现在是一个消费者A在消费,我新加一个B进来了,假如说A呢,之前是消费的三个分区。
01:08
A消费的三个分区,零二都消费到十了。好,此时呢,这边也不发数据了。也不发数据了,当我被进来的时候,是不是按照重新分配,有可能它分配了一个呀,对吧,至少有一个吧,可能它分配到两个,因为重新分配呢,假如说这样把它给它了。把他给他去消费,那你告诉我他是从时接着消费还是从头消费?他是从头消费还是接着消费啊,接着消费啊,因为他是同一个组里边,同一个组里面他要接着消费,如果从头消费这个问题。我想动态的扩展它的一个消费能力的时候,一扩展重复数据了。对吧,啊,一扩展重复数据了,所以它是接着消费的,那我们要想既然你能接着消费,所以你这个off set这个东西应该是怎么存的,那换句话说,什么东西唯一决定一个office。
02:10
首先要主题跟分区,这两个东西一定要有。对吧,想问的点就是大家觉得是按照消费者还是按照消费者组,对他是按照消费者组,也就是说它有三个东西,唯一确定高赛的组。加主题加什么?分区,因为这个里边不是说全局的一个吧,三个大家都有重复的,你是不是每个人都要保留一份,既然你保留分区里边的分区是属于某一个主题的,这两个一定要有了,哎,它是按照组来保存的,那这个也是被我们重新定义那个什么分区分配规则那种策略,一个前提条件,如果你是按消费者保存的,那你说你这个消费者挂掉,其他消费者能拿到这个数据吗?
03:03
拿不到你没办法接着消费吧。对吧,想一下这个问题啊,它是按组保存的,那你B挂掉的,因为你由于是按组保存的,我A的组是不是跟你一样的,我是不是拿着组名去取这个呀,对吧,我可以保证我能接着消费啊,能接着消费这个事情啊,这个意思,所以呢,它里面呢是按照。Group加上再加上什么,他这一套来决定什么,他唯一一个。那我们接下来就看一下两个呢,我们都去看一下,一个在zoo keep里边,一个在哪啊。本地啊,这两个呢,我们都有办法带大家去看一下,首先看一下K里边,那我们先起一个这个什么生产者和消费者啊,生产者消费者cons。然后是。连的。深产者连的是什么叫吧啊一定记住啊,不刚累好多吧号九零对吧,这个是卡不卡的一个端口连接的好,那接下来刚告。
04:18
To。刚刚topic,那这个topic呢,这样吧,为了测试看的更清楚一点,我创建一个什么。新的。创建一个新的,让他没有数据,因为这个里面是有数据啊,不想用那个了,创建刚刚可的吧,刚刚好一个。他这个来一个big这个肯定没有对吧,啊,昨天一二三都创建过了吧,啊,他连的是吧,对吧。好的吧,1028号2181好,接下来是part分区数和副本数吧,分区数和副本数。
05:01
两个分区对吧。两个副本吧,够了,好走。嗯,哪个写错了吗?Replication造factor。Re。多写了一个什么?好,创建成功了,那这个是一个空的对吧,啊空的。B啊,正好我们看一下它这个offet是从零还是从一开始的,对吧?啊,里面保留的是什么东西啊,好,那卡不卡,嗯,还有刚才我们所说的concert。Produce,然后杠杠不杠对吧,好。102冒号9092,然后刚刚这个我们要用的是这个big data啊,这个够了吧,其他东西就不要。
06:00
然后呢,我们起一个什么。消费者的卡不卡?并考不叫看对吧,他连先连,因为我要在两个地方去看,对吧,我先看CK,那你要想看CK的话,是不是要连CK啊,对吧啊所以呢连一下。哈宝八号2181,刚刚个吧个,然后叫这个这走。这个就放在这儿啊,放在这,然后接下来我们去干什么事呢。输一个哈,让他消费一个,他们两个分区吗?哎,有一个分区会有变化,有一个分区应该没变化吧,啊这个意思好,那我们进来这个消费到了没问题吧,来CD到OBD model里边,我们应该BZK点。
07:00
LS一下。啊,那这里面我们之前看到的说,除了这个。其他的都是没有。都是改不改的,那我们要关注一下几个点,第一个controller,后面我们要聊的。卡夫卡里边也有那个老大啊,跟负责跟这个什么ZK啊进行交互的,但是他的老大呢,并不是我们指定的啊,他是争抢资源的,就是说谁先抢到这个资源,谁叫老大。啊很简单,就是先启动啊,正常就先启动的,那这里边正常情况下应该是谁啊。就按照我那个顺序。啊,三二了对吧,我们看一下怎么下。Log host本地不是ID,看log house怎么用啊,这个是2181对吧,看这个。零,我这个地方零是不是102啊,它是争抢资源的,因为我们并没有指定这个CTRL的是谁,对吧?啊,它这个选举策略比较简单,就这个地方呢,有个节点,然后谁先注册这个ZK里面不是有节点,这些东西被称为节点吗?叫node,对吧?节点谁先注册谁就是CTRL,而且呢,CTRL呢跟其他的小弟啊,他里边信息是共享的,大家都一样,只不过说有专门派一个人跟CK打交道来写这些数据,就做这个事的能听懂啊,所以呢,我们平时关心他比较少一点啊,关心他比较少一点,好,接下来我们要关心的他这个东西。
08:39
叫。那你想想看,这里边什么东西啊?斯不就卡不卡群吗?对吧,这里面有。爱丽丝,对吧?那继续往下走,艾丽,猜一下这里边什么东西,点ID012吧,啊,那我们卡夫卡并没有指定一个leader是谁,他自己能组成集群就是靠的这个。
09:14
你只要在这个里边注册的,我就认为是一个开发集群,能听懂。啊,他就依赖于ZK来帮他做这个事,帮他做这个事,当然刚才我们看到还有那个什么。Topics对吧,啊,这两个主题啊,能看到,在这块两个主题能看到啊好,那继续我们还关心的一个东西在。这里。康还好,就是他这个配置信息,我倒不是倒不是我们关心啊,因为这个东西呢,是卡卡要关心的啊,卡普也关心的,我们要关心到这个,诶我直接这样吧,L每次往上翻比较麻烦啊在这。啊,他跨行了。所以比较不好看一点。这个。
10:02
这。叫什么消费者啊,也就是说消费者是不是要在这里面存东西啊,对吧?啊存东西来看一下他要存什么。LS进到这个里面。叫康8502。那你猜一下这个是什么东西?肯定是跟我当前这个窗口有关系吧。是不是康吗?对吧,那你猜一下这个是什么东西。这个就是消费者组。因为我们并没有指定消费者组,它是随机给他一个数字分配的,那这样我们再来一个。
11:00
CD Mo。卡不卡?然后呢,我再启动一个。在这个地方吧。把它复制一下。然后在这里边。多了一个麒麟八零。啊,这个东西呢,告诉你它是消费者组,当我们没有指定的时候,在铺制台没有指定嘛,没有指定的时候呢,他就随机给我们分配一个。啊,后面给这给这给这五个数字啊,给五个数字,你每加一个呢,就等于加了一个消费者组,好我们重点关心一下这个消费者组里边有什么东西,对吧?啊消费者组LS。那有同学可能怀疑,那你说这个是消费者组,他就是消费者组吗?那我说是消费者ID行不行?也可以对吧,你说是消费者ID,但是等会我们有消费者组的案例可以能看到,就告诉你这个东西就是消费者组,因为我们可以来配一下,配一下这后期校背跟这个拼齐的那个地方配了一个组名,那就是什么。
12:08
这个消费者组了啊,消费者组了OK啊,等会我们呢,有办法证明这个事情,因为现在来看的话,反正你这是我知道肯定跟刚才那个东西有关,而且呢,我又起了一个,他这多了一个,那肯定有关系吧,啊是那个临时创建的,对吧?啊临时创建的那后面随机分配一个数字,那你说是消费者组,那我说是消费者ID也可以啊,对吧?啊,等会我们再聊这个事儿,继续往下走,你看这里边有什么东西。什么of我们关心的?存的什么赛继续往下走,我们这边说了,它是按照组和。加分区来决定一个内容吧,走。这是什么了?逃吧,这个没问题吧,他是逃好继续。
13:04
零一,那你说主题底下零一是什么东西啊,分区吧,好分区,那我们还能不能继续往下走呢?走不了了,只能去干什么事了。Get值了吧,号区看一下。走平方分区阿,已经是几了?一了,那一号分区呢。还是零,因为呢,我们只消费的一条数据吧,来我再发一条,按照我们之前所讲的策略,它应该是轮询,那此时应该是一,那个地方变成一对不对。轮询嘛,对吧,因为我们没有指定K,也没有指定分区控制台,没办法指定嘛,啊KV指定不了,所以呢,它是轮询的一个方式,首先两个都说到这个呢,不用管它里面也到也到那个内容,我们重点是不是再get了一下它呀。来看一下还是零吗?稍等一会儿啊,稍等一会儿,因为他这个东西这是客户端啊,有点慢,第一呢,就是你消费到数据之后。
14:03
默认配置一秒钟之后,他才会去提交,再。就默认情况下,他一秒钟提交这个off,而且呢,提交完了之后,他先提交过来之后存到ZKZK服务端改了,但是客户端,因为我们进的是客户端嘛,客户端现在还不一定能拿到,我们再等一会儿。这样我们很简单就干什么,我退出来重新进一下,然后重新刷新一下,OK吧,啊,重新刷新一下,还是来盖的什么。这个内容一吧,一是不是刚才一直看到零。一了吧,啊,因为客户端你要刷新一下,客户端有时候延迟比较高,服务端早就改过了一秒钟之后,他就已经改了,默认的它是一秒钟就把这个就是这个地方消费到数据之后,过一秒钟把这个offet提交一下能听懂啊做这个事的,但是由于我们做的是客户端,那这个零应该还是什么。一吧,因为没有数据啊,没有数据,哎,那当我们这个地方再来一个什么hello。
15:04
那应该它变成二吧啊,同样的,我们为了快一点,我们直接退出来对吧啊,这样快一点啊。来看一下,应该现在有总有一秒钟了,是不是。嗯,还没有。这个东西客户端每次刷新这么慢吗?咱们稍等一会儿啊。就客户端的刷新比较慢啊,比较慢。盖的零,哎,他第二次轮询的时候能到一了吗?没有啊,没有三个分区,是两个分区,零吧零二改过来了吧,改还是有点慢,因为客户端通讯还慢,其实他后台早就改过来了,它默认是一秒钟去操作一次的,一秒钟操作一次的,这个地方呢,诶看到二了吧,啊轮许,因为它轮许它默认的策略是不是我们之前上午所讲的雷许的一个策略,对吧?那这里边重点呢,我们要关注的是这个点,就是说它呢有一个组来保存这个off对吧,是按照主题加。
16:05
分区啊,其实也就是由三个东西左。主题和分区来保存的。啊,主题分区来保存的,这个是我们所说的保存在ZK当中,它是这样保存的,那既然保存在ZK里边,它这样保存的,那保存在本地呢。嗯嗯。那保存在本地呢?它应该是怎么样保存?他肯定也是一样的策略吧,按照一个组一个主题一个分区来唯一确定一个什么好了,好,那我们接下来就来看一下这个点啊来。这个是刚才我们所说的这个事,然后这块呢,是网上下了一个图,这块备注了一下,你看这他说。使用的是0.10这个版本说在look k当中并没有看到灰色框这里面的东西。
17:03
因为他用的是一零版本,一零版本一直,如果他用的一直都是连接的是goodto so。ZK当中就没有,ZK当中就没有这个内容能听懂,就没有这个消费者组了啊,因为你不把保存在哪。你不保存在ZK里面,ZK里面就没了啊,ZK里边就没了,是这个意思啊,所以呢,它这个做了一个标识就没有啊,是因为呢,默认的这个off保存呢,已经保存到哪呢?本地叫下划线,下划线cons这个里边,那接下来我们要看一下它这个数据。啊,看一下他这个数据,那这个数据呢,它是一个off。里面保存的是奥赛的对吧。但是它本身是不是一个主题?是一个主题吧,但是它这个主题的特殊是系统的主题对吧,所以呢,我们采用一点特殊的办法,也能使用控制台,消费者给他这里边数据读出来,那既然你是主题,那是不是我们消费者也能消费数据啊。
18:05
对吧,啊,既然是主题嘛,我能消费数据,但是呢,他这个主题不是像我们自己建的主题那样简单,直接说看到杠杠杠topic就OK了,他比较复杂,他要改一些配置文件第一个。这个是干什么?叫除外。啊,除掉这个特什么。内部的对吧,除掉内部的回force就不除,不除就是消费者正常的cons,什么能消费的啊,就做这个事一定要改一下这个内容,这个人要不改你就消费放啊,因为它是系统的主题,这个主题比较特殊,正常的他也不希望你去天天拿这里边数据啊,那我们因为要看你的东西,因为你直接看的话,我们说它序列化的,你直接看的能看得懂吗。看不懂,还有第二个问题,我当前假如说一个组,他随机分配的什么80880对吧,这个内容,那你告诉我他这个存在哪个分区,你知道吗。
19:06
50个分区,你知道哪个分区里边吗?你不知道吧,对吧,第二点你就算知道了,你去看的那个点log你能看得懂吗。我们之间什么爱的硅谷哈都看不懂对吧?啊,那所以呢,你就不要想了,你就消费者正常的给他消费出来啊消费出来所以呢,我们要改一下这个配置文件。给谁呢?给消费者配置文件。给他。该consumer vim一下这个什么。Consumer啊,Consumer problems,走,呃,这个里面呢,我们直接干什么,加一行就行了。把这个加进来,诶,我怎么把他加进来了,应该加谁呀。把这个属性。把这个属性给他抓。就是这个属性呢,鼠标有问题啊。想这个属性就是让我们可以用自己的一个普通的消费者来消费系统的主题啊,消费系统的保存退出,好,那这个cons这个东西就搞定了,那接下来还不如说你想的说这个时候就直接去消费就行了,他还要去格式化,就是说它里面保存数据呢,不一样,这个分0.11版本之前和零点。
20:18
一版本之后啊,这块说了含,所以我们应该用哪个下面这个,因为它里边这个内容用的不一样,这上面呢,现在已经没了,这里边已经没了,已经没有这个类了,他会告诉你这个类找不到啊,这个找不到,那正常的情况下是这样。就这个了吧,因为你现在要消费他嘛,前面还是考这个没问题吧,啊好,然后连的是。连动cable,然后form是格式化一个内容,后面呢指定一下,注意这个是我们一定要加的。指定一下一个康,如果不指定,你刚才改的那个东西白改了。白改了,还采还采用了默认值能听懂啊,采用的默认值它自己不会去读这个内容,就类似于我们启动的时候,是不是跟一个con搜索点对吧?啊是这个意思,好最后呢,从头开始。
21:10
啊,从头开始读好这一块要解释一下,呃,为什么我要采用这个K宝。啊是这样的,来我们分析一下整个流程啊。现在假如说我要启动一个消费者A去消费T1这个主题。对吧,我连的是我so。我连的是它,那接下来它这个A是不是会把数据。放到下划线,下划线那个什么consumer ofet那个里边这个没问题吧,好,那既然你放在这个里边,你是不是相当于这个的一个什么。这个主题的一个。生产者。
22:01
对,有人这块就晕了,哎,明明说的是一个消费者,A怎么到另外变成生产者,他对于T1来说是消费者,但是对于下关线相关线offet来说,他是生产者。对吧,它要往里面保存出去对吧?啊不要晕啊不要晕好那由于这种情况的出现,所以呢,这块测试你尽量的用u keep跑,防止一个问题出身啊,因为你当前这个控制台消费者,你是不是准备消费的是下划线下划线customer。对吧,如果你连的是杠杠,So,那又充当了他这个什么生产者,自己生产出去自己消费,这个感觉感觉怪怪的,对吧,所以呢,这块我们反正可以连租给宝宝们联系下什么。开可以吧,啊,这个东西要注意下,那我们把它干什么拿过来啊,拿过来把这个地方呢。呃,这样我们拿之前呢,这个是一个生产者,对吧,我们要提供什么。
23:02
消费者吧,啊,消费者这个时候就不能连那个什么黑的连的是。的对吧,Rapp的杠solo对吧。然后是哈多跑028号9092对吧,确定。好,这个已经起来了,起来之后呢,我们正常的还去打印一个什么爱硅谷,让他这个流先起来吧。是不是能消费到没问题吧,那接下来在这我们就开启消费系统的这个内容,而且从头开始消费,OK吧,走。好,这是就是里边的数据。来。你记下时大概一秒钟这个更新一次。你大概记下时。你大概几小时?差不多吧,这一秒钟啊。三秒吗?呃,或者我们看这是一秒吧,大概不是一秒吗?能改能改啊,提交的速度能改,那我们看一下,那首先这一块我们看到。
24:13
是不是一直在提交啊。一直在这样啊,这个因为拿到空数据了,拿到空数据之后,它有一个本身有个延迟,所以它比那个一秒要高一点啊,要高一点,因为此时这个地方是不是没有变啊。来看一下,我们看一下这里面什么东西啊,我先CTRLC干掉一下可以吧啊CTRC干掉一下来,因为让它静态的不让它动,它动呢是因为当前。当前有一个消费者在一直往里写东西。这个在空转对吧,空转他拿到这个数据是不是跟上一次一样啊,还是二说没有数据返回一个空值嘛,空值他提交是不是应该跟上一次完全一样啊,对吧?所以呢,就是空转就是我们说的一个长文徐就这个地方也能体现他一直跟这个地方交互,那我们要关心一下它这里面存的东西。
25:03
这是一组,我们找一个单独只有一组的。这个我们看这个,因为正好你前面两个空格,这样好看一点,首先你看一下这个东西,我们之前说的它叫什么。组对吧,哎组那这个呢,他这个呢,零一分区吧,它是不是同样的按照。是不是这个东西对吧。是按照组,然后一个主题一个分区,有一个什么。后面这个它其实保留的比那个要多一点,你看这。二。消费到二二之前,我们是不是已经消费到是什么情况。是一二,还有印象吗?之前消费到一二吧,就是里边之前不是三条数据嘛,三条数据应该是一二的一个关系,有一个分区里面两个,有一个分区一个,而且我们说了,如果你这不加刚刚符号比例,它从最大的开始消费吧,也就是说它接下来消费了一条,是不是两个都变成二二。
26:15
两个都变成二是这个意思,那接下来这样我再开启。啊,他这个东西已经有了。因为这个东西已经有了,它不允许,嗯不允许,那我们得做一个改变啊,因为它这个系统呢,比较麻烦,我改一个东西就好了。因为我们已经消费过了,已经消费过了,他不让这样去消费,我们在这里面需要改一个组音。啊,这样吧。又假如说。诶,插入一啊,改个组名就好了。重新消费。这个就消费掉了啊,这消费掉,因为它这个系统的比较特殊,现在是不是二二啊对吧,那看我再来一个什么。数据走。
27:02
消费到了,你接下来看一下。三二了对吧,而且好三二一直在打印,那接下来我再来一个呢。是吧,再来一个。那应该就是什么了。这消费到了吧。三三因为轮询嘛,啊,一个分区一个分区来的,它是通过这种方式来保存的,那无论用哪种方式,我们要知道一个点,它是按照什么。按照组来的,当把它停掉的时候,这边就不会刷新了。因为没有人往里面写东西了,对吧?啊,没有人往里面写东西了,好第一个就是有同学,很多同学问到的一个问题,50个分区,那我怎么知道当前这个内容,它在哪个分区里面保留着。来看一下,你看这种是不是KV形式啊。是不是这前面唯一确定的值,这个叫K,这个叫V啊。对吧,KV形式找分区能找到吗。
28:08
就是这个数据发到哪个分区,你们不是想之前问这个,你们说50个分区,我这个数据对于当前我这个消费者来说,到底存到哪个分区里边了,对吧,那这个地方是什么。KV形式吗?KV形式不是跟哈希值来的吗?只要你消费者组没变,消费的主题没变,消费的分区没变,那它所在的这个地方保留的分区会变吗?不会变吗?啊是这意思,他根据这个来的,所以呢,你现在问我在哪个分区,我也不知道。啊,50个我也不知道,因为这个含义值,你说谁谁能算出来。对吧,啊,一个对象的它一值分,但是要自己能找到吧,啊,他自己能找到是这意思,好第二个点就是我们所说的你要关注的,刚才只是说因为有之前有同学问到这个点,到底我这个分区,我存在哪个分区,对吧?啊这个问题要解决一下,因为他要自己还要去找。第二个问题你一定要关注的,就是说他在里边存的奥outside的是按照组主题和什么和分区这个东西来唯一确定的,因为只有这个东西唯一确定,它才给我们分区分配策略提供了可能性。
29:17
像我之前所说的。如果你按照消费者。来保留的这个奥赛的,那当你一个消费者挂掉了,另外的就算是你同一个组里边的,有人能拿到你那个的吗?拿不到,因为你消费者挂掉了,就算你跟着哈希来的,那你这个消费者叫什么名字,其他人不知道吧,他怎么能算出来这个哈希啊,算不出来,但是我按组来的,只要我这个AB在一个组里边,你挂掉了,通知你去拿一下,你拿着组名白过来取吧,你是能取到的,能理解这个事啊,所以呢,这个按组来重新去。按照组来保留,我们是给我们那个分区分配原则提供了一种那个可能性,就是你动态的加入一个消费者,或者说动态的删除一个消费者,照样的这个数据,这个消费者组里边的可以交给其他的人来接着消费,要不然就没办法做到这个事,要不然你只能去从头消费。
30:13
对吧,因为你拿不到上一次消费的,你只能从头发或者说从尾开始消费,所以你进来的时候,诶,进来时候新生成的数据开始消费吧,只能做这个事啊,只能做这个事,所以呢,你一定要关注的是这里边的一个点啊,保留的无论是ZK还是系统这块,是不是都是按照这两个东西来保存的。对吧,啊,唯一确定的一个关系,这个大家要知道啊。
我来说两句