最近几年发生了很多事,我的个人项目纸小墨因为一些原因鸽掉了,已经打算在后面整理下开源。我也从前端转向了后端,在做和容器镜像相关的工作,最近两年我都在和同事小伙伴们维护开源项目 Nydus ,一个容器镜像 /数据分发加速框架。
发挥了下我的业余设计和前端技能,写了个简单的页面:
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 :)
1
iannil 2022-07-04 12:28:15 +08:00
厉害了,关注关注
|
2
codehz 2022-07-04 12:35:13 +08:00
看起来这也用到了 EROFS 了,希望楼下不要吵起来(近期看帖有感)
EROFS 居然在这个场景也有用 |
3
ss098 2022-07-04 12:45:48 +08:00
真强 👍
|
4
imeoer OP @codehz 对的,erofs 给镜像场景提供 rootfs read only 层很合适,erofs + fscache 可以解决 fuse 上下文切换和数据 copy 问题。
|
5
JokerLiang 2022-07-04 14:28:00 +08:00
牛逼啊啊啊啊啊啊
|
6
xujiaja 2022-07-04 14:31:17 +08:00
强👍,以 star
|
7
imeoer OP |
8
Kabie 2022-07-04 17:16:21 +08:00
容器虚拟化,Coool!
|
10
luozic 2022-07-04 20:38:32 +08:00
niubility ,时间就是效率
|