基于epoll的单进程Reactor服务器

服务器结构图

对以上结构图作出如下解释:

  • ReactorSever中需要维护所有连接,由于服务器每一次读取缓冲区时不一定能读取到完整的报文(只有读取到完整报文才能做相应处理);每一次向缓冲区写数据时也不一定能写进去(写缓冲区满),因此对于每个链接都需要维护一对读写缓冲区,所以ReactorSever维护的不单单是fd,而是一个包含了fd、读写缓冲区的connection对象。除此之外,还可以把该链接关心的事件也存放进去。
  • 我们都知道对于listen套接字和普通套接字的处理是不同的(一个是获取链接另一个是读取数据),为了服务器的的统一性,我们给listen连接和普通连接增加一层抽象层------connection,至此,ReactorSever的眼里只有connection。给connection注册不同的方法(通过继承或者是组合)就可以实现listen套接字和普通套接字的区别对待。
  • 对于普通连接来说,还需要应用层(http协议)处理,最后进行业务处理。

服务器的实现

无小道/linux_112

相关推荐
wang09074 分钟前
Linux性能优化之磁盘基础介绍
linux·运维·性能优化
迷途之人不知返7 分钟前
List的模拟实现
数据结构·c++·学习·list
fleaxin12 分钟前
大华海光GPU服务器安装PVE和统信系统虚拟机
服务器·nvidia·pve·uos·统信
marsh020612 分钟前
39 openclaw持续集成实践:自动化构建与部署流程
运维·ci/cd·ai·自动化·编程·技术
云边有个稻草人13 分钟前
KingbaseES高可用最佳应用实践——全架构部署、故障自愈与运维规范
运维·架构·国产数据库·kes
D4c-lovetrain14 分钟前
Linux个人心得29(k8s的一些个人理解)
linux·运维·kubernetes
有谁看见我的剑了?21 分钟前
ubuntu 22.04 /etc/fstab 文件修改有误导致无法进入系统处理
linux·运维·ubuntu
L16247627 分钟前
临时拉高 CPU 利用率(防缩容)操作全总结(linux和windows系统)
linux·运维·windows
Gofarlic_OMS28 分钟前
UG/NX许可证管理高频技术问题解答汇编
java·大数据·运维·服务器·汇编·人工智能
小松加哲29 分钟前
服务器LVM磁盘内部空闲空间无损扩容+挂载原理+MySQL Binlog自动清理完整实操
运维·mysql·服务器扩容