PHP协程
司超
关于我
u 司超 chalesi
u 2011年 腾讯 SNG-即通综合部
u 2013年 Swoole官⽅方开发组成员
官⽅方⺴⽹网址:
项⺫⽬目地址:
u 2015年 QQ公众平台WEB后台技术负责⼈人
u 2015年 开源项⺫⽬目TSF创始⼈人
项⺫⽬目地址:
PHP边界的探索
Swoole架构图
什么是协程
u 进程,线程,协程
u 特点
ü 相对与线程切换速度快
ü 可定制⾃自⼰己调度策略
ü 不占⽤用系统线程数资源,系统性能影响⼩小
ü 协程数量只取决与内存⼤大⼩小,可创建上万个实例
u 协程的原理
协程能做什么
u 同步编码
ü 优点:逻辑清晰,开发简单
ü 缺点:吞吐量低,时延⼤大
u 异步编码
ü 优点:吞吐量⾼高,时延⼩小
ü 缺点:异步回调,开发难度⼤大
u 协程
ü 同步编程,异步调⽤用,性能和开发效率兼顾
⽀支持协程的语⾔言
u Lua
u Python
u C#
u Go
u Javascript
u C++
u ……
u PHP是世界上最好的语⾔言
TSF框架简介
u 底层基于swoole扩展构建的应⽤用层框架
u 对负责业务逻辑处理的worker进⾏行分组:每组都是⼀一个独⽴立的
swoole-serv;
u 基于zend Coroutine的双向通信实现协程
u 完善的监控体系,
u 通讯扩展性:⽀支持更多通讯⽅方式(TCP、UDP、HTTP);
u ⽇日志多种类型多种级别,可配置;
u 业务逻辑层⽀支持异步IO调⽤用+协程,异步IO超时机制
TSF协程调度
TSF框架图
启动⽅方式
u ⽀支持start,stop,reload,restart,shutdown, status
多Server实例
多Server实例
u 查询Server运⾏行状态
u 停⽌止 Swoole-Controller
Router
异步IO调⽤用
性能数据
Requests Per Second
TSF(四次串行) 10000
TSF(Mutical) 15000
TSF(无后端调用) 25000
Nginx+FPM(无后端调用) 5000
Nginx+FPM(四次串行) 1900
机器配置:TSF(Mutical)
压测服务器: 实体机4核 16G内存
后端调用机: 虚拟机 CPU 1G内存
/usr/local/apache/bin/ab -c 300 -n 100000 -p /tmp/
TSF案例
TSF未来展望…
u 更多异步IO协程⽀支持
ü Mysql, Redis, Memcache, Mogodb
u 频率控制
ü 单机频率控制,联机频率控制
u 更多通讯⽅方式
ü WebSocket,HTTPS,Unix socket
u 完善的⽇日志组件
ü 本地⽇日志加⺴⽹网络⽇日志
u 安全控制
ü XSS,SQL注⼊入,CRLF, ……
协程
安全
通讯 ⽇日志
频控