Apache kafka 卡夫卡

Apache kafka 卡夫卡,apache-kafka,Apache Kafka,如果我有一个特定应用程序的EMEA、APAC和NYC实例的全局配置,我希望有区域Kafka代理,所有代理都从一个中心单一主题复制,它们都用于输入,另一个用于输出数据 不过,我希望我的应用程序的每个区域实例都能与其所在区域的代理进行通信,因为纽约的应用程序与伦敦的代理进行通信会增加很多延迟 有没有一种方法可以通过卡夫卡配置实现这一点?据我所知,如果您有三个代理,跨越三个区域,只涉及一个主题,那么一个代理将是主要代理,其他代理将被复制 1) 这是否仍然意味着我可以只连接到本地代理并读取数据,而不必使

如果我有一个特定应用程序的EMEA、APAC和NYC实例的全局配置,我希望有区域Kafka代理,所有代理都从一个中心单一主题复制,它们都用于输入,另一个用于输出数据

不过,我希望我的应用程序的每个区域实例都能与其所在区域的代理进行通信,因为纽约的应用程序与伦敦的代理进行通信会增加很多延迟

有没有一种方法可以通过卡夫卡配置实现这一点?据我所知,如果您有三个代理,跨越三个区域,只涉及一个主题,那么一个代理将是主要代理,其他代理将被复制

1) 这是否仍然意味着我可以只连接到本地代理并读取数据,而不必使用其他区域代理,无论本地代理是leader还是replicated

2) 对于故障转移,比如说,如果纽约的代理宕机,我希望该应用程序能够作为辅助手段,尝试其他区域之一——尽管如果它重新联机,它会希望切换回本地区域。这可能吗


非常感谢

您可以创建一个包含3个分区的主题,并为每条消息使用不同的键(emea,
亚太地区
纽约
),以便根据应用程序的位置强制将消息放置在分区上。或者,您可以强制应用程序实例将消息推送到特定的分区,例如,在NYC中运行的实例将消息推送到分区0等

现在,要实现这一点,可能会很有用。在Kafka中创建新主题时,您只需要定义分区数和复制因子,而Kafka会自动处理它们在集群中的分布。但是,您可以使用复制工具强制执行此分配

2.2创建主题
该工具的作用是什么
默认情况下,如果在上将“auto.create.topics.enable”设置为true,则Kafka会自动创建主题 服务器。这将创建一个具有默认分区数的主题, 复制因子,并使用Kafka的默认方案进行复制 分配有时,我们可能需要 创建主题时自定义主题。此工具有助于创建主题 并指定分区数、复制因子和 主题的副本分配列表

如何使用该工具

# Create topic with default settings
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1

# Create topic with specific number of partitions and/or replicas
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --replication-factor 3 --partitions 3


# Create topic with manual replica assignment
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --replica-assignment 0:1:2,0:1:2,0:1:2

# Create topic with configuration override
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --config min.insync.replicas=1
# Increase number of partitions for topic
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic topic1 --partitions 4

# Increase number of partitions with specific replica assignment
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic topic1 --replica-assignment 0:1:2,0:1:2,0:1:2,2:1:0 --partitions 4
2.3在主题中添加分区
该工具的作用是什么?
在卡夫卡中,分区充当并行单元:单个主题的消息是 分布到多个分区,可以在这些分区上存储和服务 不同的服务器。创建主题时,分区的数量 对于此主题,必须指定。以后可能需要更多的分区 当此主题的数量增加时,需要此主题。这 该工具有助于为特定主题添加更多分区,并允许 添加分区的手动副本分配

如何使用该工具

# Create topic with default settings
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1

# Create topic with specific number of partitions and/or replicas
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --replication-factor 3 --partitions 3


# Create topic with manual replica assignment
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --replica-assignment 0:1:2,0:1:2,0:1:2

# Create topic with configuration override
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --config min.insync.replicas=1
# Increase number of partitions for topic
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic topic1 --partitions 4

# Increase number of partitions with specific replica assignment
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic topic1 --replica-assignment 0:1:2,0:1:2,0:1:2,2:1:0 --partitions 4
现在回答你的问题

1) 如果
--replication factor
设置为1,那么如果您定义了代理的主机,您将能够从纽约的代理读取数据。如果将
--replication factor
设置为3,则可以使用来自任何可用代理的消息

2) 当NYC代理失败时,另一个代理将成为分区负责人:

日志的分区分布在 Kafka群集,每个服务器处理数据和共享请求 分区的名称。每个分区都是跨可配置分区复制的 用于容错的服务器数

每个分区都有一台服务器,充当“领导者”和零或零 更多充当“追随者”的服务器。领导者处理所有的读和写操作 写入分区请求,而跟随者处于被动状态 复制领导者。如果领导者失败,其中一个追随者将失败 自动成为新的领导者。每台服务器都充当服务器的领导者 它的一些分区和其他分区的一个跟随器,因此负载很好 在集群内保持平衡


您可以创建一个包含3个分区的主题,并为每条消息使用不同的键(emea、
apac
nyc
)以便根据应用程序的位置强制将消息放置在分区上。或者,您可以强制应用程序实例将消息推送到特定的分区,例如,在NYC中运行的实例将消息推送到分区0等

现在,要实现这一点,可能会很有用。在Kafka中创建新主题时,您只需要定义分区数和复制因子,而Kafka会自动处理它们在集群中的分布。但是,您可以使用复制工具强制执行此分配

2.2创建主题
该工具的作用是什么
默认情况下,如果在上将“auto.create.topics.enable”设置为true,则Kafka会自动创建主题 服务器。这将创建一个具有默认分区数的主题, 复制因子,并使用Kafka的默认方案进行复制 分配有时,我们可能需要 创建主题时自定义主题。此工具有助于创建主题 并指定分区数、复制因子和 主题的副本分配列表

如何使用该工具

# Create topic with default settings
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1

# Create topic with specific number of partitions and/or replicas
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --replication-factor 3 --partitions 3


# Create topic with manual replica assignment
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --replica-assignment 0:1:2,0:1:2,0:1:2

# Create topic with configuration override
bin/kafka-topics.sh --create --zookeeper localhost:2181 --topic topic1 --config min.insync.replicas=1
# Increase number of partitions for topic
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic topic1 --partitions 4

# Increase number of partitions with specific replica assignment
bin/kafka-topics.sh --alter --zookeeper localhost:2181 --topic topic1 --replica-assignment 0:1:2,0:1:2,0:1:2,2:1:0 --partitions 4
2.3在主题中添加分区
该工具的作用是什么?
在卡夫卡中,分区充当并行单元:单个主题的消息是 分布到多个分区,可以在这些分区上存储和服务 不同的服务器。创建主题时,分区的数量 对于此主题,必须指定。以后可能需要更多的分区 当此主题的卷处于