nginx php 长轮询 连接数 阻塞,socket服务的模型以及实现(7)–总结

首先,我们来熟悉一下基本知识,再回顾前几篇文章!

1:阻塞/非阻塞–这两个概念是针对 IO 过程中进程的状态来说的

阻塞 IO 是指调用结果返回之前,当前线程会被挂起

非阻塞指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回

2:同步/异步–这两个概念是针对调用返回结果来说的

同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回

当一个异步过程调用发出后,调用者不能立刻得到结果,实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者

3:多路复用(IO/Multiplexing)

为了提高数据信息在网络通信线路中传输的效率,在一条物理通信线路上建立多条逻辑通信信道,同时传输若干路信号的技术就叫做多路复用技术。

对于 Socket 来说,应该说能同时处理多个连接的模型都应该被称为多路复用,目前比较常用的有 select/poll/epoll/kqueue 这些 IO 模型.

4:惊群效应

惊群问题是由于系统中有多个进程在等待同一个资源,当资源可用的时候,系统会唤醒所有或部分处于休眠状态的进程去争抢资源,但是最终只会有一个进程能够成功的响应请求并获得资源,但在这个过程中由于系统要对全部的进程唤醒,导致了需要对这些进程进行不必要的切换,从而会产生系统资源的浪费.

更多资料可参考如下链接

我们接着回顾下前几篇文章的思绪

单进程阻塞模型,一次只能处理一个连接,效率极低!

多进程阻塞模型,一个进程处理一个连接!

单进程IO复用(select),同时处理的连接数不受限于进程数!

单进程IO复用(libevent),同时处理的连接数比select要好很多!

多进程IO复用(libevent),可以更好的利用多核!

增加了端口复用技术,性能更好!

通过几上几篇文章,对于我们用PHP写个socket服务有了基本的服务模型认识!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值