5.2.2.5. 处理主题的更改
Topic Operator 需要解决的一个根本问题是没有单一的事实来源: KafkaTopic
资源和 Kafka 主题都可以独立于主题 Operator 进行修改。复杂的情况是,Topic Operator 可能无法实时观察每个末尾的更改。例如,当主题 Operator 停机时。
为解决这个问题,主题 Operator 会维护主题存储中每个主题的信息。当 Kafka 集群或 OpenShift 中发生更改时,它会同时查看其他系统和主题存储的状态,以确定需要更改什么内容才能保持所有同步。只要 Topic Operator 启动并在运行期间定期进行同样的操作。
例如,假设 Topic Operator 没有运行,并创建一个名为 my-topic 的 KafkaTopic
。当主题 Operator 启动时,主题存储不包含有关 my-topic 的信息,因此它可以推断 KafkaTopic
是在上次运行后创建的。Topic Operator 会创建与 my-topic 对应的主题,并将 my-topic 的元数据存储在主题存储中。
如果您更新 Kafka 主题配置或通过 KafkaTopic
自定义资源应用更改,则在 Kafka 集群协调后会更新主题存储。
主题存储还允许主题 Operator 管理在 Kafka 主题中更改主题配置并通过 OpenShift KafkaTopic
自定义资源 进行更新 的场景,只要更改不兼容。例如,可以对同一主题配置键进行更改,但更改不同的值。对于不兼容的更改,Kafka 配置将具有优先权,并且会相应地更新 KafkaTopic
。
您还可以通过 oc delete -f KAFKA-TOPIC-CONFIG-FILE
命令使用 KafkaTopic
资源删除主题。要做到这一点,在 Kafka 资源的 spec.kafka.config 中必须将
设置为 delete.topic.
enabletrue
(默认)。