0
点赞
收藏
分享

微信扫一扫

Kafka-1-架构

雷亚荣 2022-01-12 阅读 69

一,Kafka的组成

1,Producer

Kafka常被用做消息引擎,是一个高并发、高吞吐的消息读写系统,Producer是将消息从外部写入Kafka系统的组件。

任何外部系统生成的消息都要通过Producer才能将消息写入Kafka。

常见的场景有:

  • 通过Canal、Debezium等实时订阅Mysql的日志,解析为固定格式的文本消息,通过Kafka提供的Producer API写入Kafka。
  • 业务系统打印的日志通过日志系统进行收集,收集之后调用Producer API写入Kafka。

2,Consumer

仅仅把消息存储在文件系统,是远远不够的,还需要提供一种读取消息的能力,Kafka通过Consumer对外提供消息读取。

外部系统想要读取Kafka存储的消息,调用Consumer API即可。

Consumer可能有很多个,还可以根据需要对多个Consumer进行分组,称之为消费者组。

消费者组是Kafka非常巧妙的设计,通过消费者组将消息引擎的两种模式融合到一起,即提高点对点的生产-消费,也提供发布-订阅这种多对多的功能。

总结起来:

  • 1,通过消费者组实现发布-订阅,一个消费者组可以订阅多个Topic,多个不同的消费者组可以订阅同一个Topic
  • 2,通过消费者实现点对点消费模式,一个Topic的一个分区只能被一个消费者组的某一个消费者消费

3,Kafka集群

Kafka是一个C/S架构,Producer和Consumer消费者是C,Kafka集群是S。

Kafka集群相当于Producer和Consumer之间的中介,Producer将消息存放到Kafka集群,Consumer到指定位置取读取消息,Producer和Consumer不直接接触,就是所谓的解耦。

Kafka集群的主要工作是:

  • 接收来自Producer的消息保存请求
  • 根据消息的主题和分区将请求转发到分区Leader
  • 分区Leader将消息Append到文件系统
  • 分区Follower从Leader备份消息
  • 协调Producer端的事务,保证同一个事务的写入的原子性
  • 接收来自Consumer的消息读取请求
  • 根据Consumer订阅的消息的分区数和Consumer的个数,将消息分区与Consumer进行绑定,一个分区最多被一个Consumer消费,但一个Consumer可能消费多个分区
  • 记录各个消费者组对各个分区的消息的消费进度,通过这个进度即offset控制消息被消费情况
举报

相关推荐

【kafka】kafka基础架构

Kafka架构

Kafka 架构

[Kafka] Kafka基本架构

Kafka的架构

kafka架构详解

kafka基础架构

0 条评论