我们应该 运行 一个具有 3 个副本的 Kafka 节点还是具有 1 个副本的 3 个 Kafka 节点?
Should we run a Kafka node with 3 replicas or 3 Kafka nodes with 1 replica?
我不明白 运行1 个具有 3 个副本的 Kafka 节点和 3 个每个具有 1 个副本的 Kafka 节点之间的区别。
我们维护我们自己的 Kubernetes 集群,我们希望 运行 一个 Kafka 集群。我们正在使用 Bitnami Helm chart。
我们可以设置:
- ...3 个不同的 Kafka 服务,有 1 个副本,每个都有自己的 URL(例如 localhost:9092、localhost:9093 和 localhost:9094)。
- ...1 Kafka 服务 运行ning 在 3 个副本中(所有副本只有 1 URL localhost:9092)。
在同步方式上有什么不同吗?更好的配置方式是什么?
具有 3 个副本的 1 个 Kafka 节点在同一台机器上。数据将存储在同一台服务器上。在同一个 Kafka 服务器上复制是为了创建一个安全性以避免数据被破坏。
大约 3 个 kafka 和 1 个副本是另一种方法。例如,如果您的一台服务器宕机,如果所有数据都从同一主题复制,则另一个 Kafka 可以担任特定主题的领导者位置。这是卡夫卡的美之一。如果您以正确的方式配置,Zookeeper 可以进行替换并且您的服务不会崩溃。
你可以在生产中做的最佳实践之一是创建两个动物园管理员(领导选举人),将 3 或 4 个卡夫卡放在不同的机器上,每个卡夫卡有 3 个副本因子。这将在您的数据中创建强一致性,同样,如果一个或两个服务器出现故障,您的 kafka 将以某种安全的方式 运行。
这件事发生在我身上。 4 卡夫卡,2 下来,一切仍然 运行 宁完美。此外,一些细节需要放在配置上。建议你看看Stephane Maarek on YT。
为了为多个消费者提供高可用性并利用 Kafka 的并行性,您应该向上扩展,我建议使用 3 个服务器。
多个 broker 设置将针对同一主题分布 messages/partitions 到不同的 broker,因此一个消费者组可以以高并行度接收来自不同 broker 的消息。
此外,请注意复制只能帮助您实现高可用性,因此分区 replica/s 将在服务器出现故障时起主导作用。
对于 3 节点集群,我建议从 2 个副本开始,这样一台服务器故障根本不会导致消息丢失;如果可用性对您非常重要,或者您不信任您的硬件,请使用 3 个副本,这样您可以同时承受两次关机,但会损害服务器上的更多磁盘 space。
我不明白 运行1 个具有 3 个副本的 Kafka 节点和 3 个每个具有 1 个副本的 Kafka 节点之间的区别。
我们维护我们自己的 Kubernetes 集群,我们希望 运行 一个 Kafka 集群。我们正在使用 Bitnami Helm chart。
我们可以设置:
- ...3 个不同的 Kafka 服务,有 1 个副本,每个都有自己的 URL(例如 localhost:9092、localhost:9093 和 localhost:9094)。
- ...1 Kafka 服务 运行ning 在 3 个副本中(所有副本只有 1 URL localhost:9092)。
在同步方式上有什么不同吗?更好的配置方式是什么?
具有 3 个副本的 1 个 Kafka 节点在同一台机器上。数据将存储在同一台服务器上。在同一个 Kafka 服务器上复制是为了创建一个安全性以避免数据被破坏。
大约 3 个 kafka 和 1 个副本是另一种方法。例如,如果您的一台服务器宕机,如果所有数据都从同一主题复制,则另一个 Kafka 可以担任特定主题的领导者位置。这是卡夫卡的美之一。如果您以正确的方式配置,Zookeeper 可以进行替换并且您的服务不会崩溃。
你可以在生产中做的最佳实践之一是创建两个动物园管理员(领导选举人),将 3 或 4 个卡夫卡放在不同的机器上,每个卡夫卡有 3 个副本因子。这将在您的数据中创建强一致性,同样,如果一个或两个服务器出现故障,您的 kafka 将以某种安全的方式 运行。
这件事发生在我身上。 4 卡夫卡,2 下来,一切仍然 运行 宁完美。此外,一些细节需要放在配置上。建议你看看Stephane Maarek on YT。
为了为多个消费者提供高可用性并利用 Kafka 的并行性,您应该向上扩展,我建议使用 3 个服务器。
多个 broker 设置将针对同一主题分布 messages/partitions 到不同的 broker,因此一个消费者组可以以高并行度接收来自不同 broker 的消息。
此外,请注意复制只能帮助您实现高可用性,因此分区 replica/s 将在服务器出现故障时起主导作用。
对于 3 节点集群,我建议从 2 个副本开始,这样一台服务器故障根本不会导致消息丢失;如果可用性对您非常重要,或者您不信任您的硬件,请使用 3 个副本,这样您可以同时承受两次关机,但会损害服务器上的更多磁盘 space。