Linux下几种并发服务器的实现模式(详解)

 更新时间:2017年12月29日 09:08:19   作者:`leisure  
下面小编就为大家分享一篇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下几种并发服务器的实现模式(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 探索Linux内核:Kconfig的秘密

    探索Linux内核:Kconfig的秘密

    今天小编就为大家分享一篇关于探索Linux内核:Kconfig的秘密,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Linux:FTP工具及SSH远程连接工具的使用方式

    Linux:FTP工具及SSH远程连接工具的使用方式

    这篇文章主要介绍了Linux:FTP工具及SSH远程连接工具的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Linux配置实现免密钥登录过程解析

    Linux配置实现免密钥登录过程解析

    这篇文章主要介绍了Linux配置实现免密钥登录过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Linux执行可执行文件提示No such file or directory的解决方法

    Linux执行可执行文件提示No such file or directory的解决方法

    这篇文章主要介绍了Linux执行可执行文件提示No such file or directory的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Linux下如何编译和执行c/c++程序

    Linux下如何编译和执行c/c++程序

    这篇文章主要介绍了Linux下如何编译和执行c/c++程序问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • cloudstack下libvirtd服务无响应问题

    cloudstack下libvirtd服务无响应问题

    这篇文章主要介绍了cloudstack下libvirtd服务无响应问题的相关资料,需要的朋友可以参考下
    2016-10-10
  • linux中alarm函数的实例讲解

    linux中alarm函数的实例讲解

    今天小编就为大家分享一篇关于linux中alarm函数的实例讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Linux远程访问及控制方式

    Linux远程访问及控制方式

    SSH(Secure Shell)是一种协议,用于安全地通过不安全的网络进行远程登录和其他网络服务,OpenSSH是SSH协议的一种开源实现,它支持数据加密,能有效防止信息泄露,适用于多种操作系统,SSH配置包括服务端和客户端,可以通过密码或密钥对验证方式进行身份验证
    2024-09-09
  • CentOS 6.8 安装vsftpd的方法步骤

    CentOS 6.8 安装vsftpd的方法步骤

    这篇文章主要介绍了CentOS 6.8 安装vsftpd的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • linux NFS安装配置及常见问题、/etc/exports配置文件、showmount命令

    linux NFS安装配置及常见问题、/etc/exports配置文件、showmount命令

    这篇文章主要介绍了linux NFS安装配置及常见问题,介绍的也比较详细特分享下,方便需要的朋友
    2014-07-07

最新评论