Swoole 2019 :化繁为简、破茧成蝶

栏目: PHP · 发布时间: 7年前

Swoole 开源项目从 2012 年开始发布第一个版本,到现在已经有近 7 年的历史。在这七年的时间里:

  • 提交了 8821 次代码变更

  • 发布了 287 个版本

  • 收到并解决 1161 次 issue 反馈

  • 合并了 603 次 pull request

  • 共有 100 位开发者贡献代码

  • 在 GitHub 收获了 11940 颗星

Swoole 2019 :化繁为简、破茧成蝶

协程

2018 年我们推出了全新的 Swoole4 版本,在此之前 Swoole 主要的编程方式还是同步阻塞模式或异步回调。新的基于协程实现的 CSP 编程逐渐成为我们 唯一 推荐使用的编程模式。协程将纷繁复杂异步编程大大简化。使用 Swoole4 协程,既简单又强大。在未来的 Swoole5 版本,我们计划删除非协程的相关特性和代码,减少历史包袱,提升稳定性,降低复杂度,减少不必要的选项,纯粹协程化。

过去六年我们的团队主要以兼职开发为主,团队成员大多来自于腾讯、阿里、滴滴、百度、360、小米等国内一线互联网企业,还有一部分是国外的 PHP 开发者,甚至 PHP 语言 ZendVM 内核作者 Dmitry Stogov 也曾向 Swoole 贡献了代码。除此之外,我们还招募了一些在校大学生为 Swoole 编写代码,逐步培养年轻一代开发者。

在 2018 年 7 月份我们组建了全职开发团队,专注于 Swoole 内核以及 Swoole Cloud 云原生组件和生态链的开发。告别过去的草莽班子,转变为专业化的开源技术研发团队。

我们的目标是让 Swoole 项目成为 Node.js 、 Go 这样的工业级技术,成为 PHP 编程语言的在异步 IO 和网络通信方面的基石。

研发管理

成立全职研发团队后,我们逐渐建立了非常完善的研发管理体系,提升 Swoole 的软件质量。主要包括以下几个方面:

测试驱动(TDD)

现在我们投入大量精力实现单元测试脚本、压测脚本、自动化测试,提升单元测试覆盖率。目前已有 680 项测试用例, 17 项压测项目,在 Travis-CI 平台可以看到每一次 Commit 和 Pull Request 的编译、测试结果。

研发工作也基于 TDD 进行,在开发新特性、重构、 Bug Fix 时,会先编写对应的单元测试脚本,测试覆盖到代码变更的所有场景。

Swoole 2019 :化繁为简、破茧成蝶

代码审查(Code Review)

团队成员之间进行代码交叉审查、互相 Code Review ,对于代码变更的细节进行充分的评估和讨论。

重大变更,会进行团队 Review ,花费数小时甚至数天讨论每一行代码变更细节。

RFC 机制

对于非 Bug Fix 、非性能提升、非重构,新特性或有可能改变底层行为的变更,我们会分为 4 个步骤进行。

  1. 发起 RFC 的提案, https://github.com/swoole/rfc... ,提案内容会详细阐述此项变更的前因后果、相关配置项、影响的范围、使用方法、示例。

  2. 提案讨论,我们会对提案进行充分的讨论,刨根问底,分析优劣,推敲细节。所有问题均讨论清楚后,最终立项,开始实现。

  3. 开发负责人创建 git 分支,编写单元测试脚本,编写代码,实现提案中的所有内容,最终发起 Pull Request

  4. 交叉评审,检查代码,提出改进意见,反馈给开发负责人,继续完善细节。最终合并到主干。

整个过程均是在 GitHub 平台公开进行的,对 Swoole 项目感兴趣的 PHPer 均可参与。

Swoole 2019 :化繁为简、破茧成蝶

灰度测试

为了保证正式版本的稳定性,我们在发布前会在内部项目上进行灰度测试,检验新版本的稳定性。

另外我们与大部分 Swoole 框架作者建立了联系,新版本会先发给各大框架的作者提前试用。有重大底层变更、或不兼容项会提前与其他 Swoole 之上的开源项目作者进行沟通。

总结

在过去的几年, Swoole 项目做的并不是很专业,存在较多 BUG 和难用的地方,也让很多使用者踩到了不少坑。 最近半年成立全职研发团队后,我们在研发管理方面进步飞快, Swoole 的稳定性、成熟度方面已今非昔比 。稳定性始终是第一位的,我们在未来将会更加谨慎、严谨,保证质量。

重构

2018 年下半年我们对底层的代码进行了多次重构,在代码结构、可读性、复用性、封装度方面进行了很多优化。使得 Swoole 软件更为简洁、优雅。

编程语言方面,我们现在逐渐使用 C++ 替代 C 语言。 C++ 提供的面向对象、智能指针、容器、模板等特性能够帮助我们进一步提升团队的开发效率。

在此也欢迎各位 PHPer 参与 Swoole 项目,贡献代码。

文档

Swoole 的文档也是广为开发者诟病的一个方面。在 2018 年我们团队在文档方面逐渐加大投入。重新编写梳理文档,加入丰富的例子程序,加入更详细的配图,修复细节问题,删除带有感情色彩的语句,更加客观中立严谨。

2019 未来

新的一年我们主要有 3 个方向上发力。

做减法

删除非协程的特性,删除不必要的模块,减少历史包袱,提升稳定性、降低复杂度,减少不必要的选项,化繁为简,更简单。

Swoole 内核层面仍然会继续不断重构、精简,减少代码行数,清理冗余代码,尽可能地实现代码复用。

深入项目

在 2018 年底,我们已经开始逐渐与在生产环境上大量使用 Swoole 的企业建立联系,包括 腾讯云 、 阅文 、 好未来 、 陌陌 、 优信 等企业。了解实际应用场景、业务模式,进行深度交流合作,提供建议,帮助企业技术团队更好的解决业务问题,接受反馈改进底层。

生态链

2019 年我们会基于 Swoole4 协程开发一些配套的 工具 和组件,弥补 PHP 在 Cloud Native 时代生态链方面的不足。


以上所述就是小编给大家介绍的《Swoole 2019 :化繁为简、破茧成蝶》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

Web性能优化

Web性能优化

Patrick Killelea 谢 / 谢文亮 / 清华大学出版社 / 2003-11-01 / 49.00元

本书讲述如何将Web性能调至最佳状态。书中不仅谈到了Web服务器软件的优化,而且还涉及到如何流水化处理Web内容,如何从浏览器端着手优化性能,如何调校客户端和服务器的硬件,以及如何最大限度地使用网络本身的特性。 书中的内容涉及到影响性能好坏的本质,并为得到立竿见影的效果提供了具体建议。本书向您娓娓道出评价计算性能高低的准则,并在后半部分讲述从客户端、网络直到服务器这一链条中每个环节的薄弱之一起来看看 《Web性能优化》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具