云计算,Go,中国程序员
上个月,Go 语言的创始人之一,Unix 老牌黑客罗勃·派克(Rob Pike)在新文章中提到,Go 语言这十年的迅猛发展大到连他们自己都没有想到,并且还成为了云计算领域中新一代的开发语言,中国程序员对 Go 语言的热爱完全超出了他们的想象。
虚拟化,Docker,中国技术人
Docker 负责人也有类似的感叹感叹,完全没有想到中国居然有那么多技术人喜欢 Docker,有这么多人在为 Docker 做贡献。中国是除了美国本土之外的另一个如此喜欢 Docker 技术的国家。
Go 语言和 Docker 已经成为新一代的云计算核心技术,对待这两项技术,你是在观望,还是要学习。作为技术人员,如何识别什么样的新技术会是未来的趋势,这是这篇文章的缘起。
Go 语言是在 2009 年底开源的,我花了一个周末两天的时间就学完了,而且在这两天,我还很快地写出了一个能工作很好的网页爬虫程序,以及一个简单的高并发文件处理服务,用于提取前面抓取的网页的关键内容。这两个程序都很简单,总共才写了不到 500 行代码。
我对 Go 语言的体会是:
- 语言简单,上手快,学习曲线低。Go 语言的语法特性简直是太简单了,简单到你几乎玩不出什么花招,直来直去的,上手非常快
- 天然的并行和异步编程,实现高并发非常容易。Go 语言的 Goroutine 和 Channel 这两个神器简直就是并发和异步编程的巨大福音。而 C、C++、Java 和 Python 这些语言的并发和异步非常复杂,而且容易出错
- lib 库麻雀虽小五脏俱全。Go 语言的 lib 库中基本上有绝大多数常用的库
- C 语言的理念和 Python 的姿态。C 语言的理念是信任程序员,保持语言的小巧,不屏蔽底层且底层友好,关注语言的执行效率和性能。而 Python 的姿态是用尽量少的代码完成尽量多的事
即便 Go 语言存在诸多的问题,比如垃圾回收、异常处理、泛型编程等,但相较于上面这几个优势,就毫不犹豫地入坑了。
一个技术能不能发展起来,关键还要看三点:
- 有没有一个比较好的社区,比如 Linux 的社区
- 有没有一个工业化的标准,比如Java像 J2EE 这样的企业级标准
- 有没有一个或多个杀手级应用,比如PHP中的 LAMP
对于 Go 语言,能清楚的看到
- Go 语言容易上手,社区异常活跃
- Go 语言有 Google 这个世界一流的技术公司在后面推动标准
- Go 语言的杀手级应用是 Docker,而 Docker 的生态圈在这几年完全爆棚
所以,个人觉得,Go 语言的未来是不可限量的。
对于 Go 语言的杀手级应用 Docker,你会发现基本一样:
- Docker 上手很容易,的生态圈中有 Google 等大公司在后面助力
- Docker 产出了工业界标准 OCI
- Docker 的社区和生态圈已经出现像 Java 和 Linux 那样的态势
所以, Docker 也一定会是未来的技术。
关于 Docker 我还想多说几句,它是云计算中 PaaS 的关键技术,任何一个不重视 PaaS 的公司,其技术架构都不可能让这家公司成长为一个大型的公司, PaaS 能解决下面这些问题:
- 软件生产线的问题。持续集成和持续发布,以及 DevOps 中的技术必需通过 PaaS
- 分布式服务化的问题。分布式服务化的服务高可用、服务编排、服务调度、服务发现、服务路由,以及分布式服务化的支撑技术完全是 PaaS 的菜
- 提高服务的可用性 SLA。提高服务可用性 SLA 所需要的分布式、高可用的技术架构和运维工具,也是 PaaS 层提供的
- 软件能力的复用。软件工程中的核心就是软件能力的复用,这一点也完美地体现在 PaaS 平台的技术上
这些问题的关键程度已经到了能判断一家依托技术的公司的研发能力是否靠谱的程度。没有这些技术,依托技术拓展业务的公司几乎没有可能发展得规模很大。
在后面,我会另外写几篇文章详细地讲一下分布式服务化和 PaaS 平台的重要程度和实现细节,期待后续和大家更深入的沟通。