1.一文搞定Kafka的组成架构

1.前言

我在之前的文章当中,介绍了很多有关于Flink的相关知识和内容。因为我目前阶段所做的学习和工作的内容就是围绕着这一部分知识进行的。但是在进行数据计算的时候,FLink是没有办法单独进行计算的,所以还需要使用消息队列与Flink结合起来,那这个消息队列,必然是Kafka。因为Kafka与Flink实在是太契合了。所以接下来,就让我从Kafka的组成架构开始,围绕着kafka的生产者、kafka本身、kafka消费者这几个阶段,来为大家介绍一下这款与flink亲密度极高的消息队列。


2.kafka简单介绍

大家都知道kafka是一个消息队列,它的本质就是完成对数据的传输工作。这就是代表着,Kafka除了传输功能外的其他功能,都是为了Kafka能够更好的传输数据而延伸出来的。就比如,开发人员希望Kafka能够更好的传输数据,所以为它设计了分布式结构,由多个broker组成一个大的Kafka集群。然后为了提高吞吐量,又引入了topic的概念,让数据的发送方和拉取方都面向对应的topic进行工作,topic本身实际上是一个逻辑上的概念,在其内部是由partition完成工作的。也就是说,一个topic内部可能会有多个partition,多个partition一起来完成对应topic的工作内容,使得kafka的并发能力得到了增强,数据的传输就会更棒。

但用这种方式虽然提高的传输的效率,但是传输的时候数据还会面临丢失的问题,所以这个时候就引入了副本、落盘、偏移量这些概念。大家设想一下,当数据的发送方向kafka传输数据,topic接收到数据之后,由其附属的partition来进行工作,如果partition坏掉了,那这个partition中的数据就会丢失,那整体的程序就面临着数据丢失的危害,所以针对partition分区,要对每一个分区设置规定数量的副本数,这样即使正在工作的分区坏掉了,也会有其他的副本分区代替它进行工作,这样就在partition阶段保证了数据的不丢失,但是设置副本之后,还需要知道哪个分区是主、哪个分区是从。这就引入了ISR队列机制。partition阶段的东西处理完了之后,又有新的问题出现。如果万一突然停电,那就算kafka中有一万个分区副本也是毛用没有,所以为了能够让数据即使发生停电也不丢数据,kafka又加入了落盘的概念,将数据保存在磁盘上,停电了也没什么问题了。

那就算将数据保存在磁盘上,也会有新的问题,数据一旦落盘就要序列化和反序列化,并且还有进行IO操作,这就很浪费时间,所以Kfaka开发者们又重新定义了序列化机制,并且还加入了磁盘顺序写入的概念,让数据的落盘能达到600M/s。这样就解决了数据丢失的问题。

接下来就是最后一个问题了,故障恢复之后,怎么找到故障之前处理到哪条数据了呢?这个时候就加入了偏移量的概念,由kafka内置的系统主题来维护所有topic的数据偏移量,当故障恢复的情况一旦发生,就会读取对应topic中的偏移量,在落盘处找到其对应的数据,恢复到之前的位置。

上面的这些内容,就是kafka常用到的所有概念了,只不过现阶段我描述的比较笼统,不过请大家放心,在后面我会从生产者、kafka本身、消费者这三个角度来给朋友们讲解,算上这篇文章一共会有4个,希望大家读完这篇文章之后,能够对kafka的整体有一个清晰的认识。


3.kafka组成架构

在kafka工作的时候,需要明确一些概念,才好方便大家使用。为了大家能够更好的明白我在说什么,我先用一个图来表示kafka工作的时候,都有哪些东西在干活。


这个图大概就是这个样子的,如果kafka想要运行,上面的这些内容是一个都不能少的。不过我感觉我的图画的有点乱,所以接下来我先给大家一一介绍这些组件,然后再从宏观的角度上去讲讲工作时候的流程。
1.生产者:生产者的概念是根据kafka提出的,指的就是负责向kafka发送数据的客户端。
2.消费者:消费者的概念也是根据kafka提出的,指的就是从kafka中拉取数据的客户端。
3.消费者组:是由多个消费者联合起来,形成的一个“大”的消费者,它能够同时获取一个topic中多个partition中的数据进行消费,通过提升吞吐量的方式加快数据的处理速度。如果kafka一个分区内部有多个partition,那这个时候可以设置Flink的并行度为分区数,或者是小于分区数的二进制数。
4.kafka集群:由多个broker组成,以集群的方式处理数据。
5.broker:一台kafka服务器就是一个broker,一个broker里面可以包含很多个topic。
6.topic:比较重要的一个概念,生产者和消费者都是面向它进行工作的,但它本身是一个逻辑上的概念。可以把它看成是一个消息队列。
7.partition:这个概念也很重要,因为它是kafka组件中主要负责干活的那一个。它本身是一个内部有序的消息队列,多个partition能够组成一个topic,并且如果topic足够大,甚至能够散落在很多个broker上。
8.Replica:副本,大家可以看我的这个图,是不是partition后面有一个字母L或者F,L就是leader,F就是Follow。L是干活的,F是保证其数据不丢失的。
9.Leader:分区副本中的大哥,负责干活的那一个。
10.Follow:分区副本中的小弟,负责维护数据副本,平时就从leader上同步点数据,然后随时等待上位。
11.zk集群:没有zk就没办法使用kafka,因为zk上维护了kafka一些重要的信息内容,就比如分区副本的名称以及其主从身份信息。


上述的这些概念就是kafka运行时候的基本概念了,掌握了它们之后就对kafka有一个基本的认知了。不过接下来我还要给大家唠叨一下,kafka轻度级别的工作流程。
1.生产者发送数据给kafka中对应的topic。
2.topic是逻辑上的概念,底层干活的是内部有序分区间无序的partition,当有数据进来partition就开始工作。
3.partition工作分为Leader工作和Follower工作,Leader负责接收数据,Follower负责从Leader上同步数据。这个时候能被消费者消费到的数据内容,是同步速度最慢的那个Follower的数据位置的数据。
4.消费者进行数据消费。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,784评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,745评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,702评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,229评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,245评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,376评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,798评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,471评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,655评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,485评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,535评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,235评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,793评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,863评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,096评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,654评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,233评论 2 341

推荐阅读更多精彩内容