带有订户缓存的WCF Pub/Sub

ng5*_*000 7 c# architecture wcf disaster-recovery

问题:如何使用WCF提供分布式,可扩展和抗灾的发布/订阅服务.

细节:

请注意,除了消息/中间件解决方案(如Tibco EMS)之外,还考虑采用此方法.

我一直在研究WCF,特别是它如何用于提供pub/sub.关于这个主题,这篇文章非常好:WCF pub-sub.

在文章中,作者试图解决拥有多个发布者的问题(就像在几个框中扩展服务层一样).问题在于,如果客户端A向发布者A注册但发布者B希望发布事件,则发布者B将不知道客户端A.即没有人告诉发布者B客户端A想要通知事件.作者建议将pub/sub服务作为解决方案.发布/订阅服务将集中存储订阅.但是,如果我想通过二级/双发布/订阅服务使pub/sub服务具有抗灾能力,那么我就有了同样的原始问题.

所以,我认为这个问题有几个解决方案:

  1. 将订户详细信息存储在分布式缓存中(请参阅问题:q1q2).
  2. 将订户详细信息存储在数据库/中央文件系统中.

任何人都可以想到任何其他解决方案(即我没有错过WCF的一些奇妙的魔法功能?)任何评论赞赏.

小智 3

我遇到了同样的问题,并且我对这个问题做了很多研究。问题其实很简单。您希望以分布式方式保留一些集中式状态。我发现实现这一点的最佳方法是使用分布式缓存。以速度为例。据我所知,没有任何原生 WCF 解决方案可以解决状态管理问题。我什至研究了持久服务,其中状态管理由 WCF 处理,但不适合发布/订阅服务,因为状态需要集中用于所有客户端连接。将数据存储在数据库中也是一种选择,但代价是需要数据库,并且即使使用数据库,如果数据库没有跨多台机器进行集群,也可能会出现单点故障。

最后,我认为实现零故障点的东西实际上是昂贵的,如果你决定去那里,那么看看 Azure,存储的未来是在云上,Azure 服务将是完全可扩展和分布式的,但我们还没有到那一步。