ksqldb 的自定义 udaf 函数是否保证并发(线程安全)?



我正在运行5个ksqldb实例(k8s(,每个实例线程(ksql服务器属性(的数量是3

我使用udaf函数实现了udaf函数来聚合一个简单的映射对象。当在集群环境中通过udaf函数每分钟聚合的数据超过10000条时,不会发生数据损坏。我的猜测是udfa函数似乎可以保证并发性,对吗?

我还有一个问题我目前正在k8s环境中运行一个ksqldb实例。ksqldb的表聚合数据即使在重新启动的情况下也能正常工作而不会丢失吗?

为了回答您的第一个问题,ksqlDB创建了一个名为UDAF的新实例,并以单线程方式使用它们;ksqlDB不重复使用UDAF。

这意味着,如果你作为一个实现器编写一个不使用全局状态的UDAF,那么;是";,您的UDAF应该是线程安全的。

对于你的第二个问题,我相信答案是";是的";。UDAF使用聚合函数来持久化中间状态到状态存储;应该在重新启动ksqlDB节点时恢复。

也就是说,从技术上讲,在任何一种情况下,都可以编写一个UDAF,它不能是线程安全的,或者做了一些非常奇怪的事情,无法正确恢复。

最新更新