聊聊kafka 之kafka的基本概念

在对 Kafka 基本体系结构有了 定了解后,本节我们对 Kafka 的基本概念进行详细阐述

l. 主题

Kafka 组消息抽象归纳为 个主题( Topic ),也就是说,一个主题就是对消息的分类。生产者将消息发送到特定主题,消费者订阅主题或主题的某些分区进行消费。

2. 消息

消息是 Kafka 通信的基本单位,由 个固定长度的消息头和 个可变长度的消息体构成,在老版本中,每 条消息称为 Message

3. 分区和副本

Kafka 组消息归纳为 个主题,而每个主题又被分成 个或多个分区( Partition个分区由 系列有序、不可变的消息组成,是一个有序队列。每个分区在物理上对应为 个文件夹,分区的命名规则为主题名称后接“一”连接符,之后再接分区编号,分区编号从 开始,编号最大值为分区的总数减 每个分区又有 至多个副本( Replica ),分区的副本分布在集群的不同代理上,以提高可用性 从存储角度上分析,分区的每个副本在逻辑上抽象为一个日志( Log )对象,即分区的副本与日志对象是一一对应。每个主题对应的分区数可以在 Kafka 启动时所加载的配置文件中配置,也可以在创建主题时指定 。当然,客户端还可以在主题创建后修改主题的分区数。

分区使得 Kafka 在井发处理上变得更加容易,理论上来说,分区数越多吞吐 越高,但这要根据集群实际环境及业务场景而定。同时,分区也是 Kafka 保证消息被顺序消费以及对消息进行负载均衡的基础。

Kafka 只能保证 个分区之内消息的有序性,并不能保证跨分区消息的有序性 每条消息被追加到相应的分区中,是顺序写磁盘,因此效率非常高,这是 Kafka 高吞吐率的 个重要保证。同时与传统消息系统不同的是, Kafka 并不会立即删除已被消费的消息,由于磁盘的限制消息也不会 直被存储(事实上这也是没有必要的),因此 Kafka 提供两种删除老数据的策略,一种是基于消息己存储的时间长度, 第二种是基于分区的大小。这两种策略都能通过配置文件进行配配置。

4. Leader 副本和 Follower 副本

由于 Kafka 副本的存在,就需要保证 个分区的多个副本之间数据的 致性, Kafka 会选择该分区的 个副本作为 Leader 副本,而该分区其他副本即为 Follower 副本,只有 Leader本才负责处理客户端读/写请求, Follower 副本从 Leader 副本同步数据 如果没有 Leader 副本,那就需要所有的副本都同时负责读/写请求处理,同时还得保证这些副本之间数据的 致性,假设有 个副本则需要有 条通路来同步数据,这样数据的一致性和有序性就很难保证引入 Leader 副本后客户端只需与 Leader 副本进行交互,这样数据一致性及顺序性就有了保证 Follower 副本从 Leader 副本同步消息,对于 个副本只需 n-1 条通路即可,这样就使得系统更加简单而高效。副本 Follower Leader 的角色并不是固定不变的,如果 Leader 失效,通过相应的选举算法将从其他 Follower 副本中选出新的 Leader 副本。

5. 偏移量

任何发布到分区的消息会被直接追加到日志文件(分区目录下以" .log ”为文件名后缀的 数据文件〉的尾部,而每条消息在日志文件中的位置都会对应一个按序递增的偏移 。偏移量个分区下严格有序的逻辑值,它并不表示消息在磁盘上的物理位置 由于 Kafka 几乎不允

许对消息进行随机读写,因此 Kafka 并没有提供额外索引机制到存储偏移 ,也就是说并不会给偏移量再提供索引。消费者可以通过控制消息偏移量来对消息进行消费,如消费者可以指定消费的起始偏移量。为了保证消息被顺序消费 消费者己消费的消息对应的偏移量也需要保存需要说明 的是,消费者对消息偏移量的操作并不会影响消息本身的偏移量。 旧版消费者将消费

偏移量保存到 ZooKeeper 当中,而新版消费者是将消费偏移量保存到 Kafka 内部 个主题当中当然,消费者也可以自己在外部系统保存消费偏移 ,而无需保存到 Kafka

6. 日志段

1个日志又被划分为多个日志段( LogSegment ),日志段是 Kafka 日志对象分片的最小单。与 日志对象 样,日志段也是 个逻辑概念, 个日志段对应磁盘上 体日志文件和两个索引文件。日志文件是以 .log ”为文件名后缀的数据文件,用于保存消息实际数据。1个索引文件分别以“ .index ”和“ timeindex ”作为文件名后缀,分别表示消息偏移量索 引文件和消息时间戳索引文件。

7. 代理

Kafka 基本体系结构中我 提到了 Kafka 集群 Kafka 集群就是由一个或多个 Kafka例构成,我们将每一个 Kafka 实例称为代理( Broker ),通常也称代理为 Kafka 服务器( KafkaServer 。在生产环境中 Kafka 集群 般包括一台或多台服务器,我们可以在一台服务器上配置 个或多个代理。每 个代理都有唯 的标识 id ,这个 id 个非负整数。在一 Kafka集群中,每增加 个代理就需要为这个代理配置 个与该集群中其他代理不同的 id, id 值可以选择任意非负整数即可,只要保证它在整个 Kafka 集群中唯 ,这个 id 就是代理的名字,也就是在启动代理时配置的 broker.id 对应的值,因此在本书中有时我们也称为 brokerId 由于给每个代理分配了不同的 brokerId ,这样对代理进行迁移就变得更方便,从而对消费者来说是透明不会影响消费者对消息的消费。

8. 生产者

生产者(Producer )负责将消息发送给代理,也就是向 Kafka 理发送消息的客户端

9. 消费者和消费纽

消费者( omsumer )以拉取( pull )方式拉取数据,它是消费的客户端。在 Kafka 每一个消费者都属于 个特定消费组( ConsumerGroup ),我们可以为每个消费者指定 个消费组,groupld 表消费组名称,通过 group.id 置设置 如果不指定消费组,则该消费者属于默认消费组 test-consumer-group 同时,每个消费者也有 个全局唯 通过配置项 client.id指定,如果客户端没有指定消费者的 id, Kafka 会自动为该消费者生成 个全局唯 id ,格式为$ {groupld }-$ {hostN ame }-$ {times tamp}-$ {UUID 字符}。同一个主题的一条消息只能被同 个消费组下某 个消费者消费,但不同消费组的消费者可同时消费该消息 消费组是 Kafka 用来实现对 题消息进行广播和单播的手段,实现消息广播只需指定各消费者均属于不同的消费组,消息单播则只 让各消费者属于同 个消费组

10. ISR

Kafka ZooKeeper 中动态维护了 IS (In-sync Replica ),即保存同步的副本列表,列表中保存的是与 Leader 副本保持消息同步的所有副本对应的代理节点 id 如果 Follower副本岩机(本书用岩机来特指某个代理失效的情景,包括但不限于代理被关闭,如代理被人为关闭或是发生物理故障、心跳检测过期、网络延迟、进程崩溃等)或是落后太多,则该 Follower副本节点将从 ISR 列表中移除

11. ZooKeeper

Kafka 利用 ZooKeeper 保存相应元数据信息, Kafka 元数据信息包括如代理节点信息、 Kafka集群信息、旧版消费者信息及其消费偏移量信息、主题信息、分区状态信息、分区副本分配方案信息、动态配置信息等。 Kafka 在启动或运行过程当中会在 ZooKeeper 上创建相应节点来保存元数据信息, Kafka 通过监昕机制在这些节点注册相应监听器来监昕节点元数据的变化,从而由 ZooKeeper 负责管理维护 Kafka 集群,同时通过 ZooKeeper 我们能够很方便地对 Kafka群进行水平扩展及数据迁移。

好了,kafka基本概念已经讲完

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