zoukankan      html  css  js  c++  java
  • 高效并发服务器模型

    1、单线程/阻塞/同步模型

    适用范围:单一连接
    缺点:多连接时相互影响,一个阻塞,别的也得不到响应

    2、多进程/阻塞/同步模型

    适用范围:连接数较少,且使用的资源较多,比如文件操作
    缺点:系统进程数有上限,不适用大量并发连接,且进程间切换开销较大

    3、多线程/阻塞/同步模型

    适用范围:连接数较少,且使用系统资源不多,可多个线程共享
    缺点:系统线程数有上限,不适用大量并发连接,且线程间的需要保护

    4、单线程/非阻塞/同步模型

    特征:强行逐个连接轮询处理,没有探测
    适用范围:连接数较少
    缺点:需要处理数据的拼接,且凭空占用资源,CPU高

    5、select事件驱动模型(单线程/阻塞/同步模型/先探测后处理/挂起式阻塞)

    特征:事件驱动,先集中探测事件,再对有事件的连接逐一响应
    适用范围:连接数中
    缺点:探测效率不高,且探测和处理处于同一线程,处理时间较长时容易影响探测;

    6、平台相关的驱事件驱动(双线程/阻塞/异步模型/先探测后处理/挂起式阻塞/探测和响应线程分离)

    特征:使用特殊平台自身的接口,linux为poll、epoll,BSD为kqueue、solaris为/dev/poll、windows为iocp;    
    适用范围:大量并发连接
    优点:使用消息队列或信号等方式将事件探测和响应分离在不同线程,从而确保事件探测不会被响应影响;
                探测和响应的线程都使用了挂起机制,从而有效防止了线程空转,只占用很少的资源;            
    缺点:难于跨平台


    7、开源跨平台事件驱动模型(双线程/阻塞/异步模型/先探测后处理/挂起式阻塞/探测和响应线程分离)

    适用范围:大量并发连接
    优点:跨平台        
    缺点:需要第三方开源库来移植和封装平台
    开源例子:libev、libevent、ACE、asio

    8、事件驱动模型的抽象

    最大限度地利用网络本身的并发能力;
    本地资源不能成为网络并发瓶径;
    多个连接之间不能相互阻塞;
    事件响应不能阻塞事件探测;
    线程无任务时不能空转;

    9、网络I/O术语

    单线程/多线程/多进程
    阻塞/挂起式阻塞/超时阻塞/非阻塞/空转/轮询
    同步/异步/消息队列/信号
    先探测/后响应/集中探测/线程分离
    并发连接数
    开源/跨平台

  • 相关阅读:
    .Net Cache及(HttpRuntime.Cache与HttpContext.Current.Cache的区别)
    Autofac 属性注入的方式
    AutoFac创建实例的方法解析
    MongoDB 增删改查 CRUD 操作
    MongoDB 3.4版本在windows环境下的安装与配置
    Stack Overflow 2017 开发者调查报告
    使用SVN对GitHub进行版本管理
    MongoDB.Driver for C#
    Dapper.Net 轻量级的ORM 框架2
    Selenium webdriver 安装(一)
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2210481.html
Copyright © 2011-2022 走看看