Java程序员面试必备——kafka的专业术语

主题 + 客户端

  1. 发布订阅的对象是主题(Topic)

  2. 向主题发布消息的客户端应用程序称为生产者(Producer),生产者可以持续不断地向多个主题发送消息

  3. 订阅这些主题消息的客户端应用程序称为消费者(Consumer),消费者能够同时订阅多个主题的消息

4.生产者和消费者统称为客户端

服务端

  1. Kafka的服务端由被称为Broker的服务进程构成,一个Kafka集群由多个Broker组成

  2. Broker负责接收和处理客户端发送过来的请求,以及对消息进行持久化

  3. 多个Broker进程能够运行在同一台机器上,但更常见的做法是将不同的Broker分散运行在不同的机器上

  • 这样如果集群中某一台机器宕机了,即使在它上面运行的所有Broker进程都挂掉了
  • 其他机器上的Broker也依然能够对外提供服务,这是Kafka提供高可用的手段之一

备份

  1. 实现高可用的另一个手段是备份机制(Replication)

  2. 备份:把相同的数据拷贝到多台机器上,这些相同的数据拷贝在Kafka中被称为副本(Replica)

  3. 副本的数量是可以配置的,Kafka定义了两类副本:领导者副本(Leader Replica)和追随者副本(Follower Replica)

  • 领导者副本:对外提供服务,对外指的是与客户端程序进行交互
  • 生产者总是向领导者副本写消息
  • 消费者总是从领导者副本读消息
  • 追随者副本:被动地追随领导者副本,不能与外界交互
  • 向领导者副本发送请求,请求领导者副本把最新生产的消息发给它,进而与领导者副本保持同步
  • MySQL的从库是可以处理读请求的
  • Master-Slave => Leader-Follower
  1. 副本机制可以保证数据的持久化或者消息不丢失,但没有解决伸缩性(Scalability)的问题
  • 如果领导者副本积累了太多的数据以至于单台Broker机器无法容纳,该如何处理?
  • 可以把数据分割成多份,然后保存在不同的Broker上,这种机制就是分区(Partitioning)
  • MongoDB、Elasticsearch – Sharding
  • HBase – Region

分区

  1. Kafka中的分区机制是将每个主题划分成多个分区(Partition),每个分区是一组有序的消息日志

  2. 生产者生产的每条消息只会被发送到一个分区中,Kafka的分区编号是从0开始的

  3. 副本是在分区这个层级定义的,每个分区下可以配置N个副本,只能有1个领导者副本和N-1个追随者副本

  4. 生产者向分区(分区的领导者副本)写入消息,每条消息在分区中的位置由位移(Offset)来表征,而分区位移总是从0开始

  5. 三层消息架构

  • 第一层是主题层,每个主题可以配置M个分区,而每个分区又可以配置N个副本
  • 第二层是分区
  • 每个分区的N个副本中只能有1个领导者副本,对外提供服务
  • 其他N-1个副本是追随者副本,只能提供数据冗余
  • 第三层是消息层,分区中包含若干条消息,每条消息的位移从0开始,依次递增
  • 最后,客户端程序只能与分区的领导者副本进行交互

持久化

  1. Kafka使用消息日志(Log)来保存数据,一个日志是磁盘上一个只能追加写(Append-Only)消息的物理文件
  • 只能追加写入,避免了缓慢的随机IO操作,改为性能较好的顺序IO操作,这是实现Kafka高吞吐量的一个重要手段
  1. Kafka需要定期删除消息以回收磁盘空间,可以通过日志片段(Log Segment)机制来实现
  • 在Kafka底层,一个日志又被细分成多个日志段,消息被追加到当前最新的日志段
  • 当写满一个日志段后,Kafka会自动切分出一个新的日志段,并将老的日志段封存起来
  • Kafka在后台有定时任务定期地检查这些老的日志段是否能够被删除,从而实现回收磁盘空间的目的

消费者

  1. 点对点模型(Peer to Peer,P2P):同一条消息只能被下游的一个消费者消费,其他消费者不能染指

  2. Kafka通过消费者组(Consumer Group)来实现P2P模型

  • 消费者组:多个消费者实例共同组成一个组来消费一组主题
  • 这组主题中的每个分区都只会被组内的一个消费者实例消费,其他消费者实例不能消费它
  • 消费者对分区有所有权
  1. 引入消费者组的目的:提高消费者端的吞吐量(TPS)

  2. 消费者实例(Consumer Instance):即可以是运行消费者应用的进,也可以是一个线程

  3. 重平衡(Rebalance)

  • 若组内的某个实例挂了,Kafka能够自动检测到,然后把这个挂掉的实例之前负责的分区转移给组内其他存活的消费者
  • 重平衡引发的消费者问题很多,目前很多重平衡的Bug社区都无力解决
  1. 消费者位移(Consumer Offset):记录消费者当前消费到了分区的哪个位置,随时变化
  • 分区位移:表征的是消息在分区内的位置,一旦消息被成功写入到一个分区上,消息的分区位移就固定

小结

  1. 消息(Record):消息是Kafka处理的主要对象

  2. 主题(Topic):主题是承载消息的逻辑容器,实际使用中多用来区分具体的业务

  3. 分区(Partition):一个有序不变的消息序列,每个主题下有多个分区

  4. 消息位移(Offset):也叫分区位移,表示一条消息在分区中的位置,是一个单调递增且不变的值

  5. 副本(Replica)

  • Kafka中同一条消息能够被拷贝到多个地方以提供数据冗余
  • 副本分为领导者副本和追随者副本,副本在分区的层级下,每个分区可配置多个副本实现高可用
  1. 生产者(Producer):向主题发布消息的应用程序

  2. 消费者(Consumer):从主题订阅消息的应用程序

  3. 消费者位移(Consumer Offset):表征消费者的消费进度,每个消费者都有自己的消费者位移

  4. 消费者组(Consumer Group):多个消费者实例共同组成一个组,同时消费多个分区以实现高吞吐

  5. 重平衡(Rebalance)

  • 消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅分区的过程
  • 重平衡是Kafka消费者端实现高可用的重要手段

写在最后

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

推荐阅读更多精彩内容