项目-HTTP服务器+Reactor模型


一、HTTP服务器

1.概念

HTTP(Hyper Text Transfer Protocol),超⽂本传输协议是应⽤层协议,是⼀种简单的请求-响应协议(客⼾端根据⾃⼰的需要向服务器发送请求,服务器针对请求提供服务,完毕后通信结束)。但是需要注意的是HTTP协议是⼀个运⾏在TCP协议之上的应⽤层协议,这⼀点本质上是告诉我们,HTTP服务器其实就是个TCP服务器,只不过在应⽤层基于HTTP协议格式进⾏数据的组织和解析来明确客⼾端的请求并完成业务处理。
因此实现HTTP服务器简单理解,只需要以下⼏步即可:

1. 搭建⼀个TCP服务器,接收客⼾端请求。
2. 以HTTP协议格式进⾏解析请求数据,明确客⼾端⽬的。
3. 明确客⼾端请求⽬的后提供对应服务。
4. 将服务结果⼀HTTP协议格式进⾏组织,发送给客⼾端。

实现⼀个HTTP服务器很简单,但是实现⼀个⾼性能的服务器并不简单,这个项目中将讲解基于Reactor模式的⾼性能服务器实现。当然准确来说,因为我们要实现的服务器本⾝并不存在业务,咱们要实现的应该算是⼀个⾼性能服务器基础库,是⼀个基础组件。


二、Reactor模型

1.概念

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


2.分类

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

在这里插入图片描述

  1. 通过IO多路复⽤模型进⾏客⼾端请求监控
  2. 触发事件后,进⾏事件处理
    a.如果是新建连接请求,则获取新建连接,并添加⾄多路复⽤模型进⾏事件监控。
    b.如果是数据通信请求,则进⾏对应数据处理(接收数据,处理数据,发送响应)。

优缺点

  • 优点:因为是单线程操作,操作都是串行化的,思想较为简单,编码流程也较为简单(不用考虑进程或者线程间的通信,以及安全问题)
  • 缺点:⽆法有效利⽤CPU多核资源,因为所有的事件监控以及业务处理都是在一个线程中完成的,因此很容易造成性能瓶颈
  • 适用场景:适⽤于客⼾端数量较少,且处理速度较为快速的场景。(处理较慢或活跃连接较多,会导致串⾏处理的情况下,后处理的连接⻓时间⽆法得到响应)

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

在这里插入图片描述

  1. Reactor线程通过I/O多路复⽤模型进⾏客⼾端请求监控
  2. 触发事件后,进⾏事件处理
    a.如果是新建连接请求,则获取新建连接,并添加⾄多路复⽤模型进⾏事件监控。
    b.如果是数据通信请求,则接收数据后分发给Worker线程池进⾏业务处理。
    c.⼯作线程处理完毕后,将响应交给Reactor线程进⾏数据响应

优缺点

  • 优点:充分利用了cpu多核资源,处理效率可以更高,降低了代码的耦合度
  • 缺点:多线程间的数据共享访问控制较为复杂,单个Reactor 承担所有事件的监听和响应,在单线程中运⾏,⾼并发场景下容易成为性能瓶颈。

多Reactor多线程:多I/O多路复用+线程池(业务处理)

在这里插入图片描述

  1. 在主Reactor中处理新连接请求事件,有新连接到来则分发到⼦Reactor中监控
  2. 在⼦Reactor中进⾏客⼾端通信监控,有事件触发,则接收数据分发给Worker线程池
  3. Worker线程池分配独⽴的线程进⾏具体的业务处理
    a.⼯作线程处理完毕后,将响应交给⼦Reactor线程进⾏数据响应

优缺点

  • 优点:充分利用了CPU多核资源,并且可以进行合理分配
  • 注意:执行流并不是越多越好,因为执行流多了,反而会增加cpu切换调度的成本,在某些情况下会把业务线程放到从属Reactor下,提高效率

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
项目介绍】 基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip 基于Reactor的高并发服务器c++和c源码+超详细项目说明+sln解决方案.zip 基于`Reactor`高并发服务器 `C++` > 基于`Reactor`的高并发服务器,分为`反应堆模型`,`多线程`,`I/O模型`,`服务器`,`Http请求`和`响应`五部分 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通。 2、项目适用人群:计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等计算机相关专业的在校学生、专业老师、行业内企业员工下载使用。 3、项目可用于:项目本身具有较高的学习借鉴价值,不仅适用于小白学习进阶,也可用于专业人员二次开发。当然也可作为毕设项目、课程设计、课程大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载使用,相互学习,共同进步!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值