【Linux网络编程】- 高并发服务器框架设计

目录

一:什么是高并发服务器?

二:服务器封装设计 共享内存设计 前后置服务器分离


一:什么是高并发服务器?

高:允许同时上线的客户端数量高,即服务器能够同时接收到多个客户端的连接请求。

需要使用到epoll多路IO复用技术【一个服务器连接多个客户端】

并发:可以同时处理多个客户端的业务,客户端不需要“排队”等待服务器处理业务。

需要使用到线程池来进行并发设计

瓶颈:IO操作【接收到的业务怎么进行处理】

内存 ---> 硬盘  ---> 内存【服务器要承载成千上万个客户端对接,同时还要承载成千上万个客户端与其传递分析业务数据,要执行线程池选择哪个线程执行任务,接收到数据后还要做繁琐的IO操作】

扫描二维码关注公众号,回复: 14417817 查看本文章

需要将内存操作和硬盘操作分开处理,这样的设计才能够有效去解决高并发存在的问题 。因为高并发所有的内存操作都在业务服务器,如果业务中有设计到文件使用到文件的时候,就可以访问文件服务器调用指令。

对共享内存的设计需要合理:设置索引区和数据区进行操作

前后置服务器分离之间采用到的是 共享内存+消息队列+信号量【内存三剑客】 的操作方式

二:服务器封装设计 共享内存设计 前后置服务器分离

索引区

数据区

[前置服务器 后置服务器 两个进程]        前置服务器 数据写入 共享内存[数据区]

共享内存中存在数据后,使用消息队列 也就是前置服务器[写完数据后]发送消息给后置服务器[令其可以进行读操作],之后就根据共享内存[索引区1代表有数据 索引区0代表没有数据 目前是有数据表示为1]进行后置服务器读取数据

读取数据后,清空数据区数据

索引区为0代表无数据,前置服务器就可以进行下一次数据的写入

 

数据区操作公式

memcpy(共享内存首地址+索引区总长度+单个数据块长度*索引区下标,数据指针,数据大小)

索引区操作公式

memcpy(共享内存首地址+sizeof(int)*索引下标,数据,sizeof(int)) 

猜你喜欢

转载自blog.csdn.net/m0_56051805/article/details/126006759