我不太了解主机的动态发现概念。我应该理解客户端应用程序可以联系任何可用的主机而不保留其 IP 地址吗?对我来说这听起来很奇怪。Java RMI 是否支持该技术?如何?
谁能给我解释一下?我对从谷歌得到的定义感到困惑。
非常感谢你。
1 回答
这是一些场景:
主机:A、B、C、D、E、F、G
您的应用程序只知道节点(服务器)A。
因此,您的应用程序要求 A 加入网络。并且在 A 验证您的应用程序被允许并且能够加入网络后,将所有关于 B、C、D、E、F、G 的信息告诉您的应用程序。
服务器 A 还告诉所有其他节点您的应用程序加入网络。
在这个简单的例程之后,所有主机都知道您的应用程序,您的应用程序也知道所有主机。
现在假设 Bobs 应用程序也在加入网络,要求服务器 E 加入。Bobs 应用程序了解其他主机 A、B、C、D、F、G 的所有信息。并且 E 将您的应用程序告诉 Bobs 应用程序。
但是你的应用程序会监听这个消息(或事件)分发系统,E 只是发布 Bobs 应用程序加入的消息。由于您的应用程序侦听此类消息,因此您的应用程序获悉 Bobs 应用程序也加入了。
一段时间后,服务器 D 崩溃了。由于主机 A、B、C、E、F、G 不断收听 D 的消息,他们注意到 D 不再发送任何消息。所以他们发送消息告诉所有收听的人 D 已经离开了网络。
在短暂的一段时间后,D 恢复并重新加入了网络......
这基本上就是关于主机动态发现的所有重要内容。
有一堆(至少一个)服务器,你只知道一个或多个(如果一个已经崩溃并正在恢复,至少推荐 3 个)并要求加入并获取有关其他主机的更多信息。然后,您的应用程序侦听状态信息或请求其中一台服务器让您的应用程序了解从逻辑网络加入和离开服务器的事件。
最初的 RMI 概念在过去不支持这一点,但他们应该是这些天的解决方案。