【问题标题】:Distributed Event Processing分布式事件处理
【发布时间】:2014-08-02 15:34:18
【问题描述】:

您好,这可能是一个菜鸟问题,但我似乎无法为以下用例找到合适的解决方案:

在后端,我们有 x 个分布在虚拟机上的服务,每个都提供相同的服务(分布式复制)。这些服务都在一个分布式事件总线上监听(例如 Hazelcast)。

当一个事件到达时,比如 GetDataA,EventBus 基础架构一次将事件发送到每个后端服务。如果服务决定要处理事件,它会这样做并通过 EventBus 将数据返回给事件的发布者。

一旦服务决定要处理一个事件,EventBus 应该停止将该事件发送给其他侦听器(服务),并继续路由下一个事件(即它应该是非阻塞的)

所以这个解决方案需要一种异步运行的请求/响应分布式事件架构。

有谁知道这个领域有任何可扩展的解决方案。我看过 Hazelcast,但事件机制意味着所有侦听器都会收到事件。我查看了 Executor 服务,但这会将代码发送到其他节点,而我正在寻找的是另一个单个节点来处理请求。

【问题讨论】:

    标签: java events jms hazelcast


    【解决方案1】:

    您可以使用 Hazelcast IExecutorService 执行此操作。对任务的发送方式进行细粒度控制

    • 发送给所有成员
    • 发送给一部分成员
    • 发送给任何成员(不管是哪一个)
    • 发送给特定成员
    • 发送给拥有特定分区的成员。

    还有一个使用future的选项,如果你不想阻塞,你可以将future与异步回调机制结合起来。并且执行者不会向节点发送代码;代码(字节码)已经存在。所以你只是在发送数据。

    如果您不想通知所有人,而只想通知特定成员,则另一种选择是创建点对点解决方案。这可以使用 IQueue 来完成。

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2016-06-04
      • 1970-01-01
      • 1970-01-01
      • 2014-04-07
      • 2023-04-04
      相关资源
      最近更新 更多