C++项目:仿mudou库实现高性能高并发服务器

2023-09-21 22:03:05


在这里插入图片描述

一、实现目标

仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器:
通过咱们实现的高并发服务器组件,可以简洁快速的完成⼀个高性能的服务器搭建。
并且,通过组件内提供的不同应⽤层协议支持,也可以快速完成⼀个高性能应⽤服务器的搭建(当前
为了便于项目的演示,项目中提供HTTP协议组件的⽀持)。
在这里,要明确的是咱们要实现的是⼀个高并发服务器组件,因此当前的项目中并不包含实际的业务
内容。

二、前置知识

(一)HTTP服务器

1.概念

HTTP(Hyper Text Transfer Protocol),超⽂本传输协议是应⽤层协议,是⼀种简单的请求-响应协
议(客户端根据自己的需要向服务器发送请求,服务器针对请求提供服务,完毕后通信结束)。
协议细节在课堂上已经讲过,这⾥不再赘述。
但是需要注意的是HTTP协议是⼀个运行在TCP协议之上的应用层协议,这⼀点本质上是告诉我们,HTTP服务器其实就是个TCP服务器,只不过在应用层基于HTTP协议格式进行数据的组织和解析来明确客⼾端的请求并完成业务处理。

因此实现HTTP服务器简单理解,只需要以下几步即可

  1. 搭建⼀个TCP服务器,接收客户端请求。
  2. 以HTTP协议格式进行解析请求数据,明确客户端目的。
  3. 明确客户端请求目的后提供对应服务。
  4. 将服务结果⼀HTTP协议格式进行组织,发送给客户端实现⼀个HTTP服务器很简单,但是实现⼀个高性能的服务器并不简单,这个单元中将讲解基于Reactor模式的高性能服务器实现。

当然准确来说,因为我们要实现的服务器本身并不存在业务,咱们要实现的应该算是⼀个高性能服务器基础库,是⼀个基础组件。

2.Reactor模型:

Reactor模式,是指通过⼀个或多个输入同时传递给服务器进行请求处理时的事件驱动处理模式。
服务端程序处理传入多路请求,并将它们同步分派给请求对应的处理线程,Reactor 模式也叫Dispatcher模式。简单理解就是使⽤ I/O多路复用 统⼀监听事件,收到事件后分发给处理进程或线程,是编写高性能网络服务器的必备技术之⼀。

3.分类

单Reactor单线程:单I/O多路复用+业务处理。

更多推荐

全志H3 Linux编译尝试

全志H3Linux编译尝试主要参考:https://blog.csdn.net/qq_40731414/article/details/118684473部分内容介绍来自GPT,但是代码部分都会进行测试一、简介Linux编译的作用:生成可执行的内核映像:编译Linux内核的主要目的是从源代码生成一个可执行的内核映像(例

JDBC基本概念

什么是JDBCJDBC概念JDBC(JavaDataBaseConnectivity)是一套统一的基于Java语言的关系数据库编程接口规范。该规范允许将SQL语句作为参数通过JDBC接口发送给远端数据库,远端数据库接收到SQL语句后进行语法分析、验证,然后执行、响应。JDBC驱动在遵循统一的JDBC接口规范基础上,不同

一文了解亚马逊云科技适用于 Amazon Lightsail 的托管数据库

AmazonLightsail是亚马逊云科技提供的一种易上手使用、月度价格经济实惠,并包括了计算实例、容器、存储、数据库的虚拟专用服务器。在创建时可以进行业务蓝图选择,可选择包含多种操作系统(Linux/Windows等)或操作系统加上典型应用进行快速配置并可根据需求进行包括CPU、内存、存储、传输遂率等多种机型的快速

嵌入式:驱动开发 Day7

作业:基于GPIO子系统,编写LED的驱动程序和应用程序驱动程序:myled.c#include<linux/init.h>#include<linux/module.h>#include<linux/cdev.h>#include<linux/fs.h>#include<linux/device.h>#include

嵌入式Linux驱动开发(I2C专题)(五)

I2C系统驱动程序模型参考资料:Linux内核文档:Documentation\i2c\instantiating-devices.rstDocumentation\i2c\writing-clients.rstLinux内核驱动程序示例:drivers/eeprom/at24.c1.I2C驱动程序的层次I2CCore

北斗GPS网络时钟系统(子母钟系统)助力智慧教室建设

北斗GPS网络时钟系统(子母钟系统)助力智慧教室建设北斗GPS网络时钟系统(子母钟系统)助力智慧教室建设HR系列型NTP网络时钟系统是由我公司精心设计、自行研发生产的一套通过网口与母钟连接的子钟,接收母钟发送来的时间信息(信息内容:年、月、日、时、分、秒),将这些时间信息准确无误的显示出来。子钟带后备电池,停电时不显示

下拉框组件的封装(element ui )

目录实现思路创建通用的下拉选择框组件如何使用这个组件结语当你使用Vue.js构建Web应用时,封装可复用组件是提高开发效率和代码可维护性的关键之一。在这篇文章中,我们将探讨如何使用Vue.js来创建一个通用的下拉选择框组件,以及如何将它封装成一个可配置的组件。实现思路一级联动先从饿了么拿下拉列表数据处理提示名处理设定默

算法(三)

哈希表算法章节(1)Ascall码文章推荐给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。classSolution{publicbooleanisAnagram(Strings,Stringt){//先说明一下字母异位词的定义://两

IBM存储设备

因工作的原因,本人以前在国内某大型金融机构工作,机器全是采购的IBM小型机,有X系列,有P系列。它们有一些特性,我总结了一下,分享出来,供大家选型参考。1.RAID控制器双活动型热插拔控制器,硬件XOR引擎2.缓存每个控制器2GB缓存;具备写缓存断电保护,系统外部断电后,写缓存数据可永久保留到闪存盘上3.主机接口提供≥

Zookeeper集群 + Kafka集群

kafka不能离开,需要通过zookeeper来管理定义Zookeeper是一个开源的分布式服务管理框架,存储业务服务节点元数据及状态信息,并把在Zookeeper上注册的服务器节点的状态信息通知给客户端(Zookeeper=文件系统+通知机制)工作机制☆☆☆☆☆从设计模式角度来理解:是一个基于观察者模式设计的分布式服

7年阿里测试经验之谈 —— 用UI自动化测试实现元素定位

随着IT行业的发展,产品愈渐复杂,web端业务及流程更加繁琐,目前UI测试仅是针对单一页面,操作量大。为了满足多页面功能及流程的需求及节省工时,设计了这款UI自动化测试程序。旨在提供接口,集成到蜗牛自动化测试框架,方便用例的设计。目前,在自动化测试的实际应用中,接口自动化测试被广泛使用,但UI自动化测试也并不会被替代。

热文推荐