skynet 1.4.0
又是一年过去了,skynet 目前保持着一年一个发布版的开发进度。skynet 1.4.0 发布版将于近期冻结。
这次的主要更新是将 Lua 更新到了 5.4.2 (尚未发布,但 github 仓库中的版本号已经到了 5.4.2 )。可能会让 skynet 的许多项目享受到分代 gc 的好处。如果使用大量 agent 服务的模式,将会降低整体的内存峰值开销(GC 更加及时)。lua 5.4 中 table 的内存开销也比之前的版本要小,运行性能也有所提升。
升级到 lua 5.4 基本不需要修改过往的 Lua 代码。C 库需要重新编译,但基本不需要修改。但如果可以改用新版的 lua_newuserdatanv
取代 lua_newuserdata
会更好。
skynet 依然提供了针对多 vm 共享 proto 的补丁。和以前一样,这是一个可选项,可以自行编译官方版本的 lua 。
另一个新特性是 skynet.select 。它将给 skynet 的 lua api 提供多个并发多个请求的能力。具体可以看过往的 blog 解释 。
在网络方面,增强了流量控制的支持。这会对基于 skynet 做重 IO 操作(例如文件服务器)的业务有所帮助。在上个版本,对于写 socket 有 warning 消息的支持,可以让写缓冲区太大后,得到消息暂停业务层产生新数据;在写缓冲区清空后再延续。
但对于读缓冲区满没有设计应对的方法。这是因为,skynet 设计时假设上行数据的 IO 压力通常小于处理压力(游戏业务的特点)。cpu 总有能力消化掉客户端传来的流量。这个版本中,新增了 pause/resume 的 C API 通知网络底层暂停及延续 socket 的读操作。在 Lua 层,这个过程是自动进行的,不需要业务层主动干预。一旦 lua 服务收到了太多网络包未能被业务层读取(积累在 socket 模块中)将自动发送 pause 消息暂停网络层的接收,当读空缓冲区后,再次发起读请求则会通知网络层重新开启读数据。
另外,这次的版本在 ssl websocket mysql sproto crypt 等内置库方面均有加强。这得益于 skynet 越来越多的用户。这些增强代码几乎都来自于社区的贡献。skynet 到现在已经在 github 上拥有了 9.4K 的 star ,3.5K 的 fork ,以及 92 个 Contributors 。是用户社区保障了项目的健壮。
感谢所有 skynet 的用户,特别是为 skynet 提交 pr ,解答 issue,审核 commit 的朋友。
Comments
Posted by: Anonymous | (25) December 10, 2020 03:07 AM
Posted by: jack | (24) November 30, 2020 04:37 PM
Posted by: 老九 | (23) November 15, 2020 11:49 AM
Posted by: Theo | (22) November 12, 2020 05:26 PM
Posted by: 老周 | (21) November 3, 2020 02:24 PM
Posted by: manlin | (20) November 3, 2020 08:57 AM
Posted by: 韩一 | (19) November 3, 2020 12:30 AM
Posted by: ZZ | (18) November 2, 2020 07:38 AM
Posted by: 笑傲江湖 | (17) October 31, 2020 12:24 PM
Posted by: 9527 | (16) October 29, 2020 09:49 AM
Posted by: Cloud | (15) October 28, 2020 10:33 AM
Posted by: zuene | (14) October 28, 2020 09:42 AM
Posted by: yongxinchang | (13) October 28, 2020 09:00 AM
Posted by: 菜鸟浮出水 | (12) October 27, 2020 04:43 PM
Posted by: xi han | (11) October 26, 2020 03:30 PM
Posted by: sandy | (10) October 23, 2020 09:38 AM
Posted by: Cloud | (9) October 22, 2020 03:10 PM
Posted by: 霓裳 | (8) October 22, 2020 09:47 AM
Posted by: colin | (7) October 21, 2020 09:56 PM
Posted by: andy | (6) October 21, 2020 06:12 PM
Posted by: coco | (5) October 21, 2020 03:39 PM
Posted by: 六道 | (4) October 21, 2020 02:19 PM
Posted by: 菜鸟浮出水 | (3) October 21, 2020 10:20 AM
Posted by: peng power | (2) October 21, 2020 09:54 AM
Posted by: 蜗牛 | (1) October 21, 2020 09:33 AM