• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Docker和Kubernetes用Go语言又怎样?| 王垠专栏

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

InfoQ中文站新推出王垠专栏,精选来自王垠个人博客上的文章,让更多的读者朋友受益,本栏目的内容都经过原作者授权。

当我嘲笑Go语言的时候,有些人跟我说,你说Go语言是垃圾,可是你看像Docker和Kubernetes之类的云计算项目,为什么是Go语言写的呢?

其实答案很简单:这些东西并不是非得用Go语言写才可以,用其他语言实现它们其实并没有什么问题,只不过它们碰巧是用Go语言写的而已。Docker和Kubernetes之类的项目,其实只依赖于操作系统的构架细节,对语言没有特别的要求,而且也没什么性能需求,所以它们其实可以用任何语言(包括Shell、Perl、Python、Ruby、C、Java……)来实现。只因为有人跟风,用Go语言写了这些东西,并不能说明Go语言是好东西。在当今混乱的IT业界,随便你做个东西都会有人拿来用,更不要说是挂着Go-ogle的羊头的语(go)言(rou) ;)

如果你不相信我,可以看看这个叫“Bocker”的项目,它只用了100行shell script,就实现了Docker最重要的功能。 说白了,Docker的原理就是建立一些目录,把系统文件和相关库代码拷贝进去,然后chroot,这样你的代码在里面运行的时候,就以为自己独占一个Linux系统。Shell语言之恶劣,我已经有专文介绍,所以就不多说了。本来可以用shell脚本实现的项目,现在有人用Go来做,能说明Go是一个好的语言吗?

另外也许很多人不知道的是,Docker和Kubernetes,虽然很火,但其实并不是什么了不起的技术。Docker并不能解决Unix的根本问题。Unix从来就不是一个具有良好模块化设计的系统。各种稀奇古怪的配置文件,设计缺乏条理和章法。各种模块之间,版本逻辑依赖关系错综复杂,纠缠不清。所以不管你事后怎么补救,其实都难以变成结构清晰的设计。很多项目做成了container之后,它们之间用REST和HTTP进行通信,其实让系统模块之间的通信变得更加困难和复杂。

使用了Docker之后,你也许会发现,Unix的狂热分子们其实重新折腾出了Windows一开头就有的应用程序构架,然而这些应用程序之间的通信方式,却远远没有达到COM和.NET的成熟程度。



更多精彩,扫码关注“细说云计算”(微信号:CloudNote)


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap