次时代Swoole 青年PHP的无尽探索 Twosee PHPCon2020

  • 44 浏览

PHPConChina

2020/10/25 发布于 技术 分类

文字内容
1. 次世代Swoole 青年 的无尽探索 PHPConChina
2. PHPConChina 历年完整 PPT 下载: https://github.com/ThinkDevelopers/PHPConChina 视频回看地址: https://www.itdks.com/Home/Act/apply?id=5366 PPT 版权归属 PHPCon 组委会和嘉宾本人所有,请勿通过其他渠道提供下载
3. PHPConChina 官方渠道 • • • • • 官网:http://www.phpconchina.com/?o=ppt 公众号:PHPCon 纪念品购买:https://k.weidian.com/H3=4lVho 客服咨询:PHPConChina(个人微信号) 官方QQ群: 34449228( 加群注明 PHPCon ) 扫码关注了解行业最新动态
4. 个人介绍 1 2 3 Swoole核心作者 长期活跃于PHP或异步网络IO相关的各大开源 项目社区 没了 .... 没了 ....
5. 稳定性 逐渐脱离高速迭代期,更多的单 元测试,持续专注代码优化 Swoole 4.5 主要工作 全面C++化 更好的内存管理方式,更高的开 发效率,更严格的编译时检查 持续验证 更完善的文档 更多的项目拥抱协程
6. 主要贡献者 2019.8 ~ 2020.10
7. Travis CI 代码审查 CodeCov
8. 新的挑战 更高的性能 更好的兼容性 更稳定的内核 更人性化的封装 更现代化的风格 更好的跨平台支持
10. C提供核心组件 + PHP实现逻辑处理 30% 70% C PHP 拒绝一味追求性能,做一个平衡大师
11. 如何减少底层代码量 大量ZendAPI调用可被转译为PHP代码 安全性 代码量 心智负担 性能 性能 性能
12. 实现一个PSR规范的高性能Buffer 内存起点 偏移量 读写位置
13. 性能杀手之内存拷贝 PHP-Stream: 读写内存 > 两次拷贝 Buffer: 写时拷贝 & 内存映射
14. 性能杀手之内存拷贝 Writev 从多个非连续缓冲区写入数据
15. 现代化的错误处理方式 异常机制 Exception / Error 链式调用 err != nil 协程级退出 Uncaught Exception exit() / die()
16. 协程中断特性 识别取消操作 跨协程抛出异常 不可捕获异常 zend_unwind_exit()
17. 现代化: 面向对象与PSR实现 可继承,可重写 无需代理对象 扩展性极强 对象数量减少一半 使用PSR实现,上层应用不再需要 对底层提供的对象进行二次转换, 框架层性能可能会有进一步提升
19. 安装方式 Composer 除传统的PECL安装扩展方式,我们希望尝试更多的可能性。 Swow整库仅百KB级别大小,且编译速度极快。 通过Composer进行安装,还可实现不同项目使用不同版本 的扩展,而非全局安装。 在精力允许的情况下,我们也希望对接更多二进制发行源或 提供官方二进制发行版下载。
20. 生态复用之异步事件库 libuv • 工业级验证 • 天然适合单线程多进程模型 • 适配各种系统深坑BUG • nodejs/julia社区持续输出 • C语言项目模范之作
21. 生态复用之HTTP解析器 llhttp • 性能好于 http-parser • 对外接口保持一致,便于无缝升级 • 使用 JS/TS 实现,便于社区维护 • 支持解析中断,异步变同步 parser input size bandwidth reqs/sec time llhttp 8192.00 mb 1777.24 mb/s 3583799.39 ops/sec 4.61 s http_parser 8192.00 mb 694.66 mb/s 1406180.33 req/sec 11.79 s
22. 消灭异步回调 HTTP Parser WebSocket
23. 协程的编程思路 异步转同步
24. 模型优化之主协程支持 无需创建协程 直接运行代码 处处都是协程 无需反复检查 无缝对接PHPUnit 无需重写入口 类Opcache 开启后无影响
25. 性能 ab –c 100 –n 1000000 –k Swoole单进程协程服务 5.6W QPS Swow协程单进程服务 8.3W QPS
26. 可替换的系统调用驱动
27. CPU密集计算 100%
28. 协程语境下的CPU调度问题 用户态 无CPU调度能力 多路复用程序 平均延迟增加 死循环 程序彻底卡死
29. WatchDog – 守护你的程序
30. WatchDog – 守护你的程序
31. SDB - 协程调试器 一行代码 一键开启 无需端口 可直接运行在TTY上 零成本 可在生产环境使用 功能强大 深度定制, 量身打造 类微型操作系统 PHP编写 实现极其简单 • • • • • • • • • • • • • • • • 查看当前所有协程状态 (ps) 窥视协程 (co id) 进入协程 (attach id) 查看调用栈 (bt) 查看栈帧 (f index) 打断点 (b) 单步调试 (n) 恢复运行 (c) 查看更多源码 (l) 打印变量 (p $var) 修改变量 (p $var = x) 执行命令 (p command()) 查看变量 (vars) 扫描僵尸协程 (z 时间) 杀死协程 (kill id) 杀死所有协程 (killall)
32. SDB —— 基本操作
33. SDB —— 进阶操作
34. 极客精神 追求极致 不那么重要但是可以达到的目标 纯C实现 极致优化和性能 连续内存 + 内存池 内核API/ABI稳定 全SAPI支持 与运行模式无关 类Opcache扩展 PHP生态下IO驱动新选择 构建兼容性 C99 无需考虑编译器版本 多线程支持 ZTS支持 可与parallel/pthread 扩展一同使用
35. 感谢dixyes贡献
36. Swow不是一个PPT项目 T H W TCP/UDP 服务 你可以搭建一个基于TCP/UDP的自定义应用 HTTP 服务 你可以搭建一个简单的HTTP应用服务器 WebSocket服务 你可以搭建一个基于WebSocket的聊天室 Road Map 70%
37. 这不是重复造轮子
38. 协程不是银弹