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

文登区城乡建设和规划局网站百度广告联盟一个月能赚多少

文登区城乡建设和规划局网站,百度广告联盟一个月能赚多少,linux版网站开发,concrete5 wordpress在上一篇文章【C】I/O多路转接详解(一) 在出现EPOLL之后,随之而来的是两种事件处理模式的应运而生:Reator 和 Proactor,同步IO模型常用于Reactor模式,异步IO常用于Proactor. 目录 1. 服务器编程框架简介2. IO处理1. R…

在上一篇文章【C++】I/O多路转接详解(一)

在出现EPOLL之后,随之而来的是两种事件处理模式的应运而生:Reator 和 Proactor,同步IO模型常用于Reactor模式,异步IO常用于Proactor.

目录

  • 1. 服务器编程框架简介
  • 2. IO处理
    • 1. Reactor模式
    • 2. Proactor模式
      • 2.1 使用异步读写接口实现Proactor
      • 2.2 使用Reactor模拟Proactor
  • 3. 并发模式
    • 3.1 半同步-半异步模式
      • 3.1.1 同步与异步
      • 3.1.2 同步与异步在服务器中的使用
      • 3.1.3 Half-SYNC/Half-Reactive模式
    • 3.2 领导者-追随者模式

1. 服务器编程框架简介

请添加图片描述
无论是对于单服务器架构还是分布式,集群架构,我们都可以将服务器分为四个主要板块:

  1. I/O处理单元
    • 管理用户连接,一般作为接入层(网关)存在
  2. 逻辑单元
    • 一个逻辑单元是一个用于完成业务的进程或者线程,它分析处理用户数据并将结果传给IO处理单元,直接发给客户端。
    • 在集群模式下,一个逻辑单元就是一台逻辑服务器,一般会有多个逻辑单元来进行并行处理任务
  3. 网络存储单元
    • 一般是数据库,缓存,以及文件,或者一台独立服务器。
  4. 请求队列
    • 请求队列是对单元间通信方式的抽象
    • 对于服务集群,请求队列是各台服务器之间预先建立的,静态的,永久的TCP连接。

2. IO处理

这一节,我们要讲解目前最主流的IO处理模式,主流网络库基本都是基于此实现,如libevent,moduo…

1. Reactor模式

Reactor模式要求 主线程(即IO处理单元)只负责监听文件描述符上是否有时间发生,有的话立即将事件通知工作线程(逻辑单元),除此之外,主线程不再做任何事情,读写事件,接受新连接等,这些都在工作线程完成。
请添加图片描述

这里有我实现的一个单进程的同步reactor模型(检测事件就绪 + 对数据读写 + 对数据业务处理),大家可以参考一下:
reactor demo

2. Proactor模式

proactor将所有的IO操作交给主线程和内核来处理,工作线程只负责业务逻辑。

2.1 使用异步读写接口实现Proactor

通常,我们可以使用aio_read来完成proactor,在这种实现方式中,连接socket上的读写事件是通过aio_read/aio_write向内核注册的,因此os kernel将通过信号来向应用程序报告连接socket的读写事件,也就说,主线程中的epoll_wait只能够监听socket上的连接请求事件,无法监视读写事件。
在这里插入图片描述


2.2 使用Reactor模拟Proactor

根据我们之前讲的proactor,关键在于工作线程只负责系统业务,而无需进行对于内核缓冲区的读写,即工作线程直接收到的就是数据包,而不是一个需要处理的事件。

根据这个思路,很容易想到,我们对reactor模式进行一点改动:主线程处理负责事件注册通知外,还需要执行数据的读写操作,读写完成之后,主线程向工作线程通知这一完成事件。那么从工作线程的角度,它们直接获取到了数据。
请添加图片描述

3. 并发模式

并发模式指IO处理单元和多个逻辑单元(多个进程/线程)之间协调完成任务的方法,服务器主要有两种并发编程模式:半同步-半异步模式,领导者-追随者模式。

3.1 半同步-半异步模式

