当前位置: 首页 > news >正文

做百度网站的公司哪家好/网络营销与管理

做百度网站的公司哪家好,网络营销与管理,深圳专业做网站多少钱,政府网站建设集约化服务器服务器框架 一、两种高效的事件处理模式 服务器程序通常需要处理三类事件:I/O事件,信号和定时事件。后面会一次介绍。   这一节先介绍两种高效的事件处理模式:Reactor(同步I/O模型)和Proactor(异步I/O模…

服务器框架

一、两种高效的事件处理模式

  服务器程序通常需要处理三类事件:I/O事件,信号和定时事件。后面会一次介绍。
  这一节先介绍两种高效的事件处理模式:Reactor(同步I/O模型)和Proactor(异步I/O模型)。

Reactor模式

描述:

  • Reactor模式,它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将该事件通知工作线程(逻辑单元)。
  • 除此之外,主线程(I/O处理单元)不作任何其他实质性工作。
  • 读写数据,接收新的连接,以及处理客户请求均在工作线程(逻辑单元)完成。

流程:
 使用同步I/O模型(以epoll_wait为例)实现的Reactor模式的工作流程是:

  1. 主线程往epoll内核事件表中注册socket读就绪事件;
  2. 主线程调用epoll_wait等待socket上有数据可读;
  3. 当socket上有数据可读时,epoll_wait通知主线程。主线程则将socket可读事件放入请求队列;
  4. 睡眠在请求队列上的某个工作线程被唤醒,它从socket读取数据,并处理客户请求,然后往epoll内核事件表中注册该socket上的写就绪事件;
  5. 主线程调用epoll_wait等待socket可写;
  6. 当socket可写时,epoll_wait通知主线程,主线程将socket可写事件放入请求队列;
  7. 睡眠在请求队列上的某个工作线程被唤醒,它往socket上写入服务器处理客户请求的结果。

在这里插入图片描述

Proactor模式

描述:
  将所有I/O操作都交给主线程和内核来处理,工作线程仅仅负责业务逻辑。更符合之前提到的服务器编程框架。
流程:
  使用异步I/O模型(以aio_read和aio_write为例)实现Proactor模式的工作流程是:

  1. 主线程调用aio_read函数向内核注册socket上的读写完成事件,并告诉内核用户读缓冲区的位置,以及读操作完成后如何通知应用程序。
  2. 主线程继续处理其他逻辑。
  3. 当socket上的数据被读入用户缓冲区后,内核将向应用程序发送一个 信号,以通知应用程序数据可用。
  4. 应用程序预先定义好的信号处理函数选择一个工作线程来处理客户请求。工作线程处理完客户请求之后,调用aio_write函数想内核注册socket的写完成事件,并告诉内核用户写缓冲区的位置,以及写操作完成时如何通知应用程序。
  5. 主线程继续处理其他逻辑。
  6. 当用户缓冲区的数据被写入socket之后,内核将向应用程序发送一个信号,以通知应用程序数据已经发送完毕。
  7. 应用程序预先定义好的信号处理函数选择一个工作线程来做善后处理,比如决定是否关闭socket。
    流程图如下:
    在这里插入图片描述
      连接socket上的读写事件是通过aio_read/aio_write 向内核注册的,因此内核将通过信号来向应用程序报告连接socket上的读写事件。所以,主线程中的epoll_wait调用仅能用来检测监听socket 上的连接请求事件,而不能用来检测连接socket 上的读写事件。

同步I/O方式模拟Proactor模式

原理:主线程执行数据读写操作,读写完成之后,主线程向工作线程通知这一“完成事件”,工作线程处理后续逻辑。
流程:

  1. 主线程往epoll内核事件表中注册socket上的读就绪事件。
  2. 主线程调用epoll_wait等待socket上有数据可读。
  3. 当socket上有数据可读时,epoll_wait通知主线程。主线程从socket循环读取数据,直到没有更多数据可读,然后将读取到的数据封装成一个请求对象并插入请求队列。
  4. 睡眠在请求队列上的某个工作线程被唤醒,它获得请求对象并处理客户请求,然后往epoll内核事件表中注册socket上的写就绪事件。
  5. 主线程调用epoll_wait等待socket可写。
  6. 当socket可写时,epoll_wait通知主线程。主线程往socket上写入服务器处理客户请求的结果。
    流程图如下:
    在这里插入图片描述

二、编程框架

在这里插入图片描述
模块说明:

模块单个服务器程序服务器集群
I/O处理单元处理客户连接,读写网络数据作为接入服务器,实现负载均衡
逻辑单元业务进程或线程逻辑服务器
网络存储单元本地数据库、文件或缓存数据库服务器
请求队列各单元之间的通信方式各服务器之间的永久TCP连接

两种高效的并发模式

三、并发模式适合:I/O密集型任务

方式:多进程和多线程(后面讨论)
描述:并发模式是指I/O处理单元和多个逻辑单元之间协调完成任务的方法。
服务器主要有两种并发编程模式:

  • 半同步/半异步模式
  • 领导者/追随者模式

1.半同步/半异步模式
解释:这里的“同步”和“异步”
同步:程序完全按照代码序列的顺序执行
异步:程序的执行需要由系统事件来驱动,这里的系统事件包括中断、信号等。
在这里插入图片描述

同步线程:按照同步方式运行的线程称为同步线程
异步线程:按照异步方式运行的线程称为异步线程

半同步/半异步模式:同步线程用于处理客户逻辑,异步线程用于处理I/O事件。

2.半同步/半反应堆模式
结合考虑两种事件处理模式(Reactor和Proactor)和几种I/O模型(阻塞I/O,I/O复用,SIGIO信号,异步I/O),则半同步/半异步就存在多种变体
半同步/半反应堆模式就是其中的一种。
如下图所示:
在这里插入图片描述
特点:
异步线程只有一个,由主线程来充当,负责监听所有socket上的事件。
如果有新的连接请求,主线程就接受之,以得到新的连接socket
在epoll内核事件表中注册该socket上的读写事件
如果连接socket上有读写事件发生,即有新的客户请求到来或有数据要发送到客户端,主线程就将该连接socket插入请求队列。
所有工作线程都睡眠在请求队列上,当有任务到来时,它们将通过竞争获得任务的接管权。

3.领导者/追随者模式
描述:多个工作线程轮流获得事件源集合,轮流监听、分发并处理事件的一种模式。
关键:领导者的变换和I/O事件的处理
实现:在任意时间点,程序都仅有一个领导者线程, 它负责监听I/O事件,而其他线程都是追随者,它们休眠在进程池等待成为新的领导者。当前领导者如果检测到I/O事件,首先要从线程池中推选出新的领导者线程,然后处理I/O事件。
结构:
a
说明:
句柄集:表示I/O资源,在Linux下通常就是一个文件描述符。
线程集:所有工作线程的管理者。负责各线程之间的同步和新领导者线程的推选。
事件处理器及其子类: 用回调函数的方式处理某事件发生时对应的业务。
工作流程:
在这里插入图片描述

参考博客:
https://blog.csdn.net/fanyun_01/article/details/78975872
https://blog.csdn.net/isunbin/article/details/88423270

http://www.lbrq.cn/news/1358191.html

相关文章:

  • 北京手机网站建设/互联网推广运营是做什么的
  • 网站建设方案书格式/域名注册服务网站
  • 发优惠券网站怎么做/百度文库登录入口
  • 福田做网站的/b2b网站有哪些平台
  • 网页网站动作效果做的比较棒/国外服务器免费ip地址
  • 网站公司是做什么的/免费的黄冈网站有哪些
  • 做办公设备网站/商丘seo教程
  • 字形分析网站/百度推广培训
  • 禁用软件app大全/福州关键词排名优化
  • 纯ajax网站如何做seo/百度小说官网
  • 自己做游戏网站学什么/今天的新闻
  • 多语种网站制作/学it什么培训机构好
  • 千图app的优势/长沙seo网络优化
  • 个体工商户能够做经营性网站吗/站长工具seo排名
  • 住房和城市建设部网站/百度seo排名优化软件
  • 榆林电商网站建设/上海网络推广培训机构
  • 个人网站建设方法和过程/暴疯团队seo课程
  • 盐城做网站企业/长春网站开发公司
  • 江苏做网站的公司/网络优化工具app手机版
  • 城乡建设部网站安全员证书查询/什么叫营销
  • 公司网站备案需要每年做吗/如何制作简单的网页链接
  • 做婚庆网站的功能定位/在百度怎么创建自己的网站
  • 网上做平面设计的网站/世界大学排名
  • 怎样做企业网站建设/班级优化大师下载安装最新版
  • 网站开发所需要注意的问题/百度灰色词排名代发
  • 响应式网站建设代理商/宁波seo外包代运营
  • 优享揭阳网站建设/宁德市公共资源交易中心
  • dede如何手机网站和电脑网站的数据同步更新/优化网哪个牌子好
  • 公明网站建设/免费推广网站地址大全
  • 绍兴做公司网站的公司/专业软文代写
  • SpringBoot 3.x整合Elasticsearch:从零搭建高性能搜索服务
  • RHCA03--硬件监控及内核模块调优
  • BeanFactory 和 ApplicationContext 的区别?
  • 国内办公安全平台新标杆:iOA一体化办公安全解决方案
  • 大模型之后,机器人正在等待它的“GPT-1 时刻”
  • Druid手写核心实现案例 实现一个简单Select 解析,包含Lexer、Parser、AstNode