Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有一些客户机-服务器系统java程序我可以看一下吗?_Java_Client_System - Fatal编程技术网

有一些客户机-服务器系统java程序我可以看一下吗?

有一些客户机-服务器系统java程序我可以看一下吗?,java,client,system,Java,Client,System,我目前正在做一个项目,我将在数据库旁边构建一个应用程序(用Java创建)。这就是我正在开发的客户机-服务器系统。我的项目的一部分是研究现有的客户机-服务器系统 所以我想知道有没有好的客户机-服务器系统,它是用Java构建的,我可以看看吗?我对从新手到专业的程序感兴趣,但不是太复杂以至于我无法理解的东西 我想在我的研究中讨论它们,看看它们是如何工作的 谢谢。分布式系统中的某些资源可能需要互斥访问。锁 服务是负责允许或拒绝客户端进行此类独占访问的服务。在这个项目中,您将实现一个简单、高可用性、复制的

我目前正在做一个项目,我将在数据库旁边构建一个应用程序(用Java创建)。这就是我正在开发的客户机-服务器系统。我的项目的一部分是研究现有的客户机-服务器系统

所以我想知道有没有好的客户机-服务器系统,它是用Java构建的,我可以看看吗?我对从新手到专业的程序感兴趣,但不是太复杂以至于我无法理解的东西

我想在我的研究中讨论它们,看看它们是如何工作的


谢谢。

分布式系统中的某些资源可能需要互斥访问。锁 服务是负责允许或拒绝客户端进行此类独占访问的服务。在这个项目中,您将实现一个简单、高可用性、复制的锁定服务

客户端服务器锁定。锁定服务由两个软件组件组成:一个 客户端库和服务器。服务器负责维护关于谁被授予访问哪个资源的权限的信息。客户端库{您应该实现{负责向需要使用该服务的客户提供该服务。该库应为客户提供两项功能: int a c q u i r e(int c l i e n t i d,int r e s i d); int r e l e a s e(int c l i e n t i d,int r e s i d); 第一个函数允许由clientid标识的客户端请求对由resid标识的资源的独占访问,而第二个函数允许客户端释放该独占访问。您可以假定客户端和资源都可以由某个数字id唯一标识。 此外,acquire调用应该返回:如果服务器当前不可用,则返回2;如果客户端不可用,则返回1 对另一客户端已获取的资源调用acquire;如果服务器已启动,并且已授予(或已授予此客户端)对该资源的访问权限,则调用0

释放调用具有类似的返回值:如果服务器当前不可用,则返回2;如果客户端对从未调用过acquire的资源调用释放,则返回1;如果服务器已启动且释放操作成功,则返回0

复制服务器。要实现高可用性,您应该使服务器冗余。 您应该通过将\server“转换为一组进程{一个主进程,再加上n个副本来实现这一点。 副本将通过可靠的多播协议与主机保持同步

客户端仅连接到主机,直接向主机发出获取/释放操作。每当新请求到达主机时,主机应将此请求多播到所有副本。从主机接收此类多播请求后,副本应更新其内部状态以反映它们。保持复制副本同步是指,如果主机出现故障,系统可以通过让其中一个复制副本代替它继续运行。 为确保正确运行,您的可靠多播协议应保证,即使在出现崩溃故障的情况下: 1.要么所有正确的副本都能传递消息,要么没有一个能传递消息,并且; 2.唯一允许使用“无”或“无”的情况是,在任何正确的复制副本能够传递消息之前,主机崩溃

请注意,我们并不关心崩溃的复制副本:这些复制副本可能会传递消息,也可能不会传递消息。为了完成此任务,我们建议您采用两阶段提交(2PC)协议,但要记住以下几点:不像\regular“2PC,崩溃的副本不会导致消息无法传递,您需要担心的唯一情况是协调器崩溃。 故障转移。当主设备出现故障时,必须由新的主设备接管。您应该提供 用于放置新主机的机制(例如,副本可以接受特殊的\成为主机“ 当当前主机出现故障时,客户端可以发出的消息)。 此外,客户必须能够在新主机就位后以某种方式联系新主机 更简单的是,可以在每次请求时查询所有副本,以便发现哪一个是主副本。 1. 服务器假设。在实施服务器时,应做出以下假设。 1.副本集是固定的,副本可能会崩溃,但副本永远不会恢复; 2.可以获取和释放的资源数量是固定的,并且事先知道; 3.底层网络不可靠,不能保证FIFO(如果使用UDP,则必须对此负责)

客户库假设。 1.如果主机在请求中途崩溃,则获取/释放功能可返回错误代码2,客户端代码可继续重试请求,直到新主机就位

  • 一旦选择了一个新的主机,客户机库应该能够正确地执行故障切换;也就是说,它必须能够以某种方式找到当前的主机

  • 有各种各样的客户机-服务器程序,基于各种机制。如果没有进一步的信息,我们只能猜测您真正想要什么。@Dave Newton,我正在寻找客户机-服务器程序,它为用户提供服务,如Argos目录系统,其中用户输入数据,数据在数据库中处理,然后重新运行rns信息返回。@Dave Newton,也是通过internet或本地are网络使用的东西。几乎所有面向服务的应用程序都是一个可以查看的地方——客户端实现可能会有所不同(浏览器、应用程序等)。也有RMI/RPC实现,但IMO REST/SOAP样式更容易开始使用。@Dave Newton,谢谢你的建议。你有网站链接,可以查看这些系统的设计,甚至可以运行它们吗?谢谢。