我们已经开始设计一个 Java 服务器/客户端程序,会有 1 台服务器可能有 100 个客户端,并且客户端可能在另一个国家通过 VPN 连接到服务器,因此网络带宽可能并不理想。典型的用法是,服务器向客户端分派作业,客户端将结果返回给服务器,但是服务器和客户端之间不需要传输太多数据,每个作业可能大约 10s KB,每个作业大约需要 5-在客户端运行 10 分钟。
我们有两种设计方案:
1、客户端在尝试注册服务器时发起socket连接请求,然后我们保留所有的socket连接进行通信。
2、客户端启动socket连接进行注册,然后关闭连接。服务器维护客户端列表,服务器在调度作业时会启动连接,然后关闭。客户端将再次启动连接以报告结果然后关闭。
问题是,就性能和代码复杂性而言,哪个选项会是更好的设计。