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 # ...