首页 文章

Siddhi分布式缓存模式部署

提问于
浏览
0

根据文档(https://docs.wso2.org/display/CEP310/Clustered+Deployment),您可以在分布式模式下运行Siddhi .

据我所知,所有节点将共享流定义并在共享上下文(流,查询,事件......)上运行 .

但我不能把它付诸实践:

  • 使用2.0.0-wso2v4版本

  • 我编写了一个简单的程序,启动了两个启用了分布式处理的siddhiManagers .

  • 程序在siddhiManager1中创建流和查询

  • 添加在两个管理器中打印事件的流回调(上一个流)

  • 在siddhiManager1中发送事件

  • 在siddhiManager1和siddhiManager2中打印流

结果是:

  • 我可以看到Hazelcast工作,每个经理看到另一个 .

  • siddhiManager1有一个流,一个查询并打印一个事件 .

  • siddhiManager2没有任何内容 .

我已经通过使用siddhi-distribution(fat-jar)进行了测试,但也使用了siddhi-api,siddhi-core和siddhi-query jar .

Siddhi-distribution fat-jar里面有一些与Hazelcast有关的xml,但是我可以看到这些配置没有加载,在源代码(github)中我没有看到这些文件有什么特别之处(siddhiManager) .

关于如何在分布式缓存模式部署中运行siddhi的任何想法?我究竟做错了什么?

1 回答

  • 1

    Siddhi不会通过Hazelcast复制工件(查询,流定义) . 它仅共享引擎的事件/状态 . 因此,为了使其正常工作,您必须首先在分布式设置中的所有Siddhi实例中单独同步这些查询/流定义 . 一旦你有了这些,你将能够使它在分布式模式下工作 .

    请注意,上述说明假设您仅使用没有WSO2 CEP产品的Siddhi库 . 在WSO2 CEP中,有一种机制可以在分布式设置中的节点之间同步这些部署工件 .

相关问题