Swoole 2020 :4.5 新版本的规划

2018-01-18 16:01:19 1000 思小齐 思小齐

转眼 Swoole 开源项目已经历 8 个年头。这 8 年里,有 116 位开发者为 Swoole 贡献了内核代码。有无数 PHP 开发者为 Swoole 提供 BUG 反馈和改进建议。也有大量 Swoole 用户活跃在 Swoole 的问答社区、SegmentFault Swoole 专栏、QQ/微信技术交流群。在 GitHub 平台也累积了 1.5万 + 的 star。作为 Swoole 的创始人、核心开发者,倍感荣幸。感谢各位开发者为 Swoole 生态所做出的贡献。我们一定会不忘初心,坚持开源。

Swoole 4.5 版本

2019年12月份我们规划了新的 4.5 版本,这个版本的主题是 “代码架构重构”。4.4 将作为LTS分支长期支持。在 4.5 版本之前,Swoole 底层更多地是偏向于快速实现,没有完整的代码架构设计,并且代码规范做的较差。编程语言方面也较为混乱,同时存在 C 和 C++ 的源文件。头文件的引用也不够规范,如在非 Server 模块中引用了 server.h 。其实社区中早已有很多 C/C++ 方面的开发者对此提出了建议。在此之前我们团队有很多优先级更高的工作需要完成,在代码规范方面投入的时间精力较少。在新的 4.5 版本中,我们将投入大量时间精力,重新设计代码架构,彻底改变这个局面。

主要工作包括以下几个方面:

  • 改造 Event API ,屏蔽 int 型 fd 的使用,统一为 swSocket 对象
  • 移除 socket_array 全局变量
  • Server Master 彻底移除锁的使用,大幅提升并行能力
  • 全面切换为 C++
  • 优化从 Reactor -> Worker -> PHP onReceive 数据传递方式,减少内存 Copy,onReceive 事件回调函数的性能提升 4 倍

根据社区用户的反馈,在 4.5 版本中将会增加一些新特性:

  • HTTP2\Client 支持 pipeline recv
  • 内置 FastCGI 协程客户端,与短生命周期 fpm 服务完美融合
  • 增加 Coroutine/Batch API,可以并行执行 N 个函数,并接收返回值数组
  • 增加 onReload 事件回调,在发生 reload 之前触发

另外,我们发现使用 gRPC 、Http2 的 Swoole 用户越来越多,Http2 模块存在一些 BUG,在 4.5 版本中我们会对 Http2 Client & Server 做一次大的重构工作,解决所有已知问题,稳定性和健壮性大幅提升。

4.5 版本也将移除一些已废弃的特性:

  • 移除 Buffer 模块
  • 移除 Runtime::enableStrictMode

Swoole 文档计划

由于Swoole是非常底层的软件,内核开发者大量精力都放在了添加新特性,处理BUG上面,对于大家一致吐槽的文档问题一直没有精力解决,现在我们有了更多的开发者以及背后的商业化支持公司,已经有精力解决文档问题了,新的文档旨在解决大家一直吐槽的文档问题,采用现代化的文档组织形式,只包含Swoole4的内容,修改了大量老文档中错误的内容,优化了文档细节,增加了示例代码,新的文档预计在年后发布。

Swoole 核心开发者

由于现在公司项目的工作任务较多,没有过多精力参与到内核开发中。从 4.5 版本开始,我将逐渐减少代码贡献,分阶段退出核心开发组。交给新一代开发者们:Twosee、Shiguangqi、CodingHuang & 其他更多伙伴 。

Twosee 会作为 Swoole 开源项目新一代灵魂人物,就像 PHP 开源的 Nikic 。

Swoole 商业化

从 2018 年起 Swoole 开始了商业化的探索。经过一年半的努力,在 Swoole 项目核心开发者郭新华的带领下,公司勉强达到了自负盈亏的状态。其实创建这个公司的初心是通过提供一些商业服务,带来资金收入,这样可以支持我们整个 Swoole 内核研发团队继续投入到 Swoole 开源事业。也能有更多资源投在文档、测试、社区运营、布道推广上

在 2019年 识沃公司(Swoole 商业公司)赞助了 PHPCon 大会,向 Swoole 社区很多活跃的贡献者和用户赠送了 T恤、帽衫 等小礼物,并通过对企业的深入合作发现了很多需求,给社区反馈了很多高质量bug。

新华是 Swoole 开源和商业的核心力量。在开源领域,新华贡献了:

  • php-cp:MySQL 连接池软件,在聚美优品被大量使用
  • swoole_serialize:专门为 PHP7 设计的高性能二进制序列化模块,性能比 JSON/PHP串化高出很多、内存占用更少

另外,Swoole 商业公司中很多核心的项目也是新华完成开发的:

2019 年底 我们新开发了 Swoole Plus 软件,在 Swoole 社区版本之上,增加了一些性能调优的方案,以及安全防护、攻击检测、流量控制、Hbase/Solr-Cloud 支持。功能特性是其次的,主要是为企业提供商业支持服务。帮助企业解决 PHP & Swoole 项目的技术难题。让那些想大规模应用Swoole技术的公司可以放心的使用我们的技术。

明年我们将陆续推出很多应用级别的解决方案,即时通讯(IM)、安全网关、物联网(IOT)、游戏、客服系统等 Swoole 应用项目。

结语

即便我们没有 Google、Facebook、Microsoft 这些大厂那样的资金和光环,也绝不放弃。正是对开源技术的热爱,对 PHP 语言的热爱,才使得我们能够坚持下去。

我们的目标是将 Swoole 做成工业级的软件,作为 PHP 语言网络通信方向的基石。