专栏首页恩蓝脚本Linux下几种并发服务器的实现模式(详解)

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下几种并发服务器的实现模式(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 详解Linux中的守护进程

    Linux系统启动时会启动很多系统服务进程,这些系统服 务进程没有控制终端,不能直接和用户交互。其它进程都是在用户登录或运行程序时创建,在运⾏结束或⽤户注销时终...

    砸漏
  • Django微信小程序后台开发教程的实现

    在微信开发平台(https://mp.weixin.qq.com)申请小程序并获取APP id

    砸漏
  • 什么是PHP7中的孤儿进程与僵尸进程

    我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进...

    砸漏
  • 知识点 | JavaScript事件浅析

    一个网页由三层组成(html 结构,js 行为,css 表现),一切的东西其实都建立在html上,html里面的dom提供了一些事件,然后通过js封装,我们可以...

    疯狂的技术宅
  • 76-闭包的用法

    下面的代码用到了《66-偏函数应用:简单的图形窗口》 图形窗口上的按钮有个command选项,其实它就是一个函数。如下:

    凯茜的老爸
  • SQuAD2.0来了!新增5万人工撰写问题,且不一定有答案 | ACL最佳短论文

    今日(6月13日),斯坦福NLP团队对外宣称,机器阅读理解数据集SQuAD(Stanford Question Answering Dataset)完成新一波更...

    量子位
  • 区块链交易所系统模式发展趋势分析

    比特币带动了区块链概念的诞生,区块链技术也让数字资产在近几年高速发展。区块链交易所作为各种数字资产币的“中转站”,整个区块链生态中不可或缺的一部分,未来的发展趋...

    用户2945713
  • kinmall解读区块链去中心化与中心化遇到问题

    随着加密货币的价格持续下跌,2018年全球区块链社区以惨淡结果收场。对某些人来说,这是一个进行反思的机会,一个告别炒作的机会,对我们过去几年所取得的成就进行真正...

    金猫kinmall
  • 测试前移之需求合理性验证

    有一次在使用时,我好奇的点了点几个入口,突然发现匿名的内容和实名确认名单,可以通过时间线进行关联,我简直惊呆了。

    sylan215
  • 链接地址中的target=”_blank”属性,为钓鱼攻击打开了大门

    现在,许多主流的互联网服务提供商都会在网页的链接地址中加入target=”_blank”属性,而这绝对是一种非常不安全的行为。不仅如此,target=”_bl...

    C4rpeDime

扫码关注云+社区

领取腾讯云代金券