3.2. 复制主题以实现高可用性


基本主题属性为主题设置默认分区数和复制因素,这些主题将应用于没有显式设置这些属性创建的主题,包括何时自动创建主题。

# ...
num.partitions=1
auto.create.topics.enable=false
default.replication.factor=3
min.insync.replicas=2
replica.fetch.max.bytes=1048576
# ...

对于高可用性环境,建议将复制因素增加到至少 3 个用于主题,并将最小 in-sync 副本数量设置为复制因素小 1。

auto.create.topics.enable 属性默认为启用,以便在生产者和消费者需要时自动创建不存在的主题。如果使用自动主题创建,您可以使用 num.partitions 为主题设置默认分区数量。但是,此属性会被禁用,以便通过显式主题创建为主题提供更多控制。

为了实现数据持久性,需要在 topic 配置中设置 min.insync.replicas,并在 producer 配置中使用 acks=all 来发送提交确认。

使用 replica.fetch.max.bytes 设置复制领导分区的每个后续程序获取的最大大小(以字节为单位)。根据平均消息大小和吞吐量更改这个值。在考虑读/写缓冲区所需的总内存分配时,可用内存也必须能适应所有后续者的最大复制消息大小。

delete.topic.enable 属性默认为启用,以允许删除主题。在生产环境中,您应该禁用此属性以避免意外删除主题,从而导致数据丢失。但是,您可以临时启用它并删除主题,然后再次禁用它。

注意

在 OpenShift 上运行 AMQ Streams 时,主题 Operator 可以提供 operator 风格的主题管理。您可以使用 KafkaTopic 资源来创建主题。对于使用 KafkaTopic 资源创建的主题,复制因素是使用 spec.replicas 设置的。如果启用了 delete.topic.enable,您也可以使用 KafkaTopic 资源删除主题。

# ...
auto.create.topics.enable=false
delete.topic.enable=true
# ...
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.