一、Kafka 基本概念

1. Kafka是什么?

  • Kafka最初由LinkedIn公司使用Scala开发的一个分布式、多分区、多副本,基于ZK协调的内部基础设施,先已捐给Apache。
  • Kafka是一个流平台,主要用来发布和订阅数据流。
  • Kafka具有水平可伸缩性、容错性、快速性

2. Topic

  • Topic是Kafka的核心抽象,Topic是将信息记录到的某个类别或订阅源名称。
  • 可用来区分业务系统。
  • 特点
    • Topic始终是多用户的,即一个Topic可以有0个、1个或者多个订阅写入数据的consumer
    • 多个Producer可以向一个Topic当中发送消息。
    • 多个consumer可以消费同一个Topic中的消息

3. Producer

  • 消息的创造者,主要工作就是产生消息,然后发送给消息队列

4. Consumer

  • 消息的消费者

5. Broker

  • 物理概念,Kafka集群中每一个Kafka节点
  • 指的就是Kafka Server这个服务,可以把部署了KafkaServer的这台机器看做是一个Broker
  • Broker用来接收来自Producer的消息,为消息设置Offset,并把消息保存到磁盘


    image

6.Partition

  • 分区
  • 一个Topic可以分布到多个Broker上,一个Topic可以分为多个Partition,每个Partition都是一个FIFO有序队列
  • 一般情况下,Partition的数量设置为Broker数量的整数倍
  • 一个Partition只允许同一个ConsumerGroup的一个消费者消费,不允许同组多个Consumer同时消费一个Partition
  • 一个Partition\color{red}{只允许}同一个ConsumerGroup的一个消费者消费,\color{red}{不允许}同组多个Consumer同时消费一个Partition
  • \color{orange}{为什么设计分区?}
    • 为了并发读写,加快读写速度,这样可以极大的提高并发响应
    • 运用多分区的存储,利于数据的均衡
    • 加快数据的康复速率。一旦某台机器挂了,全部集群只需要康复一部分数据,可加快故障康复时间

7.Replication

  • 副本
  • 为保证集群中某个节点发送故障时,该节点上的Partition数据不丢失,而进行备份。
  • 一个Topic的每个Partition都有若干副本,一个Leader和若干个Follower
  • Leader只有一个,负责消息的读写,
  • \color{red}{即所有读写操作只能发生在Leader副本上}
  • Follower有多个,实时从Leader同步数据。当Leader发生故障时,某个Follower会成为新的Leader。

8. Segment

  • 一个Topic可以分为若干个Partition,Partition还可以细分为segment
  • 一个Partition物理上由多个segment组成
  • 每个Segment有.log和.index两个文件,每个log文件承载详细的数据,每条消息都有一个Offset
    • index文件是对log文件的索引。Consumer查找offset时运用二分法依据文件名去定位到哪个Segment,然后解析Message,匹配到对应的offset的Message
    • linux目录
    • 前20位数字代表offset偏移量
    • image

9. Consumer group

  • 消费者组。
  • 由多个Consumer组成,共享一个公共的id(group.id)
  • \color{red}{一条消息只能被同一个ConsumerGroup中的一个Consumer消费。}
  • \color{red}{一条消息可以被多个ConsumerGroup消费。}

10. Controller

  • 中央控制器
  • 多个Broker中,有一个会被选举为Controller
  • 管理整个集群的分区和监控副本的状态
  • 例:
    • Leader副本故障,由Controller负责为该Partition重新选举新的Leader副本。
    • 当检测到同步列表发生变化,由Controller通知集群中的所有Broker更新其元数据缓存信息
    • 当增加某个Topic分区的时候也会由Controller管理分区的重新分配工作。
  • 选举过程
    • 当broker启动的时候,都会创建KafkaController对象,但是集群中只能有一个leader对外提供服务
    • 这些每个节点上的KafkaController会在指定的zookeeper路径下\color{red}{创建临时节点},只有第一个成功创建的节点的KafkaController才可以成为leader,其余的都是follower。
    • 当leader故障后,所有的follower会收到通知,再次竞争在该路径下创建节点从而选举新的leader
    • image

11. ISR、OSR、AR、HW、LEO

ISR

  • In-Sync-Replicas,副本同步队列
  • 由Leader维护
  • 任意一个Follower超过同步阈值(replica.lag.time.max.ms),都会被剔除ISR

OSR

  • Outof-Sync-Replicas
  • 被剔除的Follower会存入OSR列表中
  • 新加入的Follower也会先存入OSR中

AR

  • AR = ISR + OSR

LEO

  • LogEndOffet
  • 表示每个Partition的log最后一条Message的位置

HW

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