计算机体系结构中用于并行应用程序的客户端-服务器框架是什么?
并行应用程序可以使用客户端/服务器模型进行设计。客户端可以将一个大型应用程序分解成几个较小的子问题,这些子问题可以由多个服务器同时处理。所有服务器计算各自问题的解决方案并将结果发送给客户端。
客户端汇集每个服务器的结果,并将最终结果输出给用户。客户端充当主控端(监督者),而服务器充当从属端(工作者),如图所示,采用主从(监督者-工作者)模型。客户端和每个服务器执行的步骤总结如下。
客户端(监督者)
- 客户端创建一个套接字数组以及与所有服务器的输入/输出数据流。最佳情况下,客户端应为每个可用的服务器生成一个线程,然后这些线程将与各个服务器建立连接。
- 客户端将控制权传递给客户端主体,其中包含特定于并行执行的应用程序的代码。主要工作是将主要任务划分为较小的部分,并将其中一部分任务传递给每个服务器。然后,它等待所有服务器发送其较小计算结果。最后,它合并每个服务器的结果并计算大型问题的最终解决方案。
- 客户端关闭与所有服务器的所有流和套接字。
服务器(工作者)
- 服务器在一个未使用的端口号上创建一个服务器套接字。
- 服务器在该端口上等待连接。一旦收到客户端的请求,它就接受该连接。
- 服务器为该套接字创建输入和输出数据流。这为服务器套接字和客户端之间的通信奠定了基础。
- 服务器将控制权传递给服务器主体,其中包含特定于并行执行的应用程序的代码。主服务器将接受来自客户端的连接,创建一个套接字,并调用服务器主体线程来处理该客户端。
- 服务器返回并等待来自客户端的另一个连接。
广告