Linux下的几种并发服务器的设计模式

1>单线程或者单进程

  相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client

  不存在并发。

2>循环服务器和并发服务器

  1.循环服务器:一个server只能一次只能接收一个client,当当前client结束访问之后才能进行下一个client的连接。

  2.并发服务器:一个server同一时间可以响应很多客户端的访问。

3>select+多线程模式

 并发服务器的三种实现方式

  1.多进程并发服务器

  是指TCP连接后,每一个客户机的请求并不由服务器直接处理,而是由服务器创建一个子进程来处理

  2.多线程并发服务器

  多进程服务器是对多进程的服务器的改进,由于多进程服务器在创建进程时要消耗较大的系统资源,所以用线程来取代进程,这样服务处理程序可以较快的创建。据统计,创建线程于创建进程要快10100倍,所以又把线程称为“轻量级”进程。进程与进程不同的是:一个进程内所有线程共享相同的全局内存,全局变量等信息。

  是指TCP连接后,每一个客户机的请求并不由服务器直接处理,而是由服务器创

  3.多路复用I/O    

  I/O是为了解决线程/进程阻塞在那个I/O调用中,常用select或者pool

4>epoll

  在linux2.6之后有的epoll,实用的方法是:用一个线程专门进行端口的监听,accept接收到连接的时候,把连接设置成非阻塞方式,把epoll时间设置成边缘触发方式,加入epoll管理。接收线程阻塞在epoll的等待事件函数。另外一个线程专门用于数据发送。

  注意:

    1.如果把epoll设置成水平触发效率就下降采用select的水平。

    2.Unix系统下有单个进程打开的描述符的限制,还有系统内打开的描述符的数目限制。系统内打开的描述符数目限制由软硬链接限制两个。硬连接是根据机器的配置而不同。软连接限制可以修改但是必须小于硬限制。

  应用:

    Linux下大规模的TCP并发。

    当前并发还有其它的方式。比如线程池。进程池等,每种模式都有他的优缺点,如果大规模的并发,采用epoll会更好。

epoll的时间设置有边缘触发方式和水平触发方式

   1.水平触发方式:

      如果文件描述符已经就绪可以非阻塞的执行IO操作了,此时会触发通知。允许在任意时候重复检测IO的状态,没有必要每次描述符就绪后尽可能多的执行IO,select,poll就属于水平触发事件。

      只要满足要求就触发一个事件。

   2.边缘触发方式:

      如果文件描述符自上次状态改变后有新的IO活动到来,此时会触发通知。在收到一个IO事件通知尽可能多的执行IO操作,因为如果再一次通知中没有执行完IO那么就需要等到下一次新的IO活动到来才能获取就绪的描述符。信号驱动式IO就属于边缘触发。

      每当状态改变就触发一个事件。

     eg:现在有一个1000个字节的报文,无论是水平触发还是边缘触发,都会发送一个只读通知,当收到了100个字节后,水平触发因为还有字节没有读完,就会发送一个只读通知,但是边缘触发会一直保持等待的通知,等待接下来的报文的到来,直到边缘触发返回EWOULDBLOCK就摒弃这个socket。

    

        

  

