Kafka-1-架构

Kafka-1-架构,第1张

Kafka-1-架构 一,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,多个不同的消费者组可以订阅同一个Topic2,通过消费者实现点对点消费模式,一个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控制消息被消费情况

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5706392.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存