加入收藏 | 设为首页 | 会员中心 | 我要投稿 阜新站长网 (https://www.0418zz.com.cn/)- 管理运维、AI硬件、数据集成、云备份、负载均衡!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

今年网络安全漏洞总数将突破2万

发布时间:2021-02-18 15:05:06 所属栏目:外闻 来源:互联网
导读:producer 先从 zookeeper 的 /brokers/.../state节点找到该 partition 的 leader producer 将消息发送给该 leader leader 将消息写入本地 log followers 从 leader pull 消息,写入本地 log 后向 leader 发送 ACK leader 收到所有 ISR 中的 replication 的 A
  1. producer 先从 zookeeper 的 "/brokers/.../state"节点找到该 partition 的 leader
  2. producer 将消息发送给该 leader
  3. leader 将消息写入本地 log
  4. followers 从 leader pull 消息,写入本地 log 后向 leader 发送 ACK
  5. leader 收到所有 ISR 中的 replication 的 ACK 后,增加 HW(high watermark,最后 commit 的 offset)并向 producer 发送 ACK

2.1 写入方式

producer 采用推(push) 模式将消息发布到 broker,每条消息都被追加(append) 到分区(patition) 中,属于顺序写磁盘(顺序写磁盘效率比随机写内存要高,保障 kafka 吞吐率)。

2.2 分区(Partition)

消息发送时都被发送到一个 topic,其本质就是一个目录,而 topic 是由一些 Partition Logs(分区日志)组成

分区的原因:

方便在集群中扩展,每个 Partition 可以通过调整以适应它所在的机器,而一个 topic 又可以有多个 Partition 组成,因此整个集群就可以适应任意大小的数据了;

可以提高并发,因为可以以 Partition 为单位读写了。

分区的原则:

我们需要将 producer 发送的数据封装成一个 ProducerRecord 对象。


 

index文件 存储大量的索引信息,.log文件 存储大量的数据,索引文件中的元数据指向对应数据文件中 message 的物理偏移地址。

比如现在要查找偏移量 offset 为 3 的消息,根据 .index 文件命名我们可以知道,offset 为 3 的索引应该从00000000000000000000.index 里查找。根据上图所示,其对应的索引地址为 756-911,所以 Kafka 将读取00000000000000000000.log 756~911区间的数据。

二、Kafka 生产过程

Kafka 生产者用于生产消息。通过前面的内容我们知道,Kafka 的 topic 可以有多个分区,那么生产者如何将这些数据可靠地发送到这些分区?生产者发送数据的不同的分区的依据是什么?针对这两个疑问,这节简单记录下。

3.2.1 写入流程

producer 写入消息流程如下:


 

opic 是逻辑上的概念,而 patition 是物理上的概念,每个 patition 对应一个 log 文件,而 log 文件中存储的就是 producer 生产的数据,patition 生产的数据会被不断的添加到 log 文件的末端,且每条数据都有自己的 offset。

消费组中的每个消费者,都是实时记录自己消费到哪个 offset,以便出错恢复,从上次的位置继续消费。

消息存储原理

由于生产者生产的消息会不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采取了分片和索引机制,将每个 partition 分为多个 segment。每个 segment 对应两个文件——.index文件和 .log文件。这些文件位于一个文件夹下,该文件夹的命名规则为:topic名称+分区序号。

如下,我们创建一个只有一个分区一个副本的 topic



 

(编辑:阜新站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读