00:00
好,接下来呢,我们就来详细的看一下卡夫卡的基础架构,也就是说看一下卡法里面到底有哪些组成部分,双击PPT打开。首先映入我们眼帘的呢,是卡法的producer,比如说对应的卡法的生产者用来对接外部传进来的数据。好,那右侧这部分呢,是卡瓦consumer,也就是说消费者。用来消费卡卡的数据的。那中间这部分就是卡卡的topic主题,存储各种各样类型的数据的地方。好,那现在呢,摆在我们面前一个什么问题呢?哎,宋宋老师啊,有100T的海妊娠纹。需要他呢,哎,把它传入到卡卡里面,同时对这个数据呢,进行一个搬运。哎,承担这样一个角色。那大家思考哈,100T的数据,如果说我们用单独一台服务器来存储,能不能存得下呢?正常情况下,我们在生产环境当中,一台服务器啊啊,它的硬盘也就8T到96T之间。
01:06
那任何拎出来一台服务器都不能存储100T的数据。那这怎么办呢?之前我们在讲high度的时候说过,哎,遇到这种海量数据,需要把它分而治之。对吧,把它切割成几块来处理不就完了吗?那好,那卡板呢,其实也采用了这种事情。他把一个海量的100T的数据,我切割成几块不就完了吗?哎,那卡布呢,切割的是把一个主题的数据分割为多个part,叫分区。你看啊,我未来这100T的数据要发往topic a这个主题当中。但是呢,由于我买一台服务器都不能存储100G的数据。那我把它切割成这里面,我是切割成了三份。哎,每一个服务器里面只存储30多T的数据,那这样不就OK了吗?
02:01
采用分区的方式,那这里面有个概念叫BROKE0 broke1博二,这什么意思呢?哎,这代表的是服务器名称啊,比如说hi do102 hi do103。嗨,度法104对的主机名称。好吧,啊,也就是说三台服务器,你可以这样理解,那三台服务器上要存储的是topic a,那topic a呢,存储100T的数据存不下,那我就放了三个分区。那再往下看。那既然生产这块,你把海量的数据切割成一块一块的。那么我消费这块也不是弱。比如说我如果只是一个消费者来消费这里面所有的数据。一个消费者。那他的处理能力是不是也是堪忧啊,啊,至少效率比较低下,那这时候宋老师一想,我一个人担不了,那我有这么多学生啊。对不对,哎,我着急。
03:01
一票人。那怎么办呢?诶,每一个人负责其中一个分区的数据,那这样我的处理效率不就提高了吗?那如果你的分歧越多。那我这边多准备一些消费者。那就能够提高我处理数据的能力,那这里面有一个注意事项啊,什么注意事项呢,就是这样。一个分区的数据只能由一个消费者来进行消费。那如果你一个分区啊,有两个消费者来消费的话,那就容易产生,诶你说这一这个数据到底由一消费还是由二消费呢。哎,这不利于后续的一个管理,所以说这里面要求一个分区的数据,只能由一个消费者来进行消费。但是这样。好,这是它进行一个规定。那接下来大家再思考啊。如果说我这一个分区挂了怎么办?有这种情况吗?天有不测风云。那他挂了,那我这个海狗人参丸不就丢了吗?
04:02
是吧,哎,那为了保证数据的可靠性。卡不卡呢,考虑到这点,哎,可以增加对应的副本。你说你挂了之后,我这儿还有副本备份呢。知道吗?那他这个副本跟我们之前讲high do的时候的副本一不一样呢。当时我们嗨度的副本啊,每一个副本与副本之间,它的这个都是一样的。哎,没有什么这个啊,这个大王小王之说。但是呢,在卡拉里面不一样,他这个副本啊,分为leader和follow之分。也就是说,有leader,有。那既然有leader和follow之分,那要注意了。他这里面无论是生产者还是对应的消费者。来处理数据的时候,只针对leader这个副本进行生产和消费。跟你这个福罗没关系。那同学该差异下说海哥,那你这个副本有啥用啊,对吧,我又不能处理来有用啊,什么时候有用呢?当你这个leader挂掉之后。
05:03
那这个follower有条件可以成为新的leader,那这样后续你的生产者和消费者就可以对这个follower进行相关操作,对吧?因为它已经成为leader了。哎,这个地方要注意哈,也就是说这个卡法的副本呢,分为leader和follow,生产和消费只针对leader,那么leader挂掉之后,Follow有条件可以成为leader OK。那这还走?卡夫卡里面还有一部分数据是存储在主keepper里面。那主keepper帮卡夫卡来存储什么信息呢?首先看这信息。这信息。这里面它记录着整个集群当中哪些服务器上线了,比如说正在工作,只要工作,那在这个节点上就有相关记录啊,012对吧,你这个是零啊,这是一,这是二。啊,比如说记入服务器节点运行的状态,那还会进入哪些信息呢?刚才你说了,这里面有副本leader之分。
06:01
他会帮你记录每一个分区谁是leader,那这样后续生产和消费的时候,我就直接找leader不就完了?哎,他会帮你去记录leader相关信息啊,这是主keepper干的活。那好,那这里面大家记住一个事儿,在卡不卡2.8.0之前。那么这个卡法呢,是必须得有主keepper进行配合使用。但是2.8.0以后,那这个呢,就不是必须的。它是可选的,比如说你可以选择用主K包帮你来存储这些信息,那当然还有一种模式呢,你可以不选择用主K包帮你存这些信息。那这个呢,叫模式。这个呢,哎,本套课程当中啊,就会给大家讲两种模式,一种呢是基于这个主keep,另一种呢是不基于主keep。那么未来的发展趋势是什么样呢?随着卡法的发展啊,其实呢,这个主kper呢,已经成为卡法的一个瓶颈了啊,所以卡法呢,逐渐的在抛弃对应的主kper。
07:04
哎,那这个去主keyper化已经成为大势所趋,而且在新版本当中啊,已经可以不用主keepper,那呢,呃,但是这个呢,需要点时间,因为在生产环境当中还有一些机群正在用着主K啊,跟卡普卡进行一个搭配使用啊,需要点时间啊,但是呢,我猜测这个时间不会太长,好吧,嗯,这就是卡卡的一些基础架构。那回过头来,哎,我们稍微再回顾一下啊,整个过程哈。啊,这是我们刚开始首先映入我们眼帘的呢,是哎生产者消费者,还有对应的topic这个对接外部设备啊,比如外部数据这个呢,是用来处理数据,中间这块是用来存储数据,存储各种类型的数据。那好,那么我们要想处理100T的数据,由于啊,你单个topic a。它呢,你要不把它创建多个分区的话,那你这100T的数据就要存储在整个一台服务器上,那一台服务器的处理能力呢,是存不下100T数据的,那这时候只能引入分区。
08:07
来帮我们进行存储好。那么就把它切割成一块一块。那接下来再往下看。那你既然切割成一块一块的,那我从这个消费者角度来说,我也不甘示弱。我在消费的时候,我也可以按照分区一块儿一块儿的来进行处理,能够提高我处理的并发度啊。那要注意一个事儿,就是某一个分区当中数据只能由一个消费者进行消费,防止啊,哎,两个消费者消费同一分区数据,哎,这里面不知道谁消费哪一条了啊,这样容易混乱啊,容易混乱。行,那为了保证分区的一个可靠性,这里面引入了副本啊,引入副本。但是呢,要注意它这个副本啊,是分leader和副本的。无论是生产还是消费,它的处理对象只针对leader副本,这个要注意,哎,Follow呢,只是一个备份,等leader挂掉之后,那么他才有条件成为新的leader。
09:08
那下面主K来帮我们存储卡法当中集群上下线一些信息,有哪些节点在线。还会帮我们存储,哎,每一个分区下谁是leader副本帮我们进行一个记录啊,那这个事儿呢,是在卡2.8.0之前,那么主K牌是必须的,2.8.0以后。那么这个主K班呢,是可选模式啊,只不过当前这个目前市场情况啊,这个主K班跟卡不卡配合这种场景呢,还是相对来说要多一些。
我来说两句