除了仅实施共识算法之外,还有哪些从客户端创建服务器的其他方法?

What are the other ways of creating a server out of a client than just implementing a Consensus algorithm?

所以我得到了这个项目,我必须在其中创建一个客户端-服务器应用程序,它可以在连接的节点(与该应用程序连接的设备)之间进行通信。它应该只在本地网络上(L2 网段,由路由器边缘)。通过网络,节点能够进行通信。每个节点都可以向所有节点或仅向一个(特定)节点发送消息。

我想知道当服务器关闭时如何做到这一点,心跳期间的客户端将知道它是并创建一个新服务器(客户端之一)。 我在考虑共识算法或 Lamport 时钟 - 你等到所有客户端都发送了他们的消息并且首先收到它们的客户端将成为服务器,但首先我希望有一个更简单的解决方案,其次我不知道如何将这些实现到代码中。

我可能会做的是,在服务器和客户端之间的任何操作之前,或者每 5 个操作(取决于您需要的性能)我会创建一个 checkStatus 方法来检查服务器是否已启动。否则,客户会选择一个使其成为服务器。 但我不知道你为什么需要这样做,通常客户端是一台普通计算机,而服务器具有很高的计算能力。你也会有很多关于安全和内存级别的问题。

如果我真的明白你需要什么,(我在大学里有同样的任务,我想我可以帮助你。 您需要在同一个项目中有一个对等应用程序和一个服务器应用程序。 客户端将检查服务器是否有文件(例如)或他是否可以访问它们。如果可以,他就会下载它们。 如果客户端无法访问服务器中的特定文件夹或文件,他可以检查其他客户端是否将服务器中的这些文件存储在他们的存储中,并且如果你想制作,他们可以为他或其中一个做种子它更容易。 当我做这个程序时,我还不够好,所以我将信息存储在文本文件中(每个客户端都有一个可用的文件名文本文件)并且服务器也有一个基于文本的数据库。

简而言之,你需要什么

  • 客户端应用程序(可以做点对点操作或与服务器操作)
  • 服务器应用程序
  • 服务器的数据库和客户端的迷你数据库。
  • 使用 ftp 或您的应用程序所需的任何协议进行通信。

编辑:我的回答有点太含糊了,因为我没有完全理解你需要什么,我做了一些研究,我认为你可以用 atomix A reactive Java framework for building fault-tolerant distributed systems. you can check the website 实现你想要的。