3.2. 复制用于高可用性的主题
基本主题属性为主题设置默认分区和复制因素数量,该主题适用于在没有显式设置这些属性的情况下创建的主题,包括何时自动创建主题。
# ... num.partitions=1 auto.create.topics.enable=false default.replication.factor=3 min.insync.replicas=2 replica.fetch.max.bytes=1048576 # ...
对于高可用性环境,建议将复制因素增加到至少 3 个主题,并将所需的最少同步副本数设置为复制因素减 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 # ...