<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://wiki.eijux.com/index.php?action=history&amp;feed=atom&amp;title=Kafka%EF%BC%9A%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B</id>
	<title>Kafka：工作流程 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.eijux.com/index.php?action=history&amp;feed=atom&amp;title=Kafka%EF%BC%9A%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B"/>
	<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Kafka%EF%BC%9A%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B&amp;action=history"/>
	<updated>2026-04-29T08:57:39Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.38.2</generator>
	<entry>
		<id>http://wiki.eijux.com/index.php?title=Kafka%EF%BC%9A%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B&amp;diff=3566&amp;oldid=prev</id>
		<title>Eijux：​建立内容为“category:Kafka  == 关于 == Kafka 只是分为一个或多个分区的主题的集合。 * Kafka 集群中的所有数据都是不相连的分区联合。 *…”的新页面</title>
		<link rel="alternate" type="text/html" href="http://wiki.eijux.com/index.php?title=Kafka%EF%BC%9A%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%A8%8B&amp;diff=3566&amp;oldid=prev"/>
		<updated>2021-05-17T12:23:59Z</updated>

		<summary type="html">&lt;p&gt;建立内容为“&lt;a href=&quot;/%E5%88%86%E7%B1%BB:Kafka&quot; title=&quot;分类:Kafka&quot;&gt;category:Kafka&lt;/a&gt;  == 关于 == Kafka 只是分为一个或多个分区的主题的集合。 * Kafka 集群中的所有数据都是不相连的分区联合。 *…”的新页面&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[category:Kafka]]&lt;br /&gt;
&lt;br /&gt;
== 关于 ==&lt;br /&gt;
Kafka 只是分为一个或多个分区的主题的集合。&lt;br /&gt;
* Kafka 集群中的所有数据都是不相连的分区联合。&lt;br /&gt;
* Kafka '''分区是消息的线性有序序列'''，其中每个消息由它们的索引（称为偏移）来标识，传入消息写在分区的末尾。&lt;br /&gt;
* 通过将消息复制到不同的代理提供'''持久性'''。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Kafka 以快速，可靠，持久，容错和零停机的方式提供基于 '''pub-sub''' 和 '''队列''' 的消息系统。 在这两种情况下，生产者只需将消息发送到主题，消费者可以根据自己的需要选择任何一种类型的消息传递系统。 &lt;br /&gt;
* Kafka 将以非常简单和高效的方式提供两个系统中最好的。&lt;br /&gt;
&lt;br /&gt;
=== “发布/订阅消息”的工作流程【？？？】 ===&lt;br /&gt;
'''Pub-Sub''' 消息的工作流程：&lt;br /&gt;
# 生产者定期向主题发送消息。&lt;br /&gt;
# Kafka 代理存储“为该特定主题配置的分区”中的所有消息。&lt;br /&gt;
#* 它确保消息在分区之间平等共享：如果生产者发送两个消息并且有两个分区，Kafka 将在第一分区中存储一个消息，在第二分区中存储第二消息。&lt;br /&gt;
# 消费者订阅特定主题。&lt;br /&gt;
#* 一旦消费者订阅主题，'''Kafka 将向消费者提供主题的当前偏移'''，并且还将偏移保存在 Zookeeper 系统中。&lt;br /&gt;
#* 消费者将定期请求 Kafka（如100 Ms）新消息。&lt;br /&gt;
# 一旦 Kafka 收到来自生产者的消息，它将这些消息转发给消费者。&lt;br /&gt;
# 消费者将收到消息并进行处理。&lt;br /&gt;
#* 一旦消息被处理，消费者将向 Kafka 代理发送确认。&lt;br /&gt;
# 一旦 Kafka 收到确认，它'''将偏移更改为新值，并在 Zookeeper 中更新它'''。&lt;br /&gt;
#* 由于偏移在 Zookeeper 中维护，消费者可以正确地读取下一封邮件，即使在服务器暴力期间。&lt;br /&gt;
&lt;br /&gt;
以上流程将重复，直到消费者停止请求。&lt;br /&gt;
&lt;br /&gt;
* 消费者可以随时回退/跳到所需的主题偏移量，并阅读所有后续消息。&lt;br /&gt;
&lt;br /&gt;
=== “队列消息”（用户组）的工作流【？？？】 ===&lt;br /&gt;
在“'''队列消息传递系统'''”而不是单个消费者中，具有相同组 ID 的一组消费者将订阅主题。&lt;br /&gt;
: 简单来说，订阅“具有相同 Group ID ”的主题的消费者被认为是单个组【？】，并且'''消息在它们之间共享'''。【？？？】&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
工作流程：&lt;br /&gt;
# 生产者以固定间隔向某个主题发送消息。&lt;br /&gt;
# Kafka 存储“为该特定主题配置的分区”中的所有消息。（类似于前面的方案）&lt;br /&gt;
# 单个消费者订阅特定主题，假设订阅 Topic-01 的 Group ID 为 Group-1 。&lt;br /&gt;
# Kafka 以与“发布/订阅消息”相同的方式与消费者交互，直到新消费者以相同的组 ID 订阅相同主题 Topic-01  1 。【？？？】&lt;br /&gt;
# 一旦新消费者到达，Kafka 将其操作切换到'''共享模式'''，并在两个消费者之间共享数据。【？？？】&lt;br /&gt;
#* 一旦消费者的数量超过分区的数量，新消费者将不会接收任何进一步的消息，直到现有消费者取消订阅任何一个消费者。&lt;br /&gt;
#*: 出现这种情况是因为 Kafka 中的每个消费者将被分配至少一个分区，并且一旦所有分区被分配给现有消费者，新消费者将必须等待。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
此功能也称为“'''使用者组'''”。&lt;br /&gt;
&lt;br /&gt;
=== ZooKeeper 的作用 ===&lt;br /&gt;
Apache Kafka 的一个关键依赖是 Apache Zookeeper，它是一个分布式配置和同步服务。&lt;br /&gt;
* Zookeeper 是 Kafka Broker 和 Consumer 之间的协调接口。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Kafka 服务器通过 Zookeeper 集群共享信息：Kafka 在 Zookeeper 中存储基本元数据，例如关于主题，代理，消费者偏移(队列读取器)等的信息。&lt;br /&gt;
#* 由于所有关键信息存储在 Zookeeper 中，并且它通常在其整体上复制此数据，因此 Kafka Broker / Zookeeper 的故障不会影响 Kafka 集群的状态，一旦 Zookeeper 重新启动，Kafka 将恢复状态。&lt;br /&gt;
#* 这为 Kafka 带来了零停机时间。&lt;br /&gt;
# Kafka Broker 之间的 Leader 选举也通过使用 Zookeeper 在 Leader 失败的情况下完成。&lt;/div&gt;</summary>
		<author><name>Eijux</name></author>
	</entry>
</feed>