云原生时代的华为新“引擎”:iSula


云原生时代的华为新“引擎”:iSula文章插图
云原生时代的华为 , 不但打造了迅猛发展的云服务业务 , 也为自己的云服务打造了新“引擎” 。
? 作者:硬核老王 ?
(本文字数:3927 , 阅读时长大约:6 分钟)
云原生时代的容器引擎的变化随着“云原生”逐渐从一个流行词变成了一个不那么新鲜的技术基座 。 以 Kubernetes 为代表的容器编排技术、以 Docker、Containerd 占据主要份额的容器引擎 , 云原生技术也在不断的迭代升级中日益发展成熟 。
据 Sysdig 2019 年的容器使用报告 统计 , 全球整体容器市场规模以高达 30% 的速度增长 , 容器的规模、密度愈加扩大 。 在企业内部的容器规模方面 , 9% 的企业用户容器规模已经达到 5000 以上;在容器密度方面 , 与 2018 年相比 , 每台主机中的容器密度提高了 100% , 从 15 个增加到了 30 个 , 其中最大节点密度已经达到 250 个 。
云原生时代的华为新“引擎”:iSula文章插图
而在这一切的背后 , 容器技术在某些场景中也呈现了一些不足 , 比如:

  • 在资源敏感环境 , 或需要部署高密度容器节点时 , 容器对基础设施的资源占用会急剧升高;
  • 当大规模应用拉起或遇到突发流量时 , 并发速度可能成为了瓶颈 。
因此 , 主流的 Docker 等容器引擎在特定用例下 , 看起来有一些力不从心 , 因此一些针对某种用例进行过专门优化的容器引擎技术这些年纷纷入场 。 比如说 , 以 Kata Container 为代表的专门针对容器隔离性不够严格而设计的安全容器技术;以 Container Linux 为代表的专门针对重型应用而设计的系统容器;以 iSula 为代表的专门针对资源受限的边缘计算和 IoT 环境设计的轻量级容器技术 。
这里 , 让我们来看一个源自于摄像头场景中的轻量级容器引擎 。
来自摄像头的容器引擎说起来你可能不信 , 一个摄像头里面居然还能有容器引擎 。
云原生时代的华为新“引擎”:iSula文章插图
起初 , 华为为了在智能摄像头上达到快速、简单切换算法应用部署的功能 , 经过技术研究 , 他们决定使用容器来实现所需的功能 。
一开始 , 技术团队考虑对开源容器引擎 Docker 进行轻量化改造 , 对其裁剪和精简化、去除不需要的功能、优化组件结构等 , 甚至还对 Go 语言环境的编译进行了优化 。 但是 , 由于要运行在端侧的嵌入式设备上 , 这种裁剪和压榨资源的做法所能取得的效果有限 。
在这种情况下 , 针对端侧和 IoT 环境 , 华为的 iSula 容器团队做了一个大胆的决定 , 使用 C/C++ 来量身打造一套轻量级的容器引擎!这真是一个大胆而充满勇气的决定 。 要知道 , 随着容器技术时代被 Docker 的出现而引爆 , 开发 Docker 所使用的 Go 语言就成为容器技术领域的首选 , 几乎所有的容器技术的组件和框架 , 都是采用 Go 语言开发的 。 而要使用 C/C++ 语言全新开发一个容器引擎 , 面临着所有基础组件 , 甚至一些开发语言缺乏的特性都需要另行解决 。 比如说 , 在 C 语言中要解析容器技术中普遍使用 JSON 数据 , 而 C 语言并没有 Go 语言等现代编程语言内置的反射机制 , 这就需要自行实现一个合理的 JSON 数据解析引擎 。
2017 年 , iSula 容器团队开始了重新开发一个容器引擎的计划 。
旁白:iSula 是中南美洲亚马逊丛林中的一种非常强大的蚂蚁 , 被称为“子弹蚁” , 因为被它咬一口 , 犹如被子弹打到那般疼痛 , 它是世界上最强大的昆虫之一 。
所幸的是 , 虽然拦路虎众多 , 但是这些付出是有丰厚回报的 , 采用 C/C++ 开发的容器引擎 , 也因此具有了 Docker 所不具有的一些优势 。 相比 Golang 编写的 Docker , 使用 C/C++ 实现的 iSula 容器引擎 , 具有轻、灵、巧、快等特点 , 不受硬件规格和架构的限制 , 底噪开销更小 , 可应用领域更为广泛 。 在严苛的资源要求环境下 , 轻量模式下的 iSulad 本身占用资源极低(< 15M) , 再结合上特殊的轻量化镜像 , 可以达成极致的资源占用效果 。
2018 年 , iSula 开始在华为内部的部分产品上使用 。 2019 年 , 华为决定将 iSula 开源出来 , 让开源社区和 iSula 共同发展 , 因此针对 CRI 接口进行了一次大范围的重构和补全后 , 与 openEuler 操作系统一并开源发布 。
新造的轮子野心大以 2019 年的统计数据看 , 容器引擎领域中 , Docker 占据了 80% 左右的份额 , 但是随着 Docker 引擎自身的发展不明朗 , 以及容器引擎规范的标准化 , 出现了更多的容器引擎竞争者 。 这其中 , iSula 作为一个悄悄发展了 3 年的轻量级容器引擎 , 已经迭代到了 2.0 版本 , 并凭借其“轻快易灵”的优势 , 逐渐显露出了更大的“野心” 。