2

我一直在考虑将WAMP路由器扩展到多台机器上。特别是因为在没有备份系统的情况下依赖一个系统在现场场景中似乎有点困难。

为了不进行复杂的主节点选举以及随之而来的所有事情,我有以下想法,我很想得到一些反馈。

路由器需要共享一些信息,即:

验证

  • 会话 ID

RPC

  • 使用简单注册时检查客户端是否已经注册了 uri
  • 转发基于模式注册的呼叫
  • 元 API 信息

发布/订阅

  • 向网络中的所有客户端提供事件消息
  • 元 API 信息

所有路由器之间必须有连接。为了保持连接和流量低,想法是拥有一个环形基础设施:

   +----------------+    +-----------------+    +--------------+
   |                |    |                 |    |              |
+-->  First Router  +---->  Second Router  +---->  Nth Router  +--+
|  |                |    |                 |    |              |  |
|  +----------------+    +-----------------+    +--------------+  |
|                                                                 |
+-----------------------------------------------------------------+

每个路由器都有自己的客户端连接到下一个路由器。通过存储来自客户端的 CALL 或 PUBLISH 的传入消息 ID,路由器可以识别往返行程。来自另一个路由器的来电将按原样处理。产量将具有正确的 INVOCATION.Request|id 并可以转发到正确的路由器。

丢失路由器

该基础架构强制所有路由器都具有一些静态且相同的配置。这意味着动态缩放将不起作用,但因此不需要领导者选举。如果一个路由器被杀死,下一个路由器将从路由器列表中连接。持续轮询可以检查路由器是否重新联机。

我没有对此做任何深入的研究。因此,我很乐意为此获得一些意见。

4

1 回答 1

0

nginx 可以作为反向代理来完成此任务。

ip_hash上游列表中将确保客户端 IP 每次都获得相同的服务器。根据您的情况,您可能需要也可能不需要。

本质上,您希望“负载均衡器”站在 WAMP 服务器的前面,并根据需要委派连接。

于 2021-12-02T01:03:39.373 回答