嗨,这可能是一个有点新手的问题,但我似乎找不到一个适合以下用例的解决方案:
在后端,我们有x个跨虚拟机分布的服务,每个服务都提供相同的服务(分布式复制)。这些服务都在侦听分布式事件总线(如Hazelcast)。
当事件到达时,例如GetDataA,EventBus基础设施将该事件逐个发送到每个后端服务。如果服务决定要处理事件,它就会这样做,并通过EventBus将数据返回给事件的发布者。
一旦一个服务决定要处理一个事件,那么EventBus应该停止向其他侦听器(服务)发送该事件,并继续路由下一个事件(即它应该是非阻塞的)
因此,这种解决方案需要一种异步运行的请求/响应分布式事件架构。
有没有人知道这个领域有什么可扩展的解决方案。我已经看过Hazelcast了,但是事件机制意味着所有的监听器都会得到这个事件。我已经查看了Executor服务,但它将代码发送到其他节点,而我正在寻找的是另一个单独的节点来处理请求。
发布于 2014-06-13 03:25:24
你可以使用Hazelcast IExecutorService做到这一点。可以对如何发送任务进行细粒度控制
还有一个使用未来的选项,如果你不想阻塞,你可以将未来与异步回调机制结合起来。而且executor不会向节点发送代码;代码(字节码)已经存在。所以你只是在发送数据。
另一种选择是,如果您不想通知所有人,而只想通知特定的成员,则可以创建点对点解决方案。这可以使用IQueue来完成。
https://stackoverflow.com/questions/24182206
复制相似问题