kafka术语

Topic:发布订阅的对象称为主题(topic),可以为每个应用,每个业务甚至每个类创建专属的主题。

clients:生产者和消费者统称为clients。

  Producer:向主题发布消息的客户端应用称为生产者,生产者程序通常不断的向一个或多个主题发送消息。

  Consumer:订阅这些主题消息的客户端应用称为消费者,可同时订阅多个主题的消息。

Broker:Kafka服务器端,一个Kafka集群由多个broker组成。broker负责接收和处理客户端发送的请求,并对消息进行持久化处理。通常将多个broker分布于多台机器,提高其可用性。

Replication:实现高可用的另一个手段-备份机制。把相同的数据拷贝到多台机器上去。

  Replica:这些被拷贝到其他机器上的数据称为副本。

    Leader Replica:领导者副本,对外提供服务,直接与客户端进行交互。生产者总是向领导者副本写消息,消费者总是向领导者副本读消息。

    Follower Replica:追随者副本,不对外提供服务,被动追随领导者副本。只向领导者副本发送最新消息同步的请求,领导者副本将最新消息发送给追随者副本之后,两者之间保持同步。

Patition:分区,一个主题可以被划分为多个分区,分区编号从0开始,生产者生产的每条消息只会在一个分区中,假设有两个分区,该消息要么在0分区要么在1分区。每个分区下面配置多个副本,通常为一个领导者副本,N-1个追随者副本。生产者向分区写入消息,                    每条消息在分区中的位置信息由一个叫位移(Offset)的数据来表征。分区位移总是从 0 开始

总结来讲,三层消息架构:

  1)主题层,每个主题可以设置M个分区,每个分区可配置N个副本;

  2)分区层,每个分区配置N个副本,只有一个作为领导者副本对外提供服务,其余N-1个追随者副本只做数据冗余之用;

  3)消息层,分区中包含若干条消息,每条消息从位移0开始,依次递增。

数据持久化:使用磁盘上智能追加写的消息日志来保存数据,且只能追加写,避免了缓慢的随机IO操作;在底层Kafka将日志细分为多个日志段,消息被追加到最新的日志段中,写满后自动切分出新的日志段,将老的日志段封存起来,并定期检查老的日志段能否被删除。

分区位移与消费者位移:分区位移只分区内的消息位置,一旦消息被写到一个分区上其位移值就固定下来;消费者位移是随时变化的,因为其是消费者消费的进度指示。

posted @ 2022-08-29 19:08  夜雨声入眠  阅读(54)  评论(0编辑  收藏  举报