1

我正在设计一个将使用 WCF 与客户端通信的客户端服务器应用程序。它可能会变得很重,并希望以分布式方式设计它。为此,我将应用程序拆分为多个服务。可以运行 N 个服务来处理请求。

  • 登录服务
  • 游戏服务
  • 客房服务
  • ETC

登录服务将能够在其上安装负载均衡器。然后它将请求发送到正在运行的游戏服务之一(可能有 N 个游戏服务在不同的机器上运行)。

我想弄清楚的是登录服务如何知道游戏服务。我可以想到(在这一点上真正的高水平)两个解决方案:

1) 当一个游戏服务出现时,它会在数据库中创建一条记录,说明它是谁以及它在哪里,登录服务会在那里检查以查找所有服务。这似乎有问题,服务下降,使列表保持最新。

2)当一个新服务加入时,它会联系一个登录服务,(不确定这会如何发生,假设某种关于如何找到它的硬编码),并向该服务注册。然后,登录服务可以维护一个 DHT 或其中的一些列表,以便他们知道将请求路由到哪里。

我是整个分布式应用程序世界的新手,并试图找出一种做事的好方法。这个项目部分是为了我自己的知识和收获,但我也希望它能发展成一个工作应用程序。

谢谢

4

1 回答 1

2

我认为这是服务总线的完美应用。让它成为您的服务所在的平台。总线为您的网络及其主机的实际物理配置提供了一层抽象,从而实现了可扩展性……这一切都在基础之上。

使用总线,您可以继续使用 pub/sub 方法跨服务进行通信,或者更确切地说,跨业务关注点进行通信。

我会避免使用#1 中的数据库方法来保存服务清单,而是将这些信息保存在总线的运行配置中。使用发布/订阅方法以及其中包含的潜在路由信息,您应该采用正确的方法。

看看NServiceBusMassTransit

于 2010-01-13T19:19:16.083 回答