我正在为使用互斥的编程任务创建一个复制文件系统。
理念是:3个服务器节点,6个客户端节点。客户端向服务器发送WRITE请求,这些服务器保存了复制文本文件的副本。每个节点都位于虚拟网络中自己的机器上,我将使用Java套接字让它们相互通信。
问题:如何处理请求进入关键部分的客户?我正在使用Ricart-Agrawala算法,其中想要进入该部分的客户端要求三个服务器获得许可。
首先,客户应该如何建模此请求?我应该发出请求对象吗?只是一个布尔数组?
其次,服务器节点应该如何处理请求队列,以及它们应该如何通过套接字连接授予给定的客户端权限?我想客户端可以在完成后向服务器发送“已完成”消息,然后一旦服务器收到它检查请求队列?这可能只是基于发出请求的节点的ID的队列。删除队列的头部,然后向发出请求的节点发送消息?
我很感激帮助。