【问题标题】:Siddhi Distributed Cache Mode DeploymentSiddhi 分布式缓存模式部署
【发布时间】:2014-04-07 22:55:22
【问题描述】:

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

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

但我不能让它工作:

  1. 使用 2.0.0-wso2v4 版本
  2. 我编写了一个简单的程序,该程序启动两个启用分布式处理的 siddhiManager。
  3. 程序在 siddhiManager1 中创建一个流和一个查询
  4. 添加在两个管理器(上一个流)中打印事件的流回调
  5. 在 siddhiManager1 中发送事件
  6. 在 siddhiManager1 和 siddhiManager2 中打印流

结果是:

  • 我可以看到 Hazelcast 工作,每个经理看到另一个。
  • siddhiManager1 有一个流、一个查询并打印一个事件。
  • siddhiManager2 没有任何内容。

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

Siddhi-distribution fat-jar 内部有一些与 Hazelcast 相关的 xml,但据我所知,这些配置没有被加载,并且在源代码 (github) 中我没有看到这些文件有什么特别之处 (siddhiManager )。

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

【问题讨论】:

    标签: wso2 hazelcast complex-event-processing siddhi


    【解决方案1】:

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

    请注意,上面的解释是假设您只使用没有 WSO2 CEP 产品的 Siddhi 库。在 WSO2 CEP 中,有一种机制可以在分布式设置中的节点之间同步这些部署工件。

    【讨论】:

    • 感谢您的回答 Rajeev,但后来我不明白 siddhi 中的“分布式”部署模式。让我问你几个问题:
    • 1) “分发时仅共享引擎的事件/状态”......那么这个解决方案有哪些好处?分布式模式的真正目的是什么?或者,换句话说,我为什么或何时应该使用这种部署?
    • 2) “事件”是指流事件吗?在我的测试中,引擎之间看不到/共享流、查询或流事件。
    • 3) 我可以同步查询/流定义,但是如果我有一个时间窗口,它将如何在分布式模式下工作?每个引擎都有自己的窗口?还是有一个全局窗口?
    • 1.我认为修改后的答案解决了这个问题。您可以在 wso2 cep 中同步工件。
    猜你喜欢
    • 2020-01-02
    • 2023-02-21
    • 2012-03-15
    • 2011-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    相关资源
    最近更新 更多