Docker和Kubernetes用Go语言又怎样?
发布日期:2016-7-7 15:7:35
当我嘲笑Go语言时,有些人跟我说,你说Go语言是垃圾,可你看像Docker和Kubernetes之类的云(如阿里云)计算项目,为何是Go语言写的呢? 其实答案非常简单:这些东西并不是一定要用Go语言写才可,用其他语言实现它们其实并没什么问题,只不过它们碰巧是用Go语言写的。Docker和Kubernetes之类的项目,其实只依赖于操作系统的构架细节,对语言没特别要求,且也没什么性能需求,因此它们其实可用任何语言(包括C、Shell、Python、Perl、Ruby、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的成熟程度。 上一条: 关于Docker安全扫描器 下一条: 基于Docker API工具的综述
|