Java 服务器自动发现节点的算法?
长期的读者,第一次在这里提问 情况:我们有一个服务器和节点体系结构,其中节点可以在同一台或不同的机器上,并用于负载平衡。当前配置时,节点知道服务器在哪里(IP、端口),启动时,节点开始定期(每隔T秒)向服务器发送HTTP post请求,以通知服务器其联系信息(IP、端口……)。服务器有一个可用节点列表,节点报告后,其信息存储在列表中。如果节点未能在2*T秒内报告,则其条目将从列表中删除。这样,服务器就可以获得关于可用内容的最新信息。事实证明,这个方案比前一个方案要好得多,后者使用了配置文件,我们经常不得不处理错误的配置 新的条件:由于安全问题(不知道细节),我们需要使节点保持静默-它们不能启动与服务器的连接,只能接受和响应 正因为如此,我们目前的算法是无效的,我正在寻找新的选项来呈现给我的团队。我知道最简单的解决方案是回到静态配置,但我希望避免这种情况。我正在寻找建议,不是详细的,而是如何实现这一点的一般想法,而不是HTTP协议所必需的。我希望在座的人有一个想法或者已经解决了这个问题Java 服务器自动发现节点的算法?,java,http,architecture,Java,Http,Architecture,长期的读者,第一次在这里提问 情况:我们有一个服务器和节点体系结构,其中节点可以在同一台或不同的机器上,并用于负载平衡。当前配置时,节点知道服务器在哪里(IP、端口),启动时,节点开始定期(每隔T秒)向服务器发送HTTP post请求,以通知服务器其联系信息(IP、端口……)。服务器有一个可用节点列表,节点报告后,其信息存储在列表中。如果节点未能在2*T秒内报告,则其条目将从列表中删除。这样,服务器就可以获得关于可用内容的最新信息。事实证明,这个方案比前一个方案要好得多,后者使用了配置文件,我们
谢谢。如果您的节点没有向服务器表明它们存在,服务器将不得不假设它们存在于某些位置,然后轮询这些位置以确定节点是向上还是向下 这意味着您的服务器必须手动配置,以便事先了解节点的位置。如果服务器没有被告知某个节点的存在,则即使该节点可用且空闲,它也不会使用该节点 基本上,如果可以找出从节点到负载平衡服务器的网络流量,那么就可以找出从负载平衡服务器到工作节点的网络流量。因此,有了新的体系结构,我真的不希望安全性有任何提高
一个更好的解决方案是充分加密通信量,使窃听者无法推断消息的内容,并以一种方式握手,即使攻击者破坏了加密并试图模拟连接的任意一端,他们在试图找出握手的时候会发出太多警报。是否有可能实现无连接UDP/多播?我也在考虑过,但没有UDP和多播的经验。因此,我不排除这种可能性,因为我不知道新的安全约束的细节。但是,它必须变得智能化,这样网络才不会被淹没。我想这是最好的方法。谢谢