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 消费者端实现高可用的重要手段。