所以我有这个项目,我必须创建一个客户端 - 服务器应用程序,它可以在连接的节点(与该应用程序连接的设备)之间进行通信。它应该只在本地网络上(L2段,由路由器保证)。通过网络,节点能够进行通信。每个节点都可以向所有节点或仅向一个(特定)节点发送消息。
我想知道如何在服务器关闭时执行此操作,心跳期间的客户端将知道它是并创建新服务器(客户端之一)。 我在考虑Consensus算法或Lamport时钟 - 你等到所有客户都发送了他们的消息,并且首先接收它们的客户端将成为服务器,但首先我会感谢更简单的解决方案,其次我不知道如何将这些实现到代码中。
答案 0 :(得分:0)
我可能会做的是,在服务器和客户端之间的任何操作之前,或者每5个操作(取决于您需要的性能)之前,我会使用checkStatus方法检查服务器是否已启动。如果是,客户端会选择一个使其成为服务器。 但我不知道为什么你需要这样做,通常客户端是普通的计算机,服务器具有很高的计算能力。你在安全和记忆的层面上也会遇到很多问题。
如果我真的明白你需要什么,(我在大学里有同样的任务,我想我可以帮助你。 您需要在同一项目中使用对等应用程序和服务器应用程序。 客户端将检查服务器是否有文件(例如)或他可以访问它们。如果可以,那么他下载它们。 如果客户端无法访问服务器中的特定文件夹或文件,他可以检查其他客户端是否有来自服务器的那些文件存储在他们的存储中,如果你想要他们可以播种他或其中一个使它更容易。 当我做这个程序时,我还不够好,所以我将信息存储在文本文件中(每个客户端都有一个文件文件的文件可用),服务器也有一个基于文本的数据库。 / p>
简短,您需要什么:
编辑:我的回答有点过于模糊,因为我完全不了解你的需求,我做了一些研究,我认为你可以通过atomix A实现你想要的目标。用于构建容错分布式系统的反应式Java框架。你可以查看the website。