前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swoole 2019 :化繁为简、破茧成蝶

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

作者头像
猿哥
发布2019-03-13 15:31:21
4850
发布2019-03-13 15:31:21
举报
文章被收录于专栏:Web技术布道师

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

  • 提交了 8821 次代码变更
  • 发布了 287 个版本
  • 收到并解决 1161issue 反馈
  • 合并了 603pull request
  • 共有 100 位开发者贡献代码
  • GitHub 收获了 11940 颗星

协程

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

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

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

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

研发管理

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

测试驱动(TDD)

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

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

代码审查(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 框架作者建立了联系,新版本会先发给各大框架的作者提前试用。有重大底层变更、或不兼容项会提前与其他 Swoole 之上的开源项目作者进行沟通。

总结

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

重构

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

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

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

文档

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

2019 未来

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

做减法

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

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

深入项目

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

生态链

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PHP技术大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 协程
  • 研发管理
    • 测试驱动(TDD)
      • 代码审查(Code Review)
        • RFC 机制
          • 灰度测试
            • 总结
            • 重构
            • 文档
            • 2019 未来
              • 做减法
                • 深入项目
                  • 生态链
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档