0

我目前有一个控制器节点进程和许多工作节点进程。

就目前而言,客户端选择一个随机的工作人员来连接。控制器作为缓存层来存储一些自定义的内存中、可查询的数据结构。工作人员通过 websocket 协议连接到控制器(因为它为我们处理消息碎片/可变大小的消息)。

我现在希望对此进行扩展,以便工作人员向控制器发送心跳(使用统计信息以促进负载平衡)和日志消息(以提供支持)。控制器将使用统计信息告诉客户端连接到哪个服务器并将日志消息写入数据库以使其可查询以获得支持。

然而,由于 websockets 是建立在 TCP 上的,它认为它可能不是做这种事情的最佳协议,我最好使用 UDP 来做这件事。我认为我的说法是正确的,只要我的消息在我的网络(一个数据报)上的 min-MTU 之下,我就不必像使用 TCP 那样担心消息拆分......(我可能是错的!)

显然,我不能将 UDP 用于控制器的缓存部分,因为它需要 TCP 以及 websockets 提供的可靠性。所以我可以有两个连接,一个用于心跳/日志记录,一个用于缓存方面,或者我可以使用 UDP 并为缓存请求实现某种可靠性层。

因为它可能会更简单,我认为这里最好有两个连接,但我更愿意让 UDP 心跳/日志记录在一个单独的线程上,对主线程进行回调以更新应该连接到哪个客户端......

那有意义吗?在Node中甚至可能吗?模块如何处理这些对主线程进行回调以报告事件的异步调用?

4

0 回答 0