00:00
来咱们现在的这个打开,哥,我我看我的简历在什么地方。打开这个吧,对,我这个应该是咱们是一样的啊,来在我这里的课件,然后呢去找到。卡夫卡,这卡夫卡带着大家呢,把卡夫卡大概的捋一遍对吧,这个捋一遍啊,那肯定不是讲一遍同学们对吧,你们讲应该讲两天还讲多长时间对吧,三天是吧,那我可能对吧,这个肯定到不了那么长时间,是不是是吧?呃,那么关于咱们这个卡夫卡啊,关于咱们卡夫卡那这两张我肯定pass掉了对吧?那这两张我肯定pass掉了,不可能给你看对吧,API这块呢,稍微提一提,主要呢,是把咱们前面对吧这块对吧,哎,就这其实主要是二三张呗,对二三张对吧,其实你们这么一看,这个东西你们也没啥也没啥东西啊,你看你你们要看的话,店脑你们肯定不看,暂时把它pass掉,这个兼控就是个配置,你们肯定也不看对吧,这里面一个API,这个这T代码,这对你们来说也非常简单对吧,因为你们比较擅长写代码嘛,然后这概述呢,你们也怕掉了,那其实你想你们的卡板没啥,顶多两张东西,两张东西还一张快速入门的就一些命令对吧。
01:20
调解的也没啥,那就稍微的就第三章呗,对吧,那咱来看一看啊,同学们首先呢,那么咱们在概述这里边,那么你得知道我们的卡夫卡是什么,对吧?卡夫卡它是一个什么,它是一个消息队列,或者叫消息中间线,来再给我说几个别的。除了卡卡之外,还有类似于别的咱们这个消息中元键吗?Active MQ rocky MQ rocket MQ是吧?注意啊,一般咱们说MQ,其实消息中间件它和咱们这卡卡短期是一样的,对吧?诶一般咱们现在如果要做咱们这个开发的话,对吧,那么可能对active qmq,对,然后呢,咱们现在什么咱们这个对吧,这个rabbit对吧,什么rock rocket对吧,这些对吧,然后接下来呢,那么咱们这消息中间建,那么你得知道为什么要用它,对为什么消息队列啊,消息队列它的一个作用是什么,那么一般呢,不管是哪一个消息队列,它的主要作用和主要使用场景,那么主要有这么几个,第一个叫系统结耦。
02:19
啊叫系统结偶,什么叫系统解偶呢?对吧?假如说啊,我现在呢,有我们这个A啊和咱B2个系统对吧?哎,那么我现在呢,在咱们这里啊同学们假如说我现在如果要是没有使用卡不卡的话,那A呢,他可能要发送数据对吧,给B,然后呢,B来接触我数据,那么这时候它俩可能也需要我们现在这里边把A和B给耦合在一块,但现在呢,如果有了卡不卡的话,那么咱们A和B呢,其实他们之间呢,可以不做关联,我A呢只负责往咱们这个卡卡来发出去,我B呢只负责从我们现在呢这个卡卡里取出去,那这样的话,同学们A和B之间它的耦合度是不是降低了呀,对吧?哎,所以说第一种方式啊,叫什么系统结耦。
03:06
对吧,那么第二种呢,咱们应用场景这个一般干什么呀?叫做我们这个异步通讯,叫异步通讯,比如说我现在我做了一个网站啊,比如说我现在做个网站,这网站干什么呢?对吧?我现在为了去吸引人,一开始注册我这网站,我就送你2万积分,对,只要你送对吧,只要你来注册,我送网网网站这个积分吧,积分可以干什么?积分可以换大米是不是对吧?可以换一些什么,换鸡蛋啊,换大米是不是对,你可以,你可以这样对,比如说我现在一个社区网站,对吧,你注册我现在送积分对吧,我现在2万积分,你可以帮我十斤纳米对吧,那肯定很多老头老太也会去去排队对吧,但是大家注意啊,假如说,假如说我现在在这里一个呢,是我们现在注册对吧,然后另外一个呢,是送积分,那么这两个操作吧,对吧,那我现在在咱们这程序里边呢,我现在写了,哎,你现在填这些信息,然后接下来一点注册,大家想想你点注册首先你是不是应该把这信息保存到你的数据库里面去,对吧?你。
04:06
肯定把当前用户注册你网站了,你肯定把它信息是保存你数据库里边,这是第一步操作,那么第二步操作其中啊,咱们用户这里边有一个积分对吧,这样的一个属性一开始是空的,现在你是不是应该给他改一下,改成2万对吧?而且大家想一想,我当我一点的时候,那么这个东西你是不是得给一个咱们用户一个反馈,用户一点注册,他在这等着你呢,等着什么,等着你给他返回一个什么注册成功的,注册成功对吧?但是呢,大家想一想,什么叫注册成功了,你说我现在是你注册了我信息到数据库了,还是说我现在把这2万积分给你,然后你现在注册注册成功了呢?啊,我感觉我是不是应该是这个信息到数据库里边,是不是注册成功了呀,对吧,所以说注意啊同学们,那么这个时候咱们现在可以怎么办呢?当用户点咱们注册的时候,你呢,直接对给咱们用户来返回咱们现在这个成功页面,说老师那不对呀,我还没给用户积分呢,对吧,那么同时呢,你再去把咱们现在啊给用户送积分这个操作发送到哪呢?发送到咱们这卡发里面去。
05:12
就消给咱们卡卡发个消息,这个消息干什么呢?这个消息是送积分的,等这个消息送积分的,那么也就是说啊,我没有必要等到,诶,你必须把这个操作执行完毕之后,你再给我返回,因为如果说假如说速积分,现在大家都在注册,注册高峰期,然后你要等到这个等等的积分到你这样的话,你可能得过五秒钟再返回。对吧,但是我现在呢,我不用了,你只要注册了,我马上给你打到成功页面,又一点成功了,对吧,然后大家想一想,我现在我可以完全怎么办呢?我注册成功之后,我是不是说返回到主页,然后到主页里边有一个我的,我的里边是不是还有一个什么积分啊,当用户做完这些操作之后,我估计差不多五秒到了。对吧,你想想就是说咱们就或或者说我现在这五秒,对于我们现在有什个请求来讲,这是不是已经很长时间了呀,对吧,比如说你现在两秒对吧,那么两秒钟之后,大家想想我这个东西肯定是不是已经把交易卡不卡,卡不卡,是不是已经再去执行,我已经把咱送积分的操作,是不是已经处理完了呀,对吧,那我现在用户一进去之后,诶发现我的基数也到账了,但是他整个体验是不一样的,对第一种是什么呢?第一种是诶我注册对吧,完事了,把它保存数据库了,然后加上数据分,这两个都处理完之后,然后呢,你再给咱们的用户,我返回数据,对,这是第一种,那么第二种方式呢,注册成功之后,你直接给用户把这个这个消息给返过去,然后接下来往卡不卡里边来发送一个我们消息干什么呢?送积分,对,然后接下来卡不卡消息被消费,然后呢,完成积分的一个送礼操作,那么这个相当于什么,相当于异步通讯,就他俩哈,相互之间是互不影响,就咱们本身你给用户返回啊,以及我们现在的这个。
06:57
撞击分这两操作他俩呢,是并肩执行的对吧?相互不影响对吧?我记得我在咱们这里给大家讲过,什么叫异步操作呀,是不是两个人手牵手,肩并肩从门出去,他们俩相互之间互不影响,是不是这个叫异波对吧?现在我给你返回页面和送积分这两个操作他们相互之间不影响,叫什么异步操作,所以说一般的消息中间电对吧?那么它的第二个作用叫什么呢?叫异步通讯,那么第三个作用叫什么呀?叫流量消峰。
07:27
对吧,第三个操作对吧,叫流量消峰对吧,这流量消峰是怎么回事的?对吧?假如说我现在有一个秒杀活动对吧,有一个秒杀对吧,这个活动对吧,那么咱们现在秒杀呢,那肯定对吧,这个有好多好多用户对吧,都现在来访问你对吧,都访问你们这网站对访问你网站,然后秒杀商品对吧,那秒杀商品的话,大家注意咱们现在最终的秒杀商品是不是相当于我要下这商品订单呀,对吧?那么订单在哪呢?可能在咱买所有数据库里边,对吧,假如说我现在呢,在这里有100万用户都秒这些商品了,比如说啊,有100万用户都秒这商品了,对吧,那么这100万用户呢,那么在啊,如果说我要是买soq的话,如果中间不做任何处理的话,那么他可能呢,在咱们的0.1的秒的甚至更少的时间,那么直接呢,有100万用户要向买Q里边来插数据,那么这种MY搜狗它是扛不住的,短期我现在如果说在很短时间往往这个这个MYSO里边插大数据MYSO是扛不住的,那怎么办呢?咱们现在你秒成功了,别着急。
08:27
一我并不是直接操作买circle狗,而是干什么呢?而是把当前这些我们下订单操作放到哪呢?放到咱们这卡卡里边去啊,放在卡里边去,然后接下来,那么咱们现在呢,对吧,再从卡卡里边把这消息呢,给它取出来,对吧?那么这个过程呢,可能不是0.1秒了,可能变成多少,可能变成一秒钟了,对吧,原来是0.1秒要做这些事儿,现在是一秒钟做这些事儿,大家想想它的压力是变小了呀,就相当于我原来到一秒钟要出流量是这样,现在呢,我相当于什么呀,我相当于说是两秒钟这样,那他这个东西是不是相当于要变缓一点,这叫什么,这叫消峰操作啊,这个叫流量消峰啊,这个叫流量消峰,那么同时呢,大家这里我相信有很多朋友有困惑,对吧,说老师这个叫消息队列消息对吧,不是说咱们现在嘿,这是个消息对吧,他的消息什么,他的消息可以是个操作对吧,可以是数据对不对,比如说你像我现在这里边我要下订单对吧,那么他在发消息的时候,他可以发什么呀,就是当前。
09:27
订单信息呀,对吧,把订单信息封装一个对象,封装一个杰森,然后传到卡卡里边去,然后从卡卡里边把订单这个消这个这个信息拿出来,然后呢,把订单表里边插入,对,这也是消息对吧?这也是消息,不要说这一说消息马上想到了是吧,那个ne cat里边发送abcd这种对吧,那不是对吧,咱们现在消息可以是你要做的业务啊吧,你要做业务好这是什么呢?这是关于我们现在呢卡夫卡对吧,它的一个我们的消息队列对吧,它一般呢他所做的事儿对吧,然后接下来那么消息对列呢,一般有两种模式,一个呢是点对点,一个呢是发布订阅,那么点对点呢,注意,那么一般呢,就是说他这个要描述的话更精准一点,就是什么,就是一对一的对一个发送者,然后呢,一个接触者对吧,他俩对吧,来进行一个我们这个消息通讯。
10:18
对,比如说对吧,咱们现在在这里,我呢要给某一个人对来发个短信,对那这个呢,其实就是我们点对点对一个发一个接收,那么另外一个呢,还有一个叫发布订阅,就有点类似什么呀,大家关注的公众号对吧?大家关注公众号对吧,那么你关注它了之后,是不是就相当于订阅的这个消息呀,对吧,你先订阅消息,那么只要呢,一开始他有这个什么,他有一些消息的话,对吧,他给所有关注我公众号的是不是都发呀,对吧?哎,那么这块呢,是两种消息,然后接下来那么一个是一对多,一个是一对一对一,那么咱们现在卡夫卡呢,它使用的方式是不是应该是这种啊是吧?发布订阅的模式,那么我现在呢,如果发布订阅的模式的话,那也就是说,诶,我现在啊这个生产者,然后呢,把消息发送给卡夫卡,然后这里呢,有很多我们这个这个消费者等着对他进行消费,那么咱们现在呢,再去消费的时候,那么其实呢,有两种方式,就是卡夫卡它本身对对我们消息进行处理的时候,有两种消这种方式,一个叫什么呢?一个叫push。
11:19
一个呢叫push啊,一个叫push,一个叫push,这两个字听过吧,我问大家,咱们卡不卡使用的push还是push?对吧,使用的是我们拉的方式对吧?因为我现在在这里如果说啊要推的方式的话,那咱们说并不知道我们现在每一个生产者对吧,每每一个消费者它的一个实际处理能力啊,对吧,那么咱们是真正什么呀?卡夫卡的本身是发布订阅模式,然后接下来那么咱们获取消息的时候,采用的是我们这铺拉取的方式,对吧,从卡夫卡里边根据你实际的一个处理能力,是从咱们卡卡这个这个泡中来拉取消息啊对吧,这是我们现在的这个,然后接下来呢,那么再往下这里有一个卡夫卡这的一个基础架构,对,那么像这个呢,那我相信大家应该对肯定了解对吧,那么首先呢,咱们这里啊,那最最最基础的,那么应该有卡不卡,有生产者有消费者对吧,有生产者消费者对吧,然后接下来咱们要在发送的时候,那么应该呢,因为我是咱们这个消这个一对多嘛,发布地位方式,它是面向主题的,对吧,所以说呢,在咱们这里边对吧,那么有个topic的概念,但是呢,那我们真正的在处理的时候。
12:27
为了去提高我们这个并发量,并发能力,那我一个topic呢,在这里是不是划分了呀,划分成什么,划分多个我们分区对吧?所以说呢,在咱们这里边一个topic这里面有多个分区,那么如果有多个分区的话,咱们生产者的生产数据的时候,它应该发送到我们这个不同的分区上去,那么如果有多个分区的话,那么咱们在我们消费的时候,那么是不是应该有不同的消费者来消费我不同分区的数据啊,对吧?那么能有这种情况,同学们假如说我当前的分区的数据给他和他消费。会有这种情况吗?
13:03
会不会这种情况,同学们就是我现在一个分区数据,然后呢,被两个消费者消费。啊,不可以吧,同学们,就咱们当前一个我们的分析数据只能被咱们一个消费者组中的一个咱们消费者进行消费嘛,对吧,这会要注意一下啊,对吧,然后接下来,那么咱们现在呢,在这里对吧?我们可以对他做消费,对,然后接下来那么咱们这里还有一个什么呀,这个消费者组的概念,对吧?那么一个消费者是不是可以属于我们某个消费者组啊,对吧,然后接下来那么再往下对吧,再往下那么我们为了提高呢,我们的高可用性对吧,高可用性那么我们呢,每一个分区它会有若干个我们这个副本,对吧,有若干个副本,那么在副本里边呢,它是不是有我们这个foer以及我们这个leader啊对吧,每一个分区啊,它会有我们现在对这个多个副本对吧,然后接下来每一个咱们这个分区呢,对这个副本,它呢,会有我们这个leader以及呢,我们这个follow对也是follow对吧,然后呢,咱们整个在管理对吧,那么一般的什么这个选举呀,Follow和leader选举呀,或者当前我都有哪些节点呢?对吧,都由谁来管理呢。
14:09
就做K管理啊,对吧?哎,那么这块呢,是他最基本的架构啊,这个是最基本架构,然后接下来那么咱们除了基本架构之外呢,那么再往下像这些话大家注意,如果说你对我刚才讲这些东西感觉到比较生疏,那你就把这些东西好好看一看啊,他得描述对吧,那么其中呢,这里有一个关于我们这消费者组对吧,它有多个消费者组成,消费者组内每个消费者负责消费不同分区的数据,注意一个分区只能由一个消费者组成的一个消费者消费。注意啊,一个分区对吧,不是一个主题对吧?因为咱们现在这里我可能是消费某个主题,但主题里是不是有一部分分区啊,对一个分区对吧,他就数据只能被一个消费者组的消费者啊,一个消费者组一个消费者消费对吧?这个要注意一下对吧?呃,然后接下来呢,那么再往下对吧,这会儿我就不带大家一个就念了一个念了大家如果觉得对这个还对吧,这个不太熟悉的话,你好好看一看对吧,然后接下来再往下,这有什么呢?他一个快速入门,快速入门第一个就是什么呢?就是咱们现在安装部署对吧,那么安装部署呢,我问问大家对吧,你们现在在咱们这个安装的时候,你们这卡卡数据存在哪了呀?
15:22
啊,你们的日志存在哪儿了?你们数据存在哪了?Broker log,你们不是一个老师教的吗?存的地方都不一样了,你们到底存在哪了?Logs,你们确定logs吗?你们现在打开你们的这个数据,你我觉得你们数据不在logs存的。你们没改吗?我觉得你们改了呢,你们没改吗?你们现在数据存在哪了?你们看一看,你们现在卡卡数据,就是我现在假如说讲咱们现在卡夫卡里面杠杠create创建了一个什么,咱们这topic个主题对不对,那么真正这主题数据存在哪呢?
16:05
要存到对的里边去了啊是不是,所以说注意啊,同学们这个不是装完就完事了,默认情况在那,默认情况是不是在咱们这个log里边,对吧?但这样的不太好,为什么呢?因为logs咱们现在这个默认情况下,感觉这个东西就是日志啊,对吧?但是默认情况下,其实呢,它在咱们底层存储的时候,他是不是把咱们这个topic个主题是不是也这个放在了日志里去了,对吧?这个之所以你们存data里边,同学们是因为你们改过啊,你们改过这个这个数据的这个这个什么呀,这个目录默认是存在咱们logs里边的啊,默存logs里边的对吧?具体改哪你们可以看一看,对,在咱们这里边的话,你可以改一些东西,对吧?呃,然后接下来,对,然后接下来那么除了咱们现在这个地方之外呢,像这些呢,我就不一个说了,就要配这些东西吧,都配这些东西,然后呢,它主要如果说基础的话,如果基础的话,那么那我要求你们对吧,那这块就是卡不卡相关的一些我命令操作,那这块呢。
17:05
可能你必须对吧得能够这个写出来对吧,一个什么呢?一个是我们这个对是这个查看对吧,杠杆例子,但其实我们说杠杠组keepper,你们当时在讲的时候是杠组keepper,杠server server是吧?对这个东西你要知道,就是说它本身一开始这个东西呢,是我们这个什么呀,是我们现在对这个高组keepper,但现在这个东西过时了啊过时了,如果说你现在呢,要去什么的话,那你这里呢,那你应该去对这个指定是我们这个组keepper对吧,它的一个路径啊组K路径,而且这组keep路径呢,那应该和上你和你上面的应该对应起来,对吧,什么意思,就是你在咱们这个卡卡里边,你是不备组keep本地址啊对吧,那么咱们在配的时候,那这里我最在最后我是不是加了一个杠卡夫卡,这个目的是什么。结果为什么要这么配置,对,就是我们在组keepper,它这个目录下面,它会有一个什么,它会有一个子目录,对,就是把它当前呢,我这个卡夫卡相关的一些配置都放在咱们这卡夫卡目录里面去了,对吧?如果说你要不写这个的话,对吧,也没问题,也不会报错同学们对吧?只不过呢,所有东西都放在咱们这个主keep的根目录下面了,都看的非常乱啊看非常乱对吧?嗯,然后接下来,那么既然你在上面呢去创建它的话,那么这个时候如果你要是通过杠杠组keep本对吧去连接的话,那你应该呢,也去指定到到达卡卡的目录对吧?然后接下来怎么去创建这个创建呢?其实就是杠杠create,然后呢,这里两个一个呢是我们这个对吧,这个副本数一个呢,分居数对吧,像这个也应该可以写出来啊,同学们就这个东西,我这个是要求你们吧,不应该对吧,看讲义啊,不应该看文档直接手写出来的啊,一个手写出来的,然后删除呢,注意删除的话,其实这块呢,我应该是轻易不要删的。
18:54
对,我不知道你们删没删过,删过是吧?删过之后正常吗?应该会有问题吧啊对,就删完之后的话,其实你看咱们在这里删的话,是不是还得到主keep里边再删一下呀,对吧,在咱主keep里边那么也要去删一些东西对吧,这删除对吧,然后接下来发送消息,这也不说了,对吧,其实发送消息你需要注意什么呢?就注意咱们在连接的时候,它不是什么不trap server了对吧,而是我们这broker list啊那这块,然后接下来那么咱们消费消息呢,这个咱们其实这两天对吧练过,如果哪天同学们对吧,我没准啊,我没准哪天心血来潮,我会让大家再再找个人说怎么消费消息对吧,如果说啊,如果说你要是对吧这个真答不上来,那我觉得非常非常说不过去了吧,那不光是我写的多遍,你下去你要练的话,你是不是应该也用了几好几次了呀,对吧,所以这会你要注意一下,然后呢,还有查看详情,这个就是我们这个RI查看某一个主题对吧,那么这个呢,你可以把当前主题它的一个分区数。
19:55
本数,然后以及呢,我们现在副本它的一个leader follow的情况给他看到,然后还有一个是修改对吧,像这个呢,应该你知道这里面就是什么呀,就是我可以直接去对他做一个我们这个设置对吧?通过咱们的al对吧?通过咱们al对吧?好,这是关于我们现在的一些我们基本操作对吧?目前为止大家想一想你们的卡卡基本的这些东西没问题吧。
20:17
就是我现在讲的快速基本那些东西应该没问题吧,对吧,然后呢,咱们这个下午呢,来加固深入啊,下午呢,加固深入还剩几分钟时间,你们稍微看一看啊。
我来说两句