Nydus 开源项目 - 将 npm 包安装速度提高 8 倍,容器启动速度提高 100 倍

2022-07-04 12:08:01 +08:00
 imeoer

最近几年发生了很多事,我的个人项目纸小墨因为一些原因鸽掉了,已经打算在后面整理下开源。我也从前端转向了后端,在做和容器镜像相关的工作,最近两年我都在和同事小伙伴们维护开源项目 Nydus ,一个容器镜像 /数据分发加速框架。

发挥了下我的业余设计和前端技能,写了个简单的页面:

https://nydus.dev/

Nydus 简单来说就是实现了容器镜像的按需加载,利用 FUSE 技术,做到在容器启动后,再开始从远端(镜像中心)拉取必须使用的镜像数据(有一篇 FAST 论文研究分析说镜像拉取占了大约容器 76% 的启动时间,但却只有 6.4% 的数据是会被容器读取的)。这个思路并不新鲜,我们只是在镜像构建到运行做了很多优化工作,甚至为了提升性能,把它做到了内核态( Linux 5.19-rc1+)里去,让内核支持了 Nydus 格式。

也许对于小公司来说,镜像加速是完全用不到的,但对于大公司或者有大规模集群,对冷启动扩容延迟要求较高的场景(大促扩容,游戏服务器扩容,函数计算)来说,镜像加速技术不仅能将容器启动分钟级延迟降低到秒级,还能大量节省网络 /存储开销。

另外,nydus 实际上也是一个数据分发加速框架,比如很快要开源的 [tnpm](( https://dev.to/atian25/in-depth-of-tnpm-rapid-mode-how-could-we-fast-10s-than-pnpm-3bpp)) 项目,用 smallfish 测试 npm 包安装速度,基于 nydus 的 tnpm 可以把原生 npm 的 67s 降低到 8s 。其原理就是 nydus 能解决海量小文件( node_modules 黑洞)解压落盘很慢的问题,所以可以做到非常快。

在国内做开源并不容易,大家总是对国内开源项目持怀疑或者不信任的态度,我们是想做好开源的,我们的团队也是 KataContainers 的主要发起人。

这里有篇详细的介绍,如果对 nydus 感兴趣,可以帮忙在 github 给个 star :)

https://github.com/dragonflyoss/image-service

2559 次点击
所在节点    分享创造
10 条回复
iannil
2022-07-04 12:28:15 +08:00
厉害了,关注关注
codehz
2022-07-04 12:35:13 +08:00
看起来这也用到了 EROFS 了,希望楼下不要吵起来(近期看帖有感)
EROFS 居然在这个场景也有用
ss098
2022-07-04 12:45:48 +08:00
真强 👍
imeoer
2022-07-04 14:27:52 +08:00
@codehz 对的,erofs 给镜像场景提供 rootfs read only 层很合适,erofs + fscache 可以解决 fuse 上下文切换和数据 copy 问题。
JokerLiang
2022-07-04 14:28:00 +08:00
牛逼啊啊啊啊啊啊
xujiaja
2022-07-04 14:31:17 +08:00
强👍,以 star
imeoer
2022-07-04 14:43:41 +08:00
@iannil @ss098 @xujiaja @JokerLiang 多谢多谢~
Kabie
2022-07-04 17:16:21 +08:00
容器虚拟化,Coool!
imeoer
2022-07-04 17:46:43 +08:00
@Kabie 嗯嗯,KataContainers ,Nydus 主要做容器镜像加速
luozic
2022-07-04 20:38:32 +08:00
niubility ,时间就是效率

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/863924

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX