我正在运行5个ksqldb实例(K8s),每个实例线程(ksql服务器属性) num是3
我实现了udaf函数来聚合一个简单的map对象,使用这个udaf函数。当在集群环境中通过联非新议程功能聚合每分钟10,000多个数据时,不会发生数据损坏。我猜udfa函数似乎能保证并发性,对吗?
我还有一个问题,我目前正在k8s环境中运行一个ksqldb实例。即使在重新启动的情况下,ksqldb的表聚合数据也能正常工作而不会丢失吗?
发布于 2022-03-30 13:29:40
为了回答您的第一个问题,ksqlDB创建了一个名为UDAFs的新实例,并以单线程方式使用它们;ksqlDB不重复使用UDAFs。
这意味着如果你作为一个实现者写一个不使用全局状态的联非新议程,那么,“是”,你的联非新议程应该是线程安全的。
至于你的第二个问题,我相信答案是“是”。UDAFs使用聚合函数将中间状态持久化到状态存储;当重新启动ksqlDB节点时,应该恢复该状态。
尽管如此,从技术上讲,无论是哪种情况,人们都可以编写一个联非新议程,它不能保证线程安全,或者做一些非常奇怪的事情,而且无法正常恢复。
https://stackoverflow.com/questions/71659401
复制相似问题