V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
imeoer
V2EX  ›  分享创造

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

  •  3
     
  •   imeoer ·
    imeoer · 2022-07-04 12:08:01 +08:00 · 2779 次点击
    这是一个创建于 855 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近几年发生了很多事,我的个人项目纸小墨因为一些原因鸽掉了,已经打算在后面整理下开源。我也从前端转向了后端,在做和容器镜像相关的工作,最近两年我都在和同事小伙伴们维护开源项目 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

    10 条回复    2022-07-04 20:38:32 +08:00
    iannil
        1
    iannil  
       2022-07-04 12:28:15 +08:00
    厉害了,关注关注
    codehz
        2
    codehz  
       2022-07-04 12:35:13 +08:00
    看起来这也用到了 EROFS 了,希望楼下不要吵起来(近期看帖有感)
    EROFS 居然在这个场景也有用
    ss098
        3
    ss098  
       2022-07-04 12:45:48 +08:00
    真强 👍
    imeoer
        4
    imeoer  
    OP
       2022-07-04 14:27:52 +08:00
    @codehz 对的,erofs 给镜像场景提供 rootfs read only 层很合适,erofs + fscache 可以解决 fuse 上下文切换和数据 copy 问题。
    JokerLiang
        5
    JokerLiang  
       2022-07-04 14:28:00 +08:00
    牛逼啊啊啊啊啊啊
    xujiaja
        6
    xujiaja  
       2022-07-04 14:31:17 +08:00
    强👍,以 star
    imeoer
        7
    imeoer  
    OP
       2022-07-04 14:43:41 +08:00
    @iannil @ss098 @xujiaja @JokerLiang 多谢多谢~
    Kabie
        8
    Kabie  
       2022-07-04 17:16:21 +08:00
    容器虚拟化,Coool!
    imeoer
        9
    imeoer  
    OP
       2022-07-04 17:46:43 +08:00
    @Kabie 嗯嗯,KataContainers ,Nydus 主要做容器镜像加速
    luozic
        10
    luozic  
       2022-07-04 20:38:32 +08:00
    niubility ,时间就是效率
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3750 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:28 · PVG 18:28 · LAX 02:28 · JFK 05:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.