Kafka Streams DSL 拓扑命名的好处

问题描述 投票:0回答:1
  1. 如果没有状态存储并且只使用无状态操作,命名 Kafka 流处理器有什么好处吗?看起来唯一的好处就是漂亮的“Topology#desribe()”输出?

  2. 如果我使用有状态操作并使用状态存储,但每次运行应用程序时,我都会更改我的 application.id 并删除旧的状态存储 - 如果流中的 Kafka 处理器未命名,我会失去任何好处吗?

对我来说,感觉如果我在带有 java 的 Kafka 流中使用命名,并且每次拓扑更改时都更改 application.id,则没有任何好处,并且命名只会污染我的代码并使其难以阅读,相反我更愿意保留它干净的。据我了解,命名用于识别拓扑更改,因此状态存储可以相应地刷新。

apache-kafka apache-kafka-streams
1个回答
0
投票
  1. 是的,在这种情况下,好处是改进了描述和日志。
  2. 您再次失去了日志的可读性。但你是对的,如果你改变
    application.id
    ,你将不会遇到未命名拓扑通常遇到的拓扑演化问题。

通常,最好的做法是命名处理器,请参阅 https://docs.confluence.io/platform/current/streams/developer-guide/dsl-topology-naming.html。在您的受限情况下,唯一的好处是提高代码和日志之间的相关性 - 这通常是有意义的,因为大多数应用程序的维护时间比开发时间长得多,因此日志的可读性胜过代码的紧凑性。显然,最终取决于你。

© www.soinside.com 2019 - 2024. All rights reserved.