繁体   English   中英

基于消息的发布/订阅故障转移

[英]Message-based Pub/Sub Failover

我正在为游戏系统创建基础架构。 我需要它成为扩展和故障转移的消息基础。 它还将套接字用于消息的发布者/订阅者通知。 我面临的挑战是:我应该继续使用已有的ESB还是使用成熟的ESB(如nServiceBus或MassTransit)?

这是我到目前为止的内容,有点复杂。 首先,这是一个扑克系统。

  1. 客户端连接到套接字以接收消息。 然后将邮件分派到一个或多个本地表队列。 (当然可以有多个客户)。

  2. 后端运行的发卡机构客户也通过其他插座连接。 (可以有多个经销商)。

  3. 运行在后端的机械手客户端也通过不同的套接字连接。 (可以有多个机器人客户端)。

  4. 每个客户和经销商在数据库中创建一个“订户”记录。 这表明它们的IP,以及它们最终连接到的表。

概述:

不同的客户端可以连接到不同的套接字,但是可以订阅同一表。 因此,指向一个表的任何消息都可能由一个以上的套接字处理,以确保该消息在每个表的基础上发送出去。

我如何做到这一点是我有一个消息表和一个ControllerMessage表。 ControllerMessage表跟踪特定控制器处理的所有消息。 我使用一个简单的LEFT OUTER JOIN来确定需要由特定Controller发送的消息。

该系统运行良好。 故障切换非常快速有效,因为当另一方断开连接或意外断开时,异步套接字会立即得到通知。

但是...除了建立自己的ESB之外,还有什么更好的方法吗? 我什至在做一些事情,以达到ESB可以提供的消息丰富和适应的目的。 尽管我必须创建代码或XSLT模式。

好吧,您不需要重新发明轮子。 大多数ESB都支持上面提到的大多数功能。 这是使用WSO2 ESB [1]实现pub-sub的完整用例。

仅供参考:WSO2 ESB是具有Apache 2.0许可证的100%开源ESB。

[1] http://wso2.org/library/articles/2011/12/wso2-esb-example-pubsub-soa

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM