服务器模型
1.C/S模型
所有客户端都是通过访问服务器来获取所需资源。
模型图;
工作流程:
这里进行详细的解释工作流程;
- 服务器建立socket,绑定一个自己感兴趣的端口,之后就处于listen状态,等待客户端连接;
- 客户端调用connect建立连接,和服务器进行三次握手操作;
- 在服务器监听的客户端数目之内,进行数据的传送;
- 由于客户端是随即到达的异步事件,服务器采用某种I/O模型来监听这一事件;
- 当服务器监听到客户端的请求之后,调用accept函数来接受他,并分配一个子进程来处理客户端的请求,并且将结果反馈给客户端;
-
客户端接收到服务器的应答之后,就开始向服务器发送请求,也可以立即关闭客户端,如果客户端主动关闭,那么服务器执行被动关闭;
模型缺点
服务器监听多个客户端,通过select来实现,但是当客户端的访问量很大的时候,那么服务器的应答就很慢;
2.P2P模型
典型案例–云计算
刚才我们在C/S模式中,发现了问题当客户端的访问量很大的时候,那么服务器的响应就很慢,那么P2P就是来解决这个问题的;
模型图
这样子的模型。让每个客户端即使服务器又是客户端,自己在消耗资源的同时,也给别人提供服务;
但是这个模型还是存在问题,每一个很难相互发现,所以我们还专门提供了一个发现服务器。这个服务器还会提供查找服务,是每一个客户可以尽快的找到自己所需的资源;
*改进的模型图
由于P2P模型即使服务器又是客户端,所以我们编程还是采用的C/S模型;
模型缺点
当用户之间传输请求过多时,网络负载将加重;