我目前参与的项目中,我们/应用程序需要能够发现具有在LAN上运行的相同应用程序名称的应用程序的其他实例(以下称为节点).
先决条件:所有节点都知道自己的IP地址和TCP端口号所有节点都有一个名称所有节点都可以访问局域网
我需要的:
所有节点都需要知道每个其他节点的IP地址和TCP端口.如果节点出现故障,我将不得不以编程方式通知此情况.如果出现新节点,我将不得不以编程方式通知此情况.它的基本原理是不需要主服务器或其他应用程序,它必须是我可以集成到当前应用程序中的API.此外,它必须是开源的,并且最好是许可的MIT或ApacheV2.
就这样!
该应用程序是基于JVM的,因此任何API都可以.我一直在看ZooKeeper,但它似乎是我们需要的小功能的一个很大的依赖.
并且,如果你不知道任何API,但是有一些很好的链接可以分享如何通过自己编写来实现这一点(白皮书,博客,书籍等等),我会非常乐意接受这样的事情.
所以问题是,我该怎么做?
我肯定会推荐JGroups,这是非常好的并且非常积极地工作并且支持任何类型的发现(IP多播,固定列表,外部查找服务等).
另一种选择是Apache MINA,但JGroups更适合发现IMO(因为它支持任何类型的发现).