02快速搞定kafka术语
Posted 2021-04-26 01:40 +0800 by ZhangJie ‐ 1 min read
kafka属于分布式的消息引擎系统,主要功能是提供一套完备的消息发布与订阅解决方案:
发布的订阅的对象是主题,topic;
client端
- 消息的生产者,producer;
- 消息的消费者,consumer;
server端
- broker
- 一个broker集群有多个broker,将多个broker部署在多台机器上,当其中一个挂了,另一个broker也依然能对外提供服务,这就是kafka实现高可用的手段之一。
备份机制,replication
副本,replica,相同的数据在被存储到多台机器上
领导者副本(leader replica),对外提供服务(与客户端交互)
追随者副本(follower replica),只能被动地跟随领导者副本,不与外界交互
追随者副本请求领导者副本,把最新的更新操作发送给它,以完成同步
可伸缩性
- 将每个topic,划分成多个分区(partition),分区编号从0开始;
- 副本是在分区这个层级定义的,即每个分区可以定义副本的数量;
topic :每个主题可以包含多个分区
\
partition:每个分区可以配置多个副本
\
replica (leader/follower):每个分区的多个副本中只能有一个为leader,对外服务
\
offset:消息曾,分区中包含若干条消息,每条消息的位移从0开始,依次递增
client只能与分区的leader replica进行通信。
消费组里面可以订阅
kafka broker通过追加写,来实现持久化,来避免缓慢的随机IO操,利用了比较好的顺序写操作。
再来回顾下这里的常见术语:
消息:Record。Kafka 是消息引擎嘛,这里的消息就是指 Kafka 处理的主要对象。
主题:Topic。主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。
分区:Partition。一个有序不变的消息序列。每个主题下可以有多个分区。
消息位移:Offset。表示分区中每条消息的位置信息,是一个单调递增且不变的值。
副本:Replica。Kafka 中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本是在分区层级下的,即每个分区可配置多个副本实现高可用。
生产者:Producer。向主题发布新消息的应用程序。
消费者:Consumer。从主题订阅新消息的应用程序。
消费者位移:Consumer Offset。表征消费者消费进度,每个消费者都有自己的消费者位移。
消费者组:Consumer Group。多个消费者实例共同组成的一个组,同时消费多个分区以实现高吞吐。
重平衡:Rebalance。消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。Rebalance 是 Kafka 消费者端实现高可用的重要手段。