左耳听风_009_08_Go语言Docker和新技术
你好,我是陈浩网名做耳朵耗子。
那上个月呢作为购语言的三位创始人之一,unix老牌黑客row派ack在他的新文章go ten years三climbing中回顾了购语言的发展历程。
另外中提到购语言这十年的迅猛发展,快到连他自己都没有想到,并且啊还成为了云计算领域的新一代的开发语言。
文外呢文中还说到中国程序员对购语言的热爱啊完全超出了他们的想象。
甚至他们都不敢相信是真的。
这让我想起我在二零一五年五月拜访docker公司的玩全总部的时候,doler负责人也和我表达了相似的感叹。
他们完全没有想到中国居然有那么多人喜欢docker,而且啊还有那么多人在为docker做贡献。
这让他们感到非常意外。
而且啊他还对我说,中国是除了美国本土之外的,另一个如此喜欢dolpher技术的国家,在其他国家都没有看到啊,的确如他们所说啊,构元和dolpher这两种技术已经成为新一代的云计算技术了,而且可以看到他们的发展态势非常迅猛。
而中国呢也成为了像美国一样在强力推动这两种技术的国家,这确实是一件让人感到高兴的事儿。
因为中国在跟随时代潮流这件事上已经做的相当不错了。
然而就是在这样的背景下,这几年总还是会有人来问我是否要学go语言,是否要学docker,那go和docker是否能够用在生产环境等等。
从这些问题来看啊,对于构源和docker这两种技术,国内的技术圈还是有相当大的一部分人在观望。
所以呢我想在这篇文章里,从两个方面来论述一下我的观点和看法。
那第一个方面呢是为什么go语言和docker会是新一代的云计算技术。
那另一个方面呢是作为技术人员,我们应该怎样才能识别出来什么样的新技术,会是未来的趋势?因为这两个问题是相辅相成的,所以我会把这两个问题揉在一起谈。
虽然go语言是在二零零九年底开源的,但是我直到二零一二年才开始接触和学习go语言。
当时呢我只花了一个周末,两天的时间就学完了。
而且啊在这两天的时间里,我还很快的就写出了一个能完美运行的网页爬虫程序。
还有一个简单的高并发文件处理福音,用来提取前面抓取的网页关键内容。
这两个程序啊都很简单,总共啊不到五百行代码。
综合下来呢,我对go语言有这样几点体会。
第一呢是语言简单上手快啊,语言言语、语言特性啊,直直是简简了简简单到你几乎玩不出什么招,招来直直的的习,难度很低,而且且容易易上手。
第二呢是它的并行和异务编程几乎没有痛点,构语言里面的go rouine和channel这两个神器简直就是并发和异务编程的巨大福音。
像c啊还有c加加、java、 python和javascript这些语言,他们的并发和异务的编程方式控制起来就比较复杂了,而且啊还容易出错。
但go语言就不一样,他用非常优雅和流畅的方式解决了这个问题。
那这一点呢,对于编程多年受尽并发和义务折磨的我来说,完全就是眼前一亮的感觉。
我在这里呢用一张图展示了构元相较于其他语言的优势。
你可以回文中看一看。
那第三点体会呢是构语言,它内部库可以说是麻雀虽小五脏俱全。
构语言的内部库中啊基本有绝大多数常用的库。
虽然有些库还不是很好啊,但我觉得这些都不是主要问题。
因为随着技术的发展和成熟,这些问题肯定也都会随之解决。
第四点体会呢是购物员,它同时包含了c语言的理念和python的姿态。
所谓c语言的理念呢是信任程序员,保持语言的小巧,不屏蔽底层,而且呢对底层友好关注语言的执行效率和性能。
而所谓python的姿态呢,指的是用尽量少的代码去完成尽量多的事儿。
所以我能够感觉到啊购员是想把c和python统一起来,这是非常棒的一件事儿。
所以即便购语言还存在着很多的问题,比如垃圾回收啊,异常处理啊,还有泛型编程等等。
但跟上面这几个优势比起来,我认为这些问题啊都是些小问题。
于是呢我就毫不犹豫的入坑了。
当然一个技术能不能发展起来啊,关键还是要看以下这三点。
首先呢是有没有一个比较好的社区,像CRCI加r java、 python和javasscript生态圈啊,都是非常丰富和火爆的。
尤其是有很多商业机构参与的社区,那就更是人气爆棚了。
比如linux社区。
其次呢是有没有一个工业化的标准。
其次RCI加x啊、java这些语言都是有标准化组织的,尤其是java,它在架构上还搞出了像j to e这样的企业级标准。
那最后呢是有没有一个或者多个杀手级应用,那CERCI加和java的杀手级应用啊,我就不用多说了。
就算对于像PRP这样,还不能算是一个优秀的编程语言来说,因为它是linux下第一个杀手级解决方案,lamp中的关键技术,所以它也发展起来了。
在我看来啊,上面提到的这三点非常重要,新的技术呢只需要占到其中一到两点就已经很不错了。
何况有的技术,比如java,它三点全都满足。
所以java的蓬勃发展其实也在情理之中。
当然除了上面这三点,重要的还有一些其他的影响因素,比如学习难度是否低,上手是否快,这一点非常重要。
C加加在这点上就做的越来越不好了。
另外呢就是有没有一个不错的提高开发效率的开发框架,比如java的spring框架,c加加的STL等等。
另一个因素啊是是不是有一个或者多个巨型的技术公司作为后盾,比如java和linux后面的IDM和sn,还有就是有没有解决软件开发中的痛点。
比如java,它就解决了c一和CI加的内存管理问题。
利用这些标识来衡量一下购物员,我们可以清楚的看到这么几点。
首先呢购物员它容易上手。
第二呢,购源它解决了并发编程和底层应用开发效率的痛点。
第三呢,购员有google这个世界一流的技术公司在后面支撑。
最后呢购物园的杀手级应用是docker容器,而容器的生态圈这几年可以说是发展繁荣,也是热点领域,所以购源它的未来是不可限量的。
当然我个人觉得啊购员可能会吞噬很多CECI加和java的项目。
不过呢购源所吞噬的项目应该主要还是中间层的项目,既不是非常底层,也不会是业务层。
也就是说,购员它不会吞噬底层到c和c加加那个级别的,也不会吞噬到上层。
比如java业务层的项目构员能吞噬的一定是pass上的项目。
比如一些消息缓存中间件啊,还有服务发现啊,服务代理控制系统、agent以及日志收集等等。
他们没有复杂的业务场景,也到不了特别底层的软件项目或者工具。
而c和c加加会被打到更底层,而java呢会被打到更上层的业务层,这是我的一个判断。
好了,我们再用上面的标尺来衡量一下购员的杀手级应用。
Docker你会发现基本上是一样的。
首先呢docker同样容易上手。
其次呢docker它解决了运维中的环境问题以及服务调度的痛点。
然后是docker的生态圈,有google这样的大公司在后面助力。
那还有呢就是docker,它产出了工业界的标准OCI,最后呢是docker的社区和生态圈,已经出现了像java和linth那样的态势。
所以呢早在三四年前,我就觉得docker一定会是未来的技术。
虽然当时坑还很多啊,但是相对于这些大的因素来说,那些小坑基本都不是问题,只是需要一些时间啊,这些小坑在未来五到十年就可以完全被填平。
同样我们可以看到cover netice作为服务和容器调度的关键技术,一定会是最后的赢家。
这一点呢我在去年年初就能够很明显的感觉到了关于docker呢,我还想多说几句。
虽然在docker出现之前,几乎所有要玩公有pass的公司和产品都玩不起来。
比如google的GAE,国内的各种差异,比如淘宝的TAE啊,新浪的SAE等等。
但是我还是想说,pass是一个被世界或者说被产业界严重低估的平台。
因为pass层是承上启下的关键技术,任何一个不重视pass的公司,它的技术架构啊都不可能让这家公司成长为一个大型的公司。
因为pass层的技术主要能解决这样几个问题。
第一是软件生产线的问题,持续集成,持续发布。
还有devil ops中的技术啊,必须通过pass来实现。
第二呢是分布式服务化的问题。
分布式服务化的服务高,可用服务编排服务调度服务发现、服路由和分布式服务化的支撑技术,完全是pass的菜。
第三呢是提高服务性的可用性,也就是SRA提高服务可用性。
Sra所需要的分布式高可用的技术架构和运维工具,也是pass层提供的。
最后呢是软件能力的复用,软件工程的核心就是软件能力的复用。
那这一点呢也完美的体现在pass平台的技术上。
老实说啊,这些问题的关键程度已经到了能判断一家技术驱动的公司的研发能力是否靠谱的程度。
我认为如果没有这些技术依托技术拓展业务的公司机会就不会很大。
在后面呢我会另外写几篇文章,给你详细的讲一下分布式服务化和pass平台的重要程度。
最后呢我还是要说一下,为什么要早一点呢?进入这些新技术,而不是等待这些技术成熟了,再进入原因啊有这么几个。
首先呢技术发展的过程非常重要。
我进入go和docker的技术啊,不能算早,但也不算晚。
从二零一二年学习狗,再到二零一三年学习docker,再到今天我清楚的看到了这两种技术的生态圈发展过程。
在这个过程中呢,我收获最大的并不是这些技术本身,而是一个技术的变迁和行业的发展。
从中呢我看到了非常具体的各种浪潮和思路,这些东西啊比go和刀her本身都更有价值。
因为这不但让我重新思考我已经掌握的技术和如何更好的解决已有的问题。
而且还让我看到了未来我不但有了技术上的优势,而且啊这些知识还让我的技术生涯有了更多的可能性。
其次呢是这些关键新技术可以让你提前抢占技术的先机。
这一点啊,对于一个需要技术领导力的个人或者公司来说都是非常重要的。
如果一个公司或者个人能够占有技术先机,就会比其他的公司或个人有更大的影响力。
那一旦未来行业需求引爆啊,那么这个公司或者个人的影响力就会形成一个比较大的护城河,而且啊可以快速的从中获取经济利益。
在最近呢在与中国移动啊、中国电信和一些股份制银行交流的过程中,我看到通讯行业和金融行业对于pass平台的理解啊已经超过了互联网公司。
而我近三年来,在这些技术上的研究,让我自己也从中受益匪浅。
所以购物员和docker作为pass平台的关键技术,它的前途是无限的。
我很庆幸自己赶上了这波浪潮,也很庆幸自己在三年前就看到了这个趋势。
所以现在呢我也在用这些技术开发相关的技术产品,并且助力于为高速成长的公司提供这些关键技术。