3.1.1 同步与异步

注意,这里的同步异步并不是IO模型中的概念,即就绪事件和完成时间的差别。这里指的是:

  • 异步:程序的执行需要系统事件来驱动,比如:中断,信号。
  • 同步: 程序完全按照代码顺序执行
    在这里插入图片描述

3.1.2 同步与异步在服务器中的使用

对于一个线程来说,同步运行方式叫做同步线程,异步方式运行叫做异步线程。

  • 异步线程执行效率高,但是编写复杂,难以调试,拓展
  • 同步线程执行效率低,但是逻辑简单

对于一个服务器来说,我们既追求实时性,同时又要求并发程度好,因此,我们可以对于不同的部分采用不同的策略:

  • 异步线程用于处理I/O事件,监听到客户请求之后,将其封装为请求对象插入请求队列
  • 同步线程用于工作线程,请求队列(eg:线程池)将会把请求对象分配给同步工作线程
    在这里插入图片描述

3.1.3 Half-SYNC/Half-Reactive模式

基于以上思想,从reactor模式衍生出半同步/半反应堆模式。
在这里插入图片描述

  • 主线程:监听所有socket事件,但是只处理连接事件(即将新连接socket注册为可读事件),将就绪的读写事件写入请求队列。
  • 工作线程:从请求队列中获取就绪事件(连接socket),进行读写…

当然,这种模式不是死板的,也有一些更加高效的变式:

在这里插入图片描述

  • 主线程:值注册监听listen_sock,对于新的连接到来,进行accept建立连接并将返回的连接sock派发给工作线程
  • 工作线程:每个工作线程维护自己的工作线程,将主线程派发的sock注册到自己的事件循环,各自独立监听不同事件。

3.2 领导者-追随者模式

领导者-追随者模式见的并不多,这里简单介绍一下:
熟悉redis主从模式,或者说一些分布式协同算法的同学很快就能联想到,该模式就是使得多个工作线程轮流获取到事件源集合,轮流监听,分发与处理事件的模式。

每个程序的唯一一个领导线程将负责监听IO事件,其他线程暂时休眠。当前的leader thread检测到IO事件,则从线程池中的休眠线程中选出新的leader,然后自己去处理IO事件。


http://www.hkea.cn/news/817181/

相关文章:

  • 鞋子 东莞网站建设真正的免费建站在这里
  • 网站上微信的链接怎么做项目平台
  • 做网站后有人抢注关键词网络营销方案策划论文
  • 苏州网站建设网站seo优化的方法
  • 设计网装修seo顾问服
  • 网站ip拦截免费网站搭建平台
  • 深圳企业网站建设公司快速申请免费个人网站
  • 唯品会 一家专门做特卖的网站沈阳seo按天计费
  • 聊城手机网站建设郑州seo服务技术
  • 个人定做衣服店江门seo推广公司
  • 网站开发与网站建设山东济南seo整站优化费用
  • 香港疫情最新消息今天深圳seo教程
  • 维护一个网站难吗免费发布外链
  • 南安市网站建设成都今天重大新闻事件
  • 网站后台补丁如何做软文有哪几种类型
  • 网站建设的费用包括哪些内容资讯门户类网站有哪些
  • 一站式服务图片制作网页的基本步骤
  • 个人网站建设网站网络网站推广
  • asp做的药店网站模板北京百度快照推广公司
  • 网站建设泉州效率网络seo的优化策略有哪些
  • 页网站无锡网站制作推广
  • 一流的龙岗网站建设目前最靠谱的推广平台
  • 企业营销型网站费用短视频推广引流
  • 化妆品可做的团购网站有哪些seo研究中心南宁线下
  • 网站空间域名是什么做电商必备的几个软件
  • 软件公司运营是做什么的seo公司运营
  • 专业云南做网站福州短视频seo服务
  • 网站开发技术期中试题电商培训机构排名
  • 网站设计连接数据库怎么做如何进行百度推广
  • 日本网站图片做淘宝代购网络营销促销方案