Linux下几种并发服务器的实现模式的更多相关文章

  1. Linux下6种优秀的邮件传输代理

    导读 在互联网上,邮件客户端向邮件服务器发送邮件然后将消息路由到正确的目的地(其他客户),其中邮件服务器使用的一个网络应用程序称为邮件传输代理(MTA). 最好的Linux邮件传输代理(MTAs) 邮 ...

  2. Linux下几种文件传输命令

    Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...

  3. Linux下配置一个VNC服务器

    在Linux下配置一个VNC服务器,并设置2个用户,要求其中一个用户登录时不需要输入密码. 然后在客户端使用ssh+vncview的方式访问. 1确认vnc安装 2配置vncserver 3测试vnc ...

  4. Linux下几种文件传输命令 sz rz sftp scp

    Linux下几种文件传输命令 sz rz sftp scp 最近在部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具 ...

  5. [原创] Linux下几种文件传输命令 sz rz sftp scp介绍

    Linux下几种文件传输命令 sz rz sftp scp介绍 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具.由于它是基于SSH的,会在传输过程中对用户的密码.数据等 ...

  6. linux下搭建svn本地服务器

    在linux下搭建svn本地服务器可以很好的管理自己的代码,具体过程如下: # mkdir svn_local # cd svn_local  # svnadmin create led_diplay ...

  7. Linux下几种重启Nginx的方式,找出nginx配置文件路径和测试配置文件是否正确

    Linux下几种重启Nginx的方式,找出nginx配置文件路径和测试配置文件是否正确 目录在/etc/ngnix/conf.d下找出nginx配置文件路径和测试配置文件是否正确# /usr/sbin ...

  8. Linux下几种常见压缩方式测试对比

    目录 Linux下几种常见压缩方式测试对比 参考 简介 测试 总结 Linux下几种常见压缩方式测试对比

  9. linux下安装配置svn服务器

    linux下安装配置svn服务器 1. svn服务器安装 将subversion-1.4.0.tar.gz和subversion-deps-1.4.0.tar.gz传到服务器. tar xfvz su ...

随机推荐

  1. HDU.1575 Tr A ( 矩阵快速幂)

    HDU.1575 Tr A ( 矩阵快速幂) 点我挑战题目 题意分析 直接求矩阵A^K的结果,然后计算正对角线,即左上到右下对角线的和,结果模9973后输出即可. 由于此题矩阵直接给出的,题目比较裸. ...

  2. UVA.674 Coin Change (DP 完全背包)

    UVA.674 Coin Change (DP) 题意分析 有5种硬币, 面值分别为1.5.10.25.50,现在给出金额,问可以用多少种方式组成该面值. 每种硬币的数量是无限的.典型完全背包. 状态 ...

  3. js判断设备类型

    1. 判断微信 function is_weixin() { var ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/Micr ...

  4. 【BZOJ 4555】[Tjoi2016&Heoi2016]求和 多项式求逆/NTT+第二类斯特林数

    出处0.0用到第二类斯特林数的性质,做法好像很多,我打的是直接ntt,由第二类斯特林数的容斥公式可以推出,我们可以对于每一个i,来一次ntt求出他与所有j组成的第二类斯特林数的值,这个时候我们是O(n ...

  5. php 在线预览word

    一般类似oa或者crm等管理系统可能都会遇到需要再线查看word文档的功能,类似百度文库. 记得去年小组中的一个成员负责的项目就需要这个的功能,后面说是实现比较困难,就将就着用chm格式替代了.今天看 ...

  6. spring 整合 redis 单机版

    增加spring配置文件: application-jedis.xml <?xml version="1.0" encoding="UTF-8"?> ...

  7. CodeBlocks调试功能快捷教程

    在程序设计中,单步调试能够跟踪程序的执行流程.跟踪过程中,还可以观察变量的变化,从而发现其中存在的问题.单步执行除了可以帮助我们发现设计的程序中存在的问题,对于初学者,还可以帮助我们理解语言的机制. ...

  8. 使用自己的数据集训练和测试"caffenet"

    主要步骤可参考: http://blog.csdn.net/u010194274/article/details/50575284 补充几点: 1. convert函数是ImageMagick包里面的 ...

  9. 中频IF

    Intermediate 频率是指中频. 一般RF射频有三个频率,基带频率,中频,射频. 射频是发射到空中的频率,也就是我们一般说的2.4G, Sub-1G.但这个频率太高,不利于放大器做增益控制.所 ...

  10. ZooKeeper配额指南(十)

    配额 ZK有命名空间和字节配额.你可以使用ZooKeeperMain类来设置配额.ZK打印警告信息如果用户超过分配给他们的配额.这些信息被打印到ZK的日志中. $java -cp zookeeper. ...