gpt4 book ai didi

java - 父节点与节点之间的通信

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:04 25 4
gpt4 key购买 nike

我们有一个parent,它包含许多节点的信息。每个节点都是独立的 VM 实例,执行不同的任务。 parent 就像所有节点的仪表板。

父级需要:

  • 偶尔向某些节点发送一些配置更改
  • 监控心跳,即节点的健康状况
  • 节点获取一些统计数据

我希望 node 尽可能不了解外界。每个节点都作为一个网络服务器,它们有时会有很大的流量。

如何在parentnode之间以最佳方式进行通信?

我正在考虑使用文件进行通信,所以 parent 可以在 node 文件系统上使用命令设置文件,然后有一个 dir watcher读取此类文件。

或者在后台有一些事件总线/消息队列,但它们使用的是套接字,因此 node 可能对 parent 的消息没有响应在高流量的情况下。还是我太担心了?

编辑

是否有任何事件/消息总线提供 channel 之间的直接通信,以节省广播时间?在我的示例中,之间的通信总是在 parent 和单个 child 之间,不需要广播。所以我们可以有一些消息,比如电子邮件 ;)

编辑 #2 - 关于沟通和交通

有一个parent(或代表父实例的一个集群)。 childs 的数量未确定,可以是任意的;只要系统运行良好,目标就是拥有尽可能多的资源。沟通是:

  1. 命令(parent -> child)低频命令,通常由管理员发起(例如“重启”、“上传”、“重新加载配置”)。它直接转到特定的 child

  2. 运行时统计(每个 child -> parent)每个 child 都会通知 parent 它的健康状况(心跳)和一些次要统计信息。这不一定是实时通信,只要消息在例如下传输即可。 10 秒。

  3. 运行时日志(每个 child -> parent)有关流量和使用情况的重要日志。这可能是大量数据,因为测量每个节点很重要,如果计算超过一定限制,我们需要意识到这一点等。同样,不是实时的,但我们需要在高计算时及时发出警报。

没有太多需要一般广播(因为 child 不知道其他 child ),这是更直接的消息传递。

最佳答案

我建议您使用 RMI ,因为您可以实现节点之间通信所需的方法,所以要通信的类可以扩展 Remote 接口(interface)。

您必须在通信开始时使用 rmiregistry,但是如果您有一个“中央”节点来分发引用/消息(例如在聊天(服务器/客户端)模型中)。

更新:我还没有回答你最后一个问题的高级程度,但也许这个链接可以帮助你确定这是否是你需要的:

1.- Overview

2.- How fast RMI?

关于java - 父节点与节点之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080139/

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