周口建设局网站,雷州市网站建设,单位网站建设与管理,海门建设厅网站1.定义 Kafka#xff1a;一个分布式基于发布/订阅模式的消息队列。 发布者发布消息进入队列后#xff0c;每个订阅者都能在一定时间内获取发布的消息#xff08;Kafka#xff1a;消费者通过主动拉取pull队列#xff09;。
缺点#xff1a;即使没有消息#xff0c;消费者…1.定义 Kafka一个分布式基于发布/订阅模式的消息队列。 发布者发布消息进入队列后每个订阅者都能在一定时间内获取发布的消息Kafka消费者通过主动拉取pull队列。
缺点即使没有消息消费者仍然需要轮询消息队列
pull模式可以根据 Consumer的消费能力以适当的速率消费消息消费的方式、速率可以由消费者制定。
2.作用
解耦程序请求结束后可直接返回无需等待任务执行。 程序与执行独立。缓冲解决生产信息与消费信息处理速度不一致的情况峰值处理能力应对突发访问量剧增的情况异步通信
3.Kafka架构 Kafka主要分为生产者、Kafka集群、消费者三大部分。
集群由多个Broker代理服务器组成消息以Topic主题为分类较大的主题可以分为多个Partition分区。由于分布式存储的缘故每个分区都会成为leader/follower的一种数据只从leader分区进行传输follower分区仅作为备份。
消费者可以组成消费者组Consumer group每一个消费组都能够获得全量的消息同一个消费者组中只有1个人可以获得相同的消息队列中的消息提高并发。一般情况下一个应用对应着一个消费组。
消息队列中的offset偏移量记录现在接收到第几条消息了在0.9版本之前存储在ZK中在之后存储在Kafka集群中的系统Topic中因为消费者拉取消息时会频繁的跟ZK进行交互影响效率。
4.存储方式
Kafka的消息数据是存放在于磁盘上的。因为经过对磁盘读写的一系列优化磁盘的顺序读取速度内存随机访问速度。
在文件中的实际存储是以Partition作为单位的文件夹的命名规则topic_name-partition_id 假设我们现在 Kafka 集群只有一个 Broker我们创建 2 个 Topic 名称分别为「topic1」和「topic2」Partition 数量分别为 1、2那么我们的根目录下就会创建如下三个文件夹
| --topic1-0
| --topic2-0
| --topic2-1当客户端写入消息时文件夹下会生成Segment文件(包含log、index两部分)log文件是消息的内容index是消息的索引。 消息的写入Partition的写入为尾部追加这样的顺序写磁盘操作让 Kafka 的效率非常高。 消息的删除消息被消费后不会立即删除只会定期删除过期的Segment文件。
5.docker创建集群kraft版 无zookeeper
Docker单机部署kafka集群https://www.jianshu.com/p/67a903d6c44c Docker多机部署kafka集群https://www.cnblogs.com/linjiangplus/p/16424137.html 未完待续…
参考 https://zhuanlan.zhihu.com/p/74063251