我们有一个
如何在
我考虑使用文件进行通信,因此
或者在后台拥有一些事件总线/消息队列,但它们正在使用套接字,因此在高流量情况下,
编辑
是否有任何事件/消息总线可以在通道之间提供直接通信,以节省广播时间?在我的示例中,通信始终在
编辑#2-关于通信和流量
有一个
父节点
,保存关于许多节点
的信息。每个节点是一个单独的VM实例,执行不同的任务。 父节点
就像所有节点的仪表板。
父节点
需要:
- 向某些
节点
发送偶尔的配置更改 - 监视心跳,即
节点
的健康状况 - 从
节点
获取一些统计数据
节点
尽可能地不知道外部世界。每个节点
都作为Web服务器运行,它们有时会有大量流量。如何在
父节点
和节点
之间以最佳方式通信?我考虑使用文件进行通信,因此
父节点
可以在节点
文件系统上设置具有命令的文件,然后有一个目录观察器读取这些文件。或者在后台拥有一些事件总线/消息队列,但它们正在使用套接字,因此在高流量情况下,
节点
对父节点
的消息可能变得无响应。或者我太担心了?编辑
是否有任何事件/消息总线可以在通道之间提供直接通信,以节省广播时间?在我的示例中,通信始终在
父节点
和单个子节点
之间进行,没有必要进行广播。因此,我们可以有类似电子邮件的一些消息传递 ;)编辑#2-关于通信和流量
有一个
父节点
(或代表父节点的集群)。 子节点
的数量未确定,它可以是任何数量;目标是尽可能多,只要系统正常工作即可。通信如下:
命令(
parent
->child
) 低频命令,通常由管理员启动(例如“重新启动”,“上传”,“重新加载配置”)。它直接发送到特定的child
。运行时统计信息(每个
child
->parent
) 每个child
向parent
通报其健康状况(心跳)和一些次要统计信息。这不必是实时通信,只要消息在例如10秒内传输即可。运行时日志(每个
child
->parent
) 有关流量和使用情况的重要日志。这可能是高容量数据,因为重要的是测量每个节点,如果计算超过某个限制,我们需要意识到这一点等等。同样,并非实时,但我们需要及时警报高计算。
没有太多需要进行广播(因为child
不知道其他子节点),这是更直接的消息传递。