为什么Kubernetes项目要选择Go语言?
极客时间编辑部
讲述:丁婵大小:1.31M时长:02:51
Kubernetes 是一个基于 Go 语言实现的、以容器编排与管理为核心的后端项目,同时也是当今世界上最活跃的开源项目之一。近日,在一次 Gopher Meetup 中,Kubernetes 开发者张磊详细介绍了为什么 Kubernetes 项目要选择 Go,而非其他语言。
很多开源项目都使用了 Go 语言,但在解释其原因时不外乎两点,要么说 Go 很简单,它平衡了程序的开发效率和运行效率,要么说看重了 Go 的性能和并发编程优势。
但对 Kubernetes 这样的项目来说,这些都不算是主要的理由,毕竟谷歌 Borg 项目就是用 C++ 开发的,现在要把一个类似的系统作为开源项目放出来,那又有什么理由要更换语言呢?如果继续使用 C++,最起码谷歌内部的很多库是可以共用的,而且使用 C++ 来构建一个平台级别的项目也合情合理。
但是,Kubernetes 最先考虑的并不是这些因素,而是开发者社区。在 Kubernetes 之前,谷歌在系统级领域的开源项目做的并不是特别好,社区可能会认为谷歌开源的项目靠谱程度不高。而在 Kubernetes 之后,谷歌看到了社区对于开源项目的成功所起到的关键作用,这也正是 Go 这样一个处于成长期的编程语言能够带来的巨大优势。
这里张磊举了一个 lmctfy(let me container that for you)容器项目的例子。lmctfy 是谷歌紧随着 Docker 开源的一个使用 C++ 编写的内部容器实现,相信没有多少人用过。但它比同时期的 Docker 要强大很多,功能也非常完善,尤其是资源管理部分,毕竟 cgroup 本身就是谷歌的东西。但是 lmctfy 还没来得及和 Docker 竞争就直接死掉了,最后大家总结,“甩锅”到了 C++ 头上。
谷歌认为,Docker 之所以会成功是因为它可以提供一个友好简洁的界面或者说是 API。而 lmctfy 却把“用户友好”这样的关键因素抛之脑后。首先,它的编译和安装都特别麻烦,有时候还需要给内核打补丁。其次,lmctfy 的代码贡献门槛非常高,这也直接影响了它的社区活跃度。
最后张磊总结道,谷歌用 C++ 语言构建了开源容器,大家甚至知道,这个开源容器就是谷歌自己在用的,但是这样的东西拿出来用户却不能驾驭。那如果再做一个基于 C++ 的容器管理项目,庞大如 Kubernetes 这样的项目,用户可以 hold 住吗?就像有人埋怨说谷歌怎么这么抠,不把 Borg 开源出来,但假设谷歌真的开源了 Borg,几百万行 C++ 代码,有多少人有信心能把它用起来呢?
所以,如果用两个字来总结 Kubernetes 项目选择 Go 语言的原因,那就是“社区”。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论