![](https://img-blog.csdnimg.cn/direct/8d1731474e60434786f834b76ee17256.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
【高性能服务器开发】
文章平均质量分 85
一些常见的服务器开发
我要成为C++领域大神
code
展开
-
【高性能服务器】poll模型
🔥❤️poll 不再用 BitsMap 来存储所关注的文件描述符,取而代之用动态数组,以链表形式来组织,突破了 select 的文件描述符个数限制,当然还会受到系统文件描述符限制。但是 poll 和 select 并没有太大的本质区别,都是使用「线性结构」存储进程关注的 Socket 集合,因此都需要遍历文件描述符集合来找到可读或可写的 Socket,时间复杂度为 O(n),而且也需要在用户态与内核态之间拷贝文件描述符集合,这种方式随着并发数上来,性能的损耗会呈指数级增长。原创 2024-07-19 18:51:09 · 1103 阅读 · 8 评论 -
【高性能服务器】select模型
🔥❤️IO多路复用就是复用一个线程,从原先一个客户端需要一个线程去调用recv询问内核数据是否已经就绪,那么多个客户端就需要多个线程,转变成现在多个客户端都用一个线程使用select/poll去统一管理,主动通知用户哪些数据已经就绪(read,write,accept等事件),所以复用了这个线程,减少了系统开销。。原创 2024-07-05 15:52:02 · 1639 阅读 · 30 评论 -
【高性能服务器】多进程并发模型
🔥❤️对于常见的C/S模型,一个服务端通常需要服务多个客户端。如果使用单行的处理模型,当新的客户端请求服务端的服务时,就必须等待比它先到的客户端的请求全部完成。因此引入多进程并发服务器模型。多进程并发服务器模型的简单流程图如下所示。父进程创建一个套接字,然后与自己的IP地址、端口号进行绑定。之后调用开始监听来自客户端的敲门,当有客户端来敲门时,accept()接收客户端的连接并创建一个新套接字用于与客户端通信。原创 2024-07-02 10:41:16 · 1409 阅读 · 29 评论 -
【高性能服务器】多线程并发模型
🔥❤️在子进程,关闭从父进程中复制下来监听套接字,这个套接字在子进程中没有用了,纯属浪费资源,之后再进行与客户端的通信。而同一进程的所有线程共享相同的内存空间,线程数据共享和通信更加方便,创建和管理线程的资源消耗较少,尤其是内存开销较小。对于常见的C/S模型,一个服务端通常需要服务多个客户端。如果使用单行的处理模型,当新的客户端请求服务端的服务时,就必须等待比它先到的客户端的请求全部完成。在多进程+多线程代码的基础上,将进行accept的进程修改为创建的线程工作,socket通信的功能放在线程工作函数内。原创 2024-07-02 10:25:55 · 1220 阅读 · 9 评论 -
【高性能服务器】单进程服务器
🔥❤️处理流程:1、客户端发送请求2、服务端处理请求3、服务端发送响应4、客户端接收响应原创 2024-06-29 10:06:49 · 1325 阅读 · 14 评论 -
【高性能服务器】服务器概述
🔥❤️服务器是典型的后台服务软件,可以为客户端提供数据和业务支持,服务器可以帮助用户缓存数据(个人信息,账号信息,用户使用数据和配置都可以在云端存储)CS架构(client客户端,server服务端)传输层协议为包裹的TCP或UDP,业务编号、协议划分都是自定义的BS架构(Browser浏览器,Web服务器模型)协议固定使用HTTP or HTTPS超文本传输协议。原创 2024-06-29 10:01:22 · 863 阅读 · 0 评论