Go语言和云原生的关系
在互联网发展的大背景下,软件架构迎来了微服务架构,Spring Boot,云计算也为其生长提供了土壤,继而促进了容器技术的发展,同时容器技术又促进了微服务的发展,进入了全民微服务的时代
云原生的历史
- 云原生技术是
Pivotal
公司率先提出来的 - 2008年,
Spring
收购了Cloud Foundry
,其提出了标准化打包部署的思想以及实现,Docker
也是受其启发 - 2009年,
Spring
(含Cloud Foundry
)被VMWare
收购,集齐了应用开发,应用打包部署,虚拟机集群平台 - 2013年,
VMWare
和EMC
共同成立了一家公司,Pivotal Software
将Spring
,Cloud Foundry
,RabbitMQ等整合并基于虚拟机平台跑了起来,成为了最早的Pass平台。 - 2003年,
EMC
收购了VMware
。2015年10月,EMC
被DELL
收购 SpringBoot
,Redis
,Greenplum
等都是Pivotal
推出的产品,被广泛使用
云时代的到来,解决了传统应用部署在物理机上的弊端,比如典型的应对突发热点
- 2006年,
AWS
成立,云计算大战开启 - 2009年,阿里云成立
- 2010年,
OpenStack
由NASA
发布,可搭建私有云,开源框架 - 2013年以前,云计算一直使用虚拟机技术,将硬件资源做为基础设施提供出来,属于Iaas
- 2013年以后,云计算进入
Paas
时代,提供的服务由虚拟机变为了应用运行平台,容器时代来临
Cloud Foundry就使用到了容器技术(Namespace,Cgroup进程隔离技术)
在互联网发展的大背景下,软件架构迎来了微服务架构,Spring Boot,云计算也为其生长提供了土壤,继而促进了容器技术的发展,同时容器技术又促进了微服务的发展,进入了全民微服务的时代(Cloud Foundry
已经没落,docker
崛起(制胜法宝就是Image
))
- 2013年,Pivotal提出了云原生的概念。微服务,微服务程序设计,持续集成,敏捷开发。主要是为了推行旗下的
Spring
,CloudFoundry
,VMWare
vSphere
等
云原生战争打响。
Cloud Foundry引以为傲的就是其标准化打包部署流程,但是其为每个语言设计了一套打包方式,比较混乱,Docker看到了其中的机会,提出了创新性的解决方案,镜像。
镜像提供了一个完整的开发环境,解决了本地环境和远程环境不一致的问题,以及不同机器复用的问题,占领了Paas市场。
这一局 Docker完胜,Pivotal想要统一市场的行为,也触动了另一个巨头,Google,其也发起了反击。
Google错失了云计算时代(做的产品不受欢迎),直到AWS崛起,才吸取了教训
- 2015年,
Google
牵头成立了CNCF
,云原生计算基金会
为了和Pivotal做区分,CNCF是朝着ServerLess的方向发展,以容器和k8s做为核心。
CNCF的云原生逐渐成为正统,现今的企业逐步云原生化,容器,微服务,服务网格等都已落地,并且成熟
这一局 Google完胜。
云原生的场景也越来越多,比如边缘计算是其中的热门
K8s做为云原生的操作系统,承担的功能也越来越多,导致其功能越来越复杂,实施成本过大,比如现在热门的智能运维,就是降低其复杂性的
Go和云原生
- 目前的云原生核心是两大技术,容器
docker
以及容器编排k8s
,恰恰这两个都是Go
语言开发 - 背景上来说,
CNCF
本身就是Google
发起,而Go
语言又是Google
开发 - 做为云原生语言,需要具有开发大型分布式应用的能力,又要易用能普及,就只有
Java
和Go
两种语言可选 Java
所谓的跨平台特性,对以容器为核心的云原生应用来说,并没有实际意义,并且Java
需要额外的环境(JVM
)支持,资源开销大,存在资源浪费,降本增效是现今的趋势,如何提高机器利用率,是各大公司和厂商的追求Go
的缺点以及历史包袱较少,对网络,对资源的控制更好一些,成为首选语言。- 我认为根本原因还在于
Go
和云原生都属于新生事物,不期望有历史包裹,Go
的可塑性也更强,更契合当下的背景 CNCF
如今已经有上千个项目,据不完全统计,近80%
的项目采用Go
做为其开发语言,由于Go
的可执行文件不依赖于其他环境,同时资源占用低,更加契合容器,越来越多的实施云原生的公司,将目光转向了Go
,故现在大多数公司都呈现多语言开发的状态
更多推荐
所有评论(0)