gpt4 book ai didi

c# - 具有订阅者缓存的 WCF Pub/Sub

转载 作者:太空狗 更新时间:2023-10-29 20:35:42 33 4
gpt4 key购买 nike

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

详细信息:

请注意,除了 Tibco EMS 等消息传递/中间件解决方案之外,还考虑了这种方法。

我一直在研究 WCF,尤其是它如何用于提供发布/订阅。关于这个主题,这篇文章非常好:WCF pub-sub .

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

所以,我认为有几个解决问题的办法:

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

谁能想到任何其他解决方案(即我没有错过 WCF 的一些神奇的神奇功能?)任何评论表示赞赏。

最佳答案

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

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

关于c# - 具有订阅者缓存的 WCF Pub/Sub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/391296/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com