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