冬瓜,把程序提交到集群上去哈
冬瓜的日记
冬瓜是一家互联网公司的程序员。他来公司几个月,已经做了好几个项目了。程序开发测试完,他要做的就是通过一个命令,把程序提交到集群上就完了。接着点击监控页面,会详细的展示这个程序的各种运行状态。他好久没见到
服务器这个字眼了。
周一
他今天做的功能是,需要把一个产品的数据放进搜索系统,然后可以提供检索功能。于是他麻利的写了不到一百行代码,然后package下,指定需要占用的资源情况,通过一个提交命令把程序提交到了集群上。
在程序提交的那一刻,消息队列的数据被消费,然后经过他那一百行代码的处理,流入到搜索系统,就好像大脑的神经突触,建立了新的连接。客户很快就能通过搜索服务查询到新的产品的内容。
周二
产品的量非常大,好像昨天写的程序处理不过来了。于是冬瓜打开一个web页面,修改了下资源数,通过监控界面,很快冬瓜就发现数据处理稳定了,没有delay的数据了。
周三
冬瓜接了一个新的需求,需要提供一个数据查询接口,以http协议,JSon作为数据格式提供出去。冬瓜利用公司内部的开发框架,花了半天时间,完成了该功能。然后package一个tar.gz 包,打开集群页面,点击上传,接着指定资源数量,实例个数,然后通过指定的域名就访问到了自己开发的Web服务。
看不到服务器的年代
越来越多的程序员将会习惯上面的开发部署模式。服务上线,无非就是打个tar.gz包,指定我要的资源,如此而已。他们提供的程序,其实就是对数据进行转换,并且连接上众多已经存在的其他的服务,完成新的connection,就像大脑创建了新的突触,使得信息在新的链路上流通。更详细的抽象,参看
我对平台架构的理解。他们不在知道底层还有服务器这么一个东西,有Linux操作系统,Unix操作系统。
这是个变革,就在前几年,我们还要不断的去折腾服务器,开发完应用代码只是万里长征的第一步,我们需要关心服务运行在哪些服务器上,这些服务器的健康状态,部署到哪些目录下,登录上服务器查看日志。这种模式已经慢慢淡出程序员的视野。
工业化的核心是两个:
- 高度细化的劳动分工
- 大量的资源提供
整个过程其实都是以效率至上的。工业化的思维影响着我们生活的方方面面。作为IT领域,也是无处不存在工业化思维的。未来的程序员可以真正只做到关心程序逻辑,按照标准结构开发即可。
服务平台将会是个什么样子
这个我在14年就一直在提及,也在实践。未来平台一切围绕弹性(Elastic)这个概念。弹性包含两部分:
- 大资源池(对应就是一个网格空间),你可以通过某种具体的技术,譬如Yarn的tag功能,划分一些小资源池,Everything is in a pool。在这些Pool组成的一个大Pool上会有很多 Estimator(应用运行平台,比如Storm,MR,Spark,Tomcat等)
- Adaptive Resource Allocation。 原先是想用Dynamic Resource Allocation 这个词,但是Adaptive 更合适些。所有的应用都有能力(平台赋予的能力)根据自身的负载情况自动调整资源的占用量。我们部署的服务(Transformer) 可以简单的通过一个指令运行在上面的 Estimator上,这些Estimator为你的Transformer提供了Adaptive Resource Allocation功能。
所有上面的应用都是基于Estimator开发的。而所有Estimator 都可以实现资源的自适应。有些Estimator ,比如spark应用平台已经实现。
对于存储类的,其实目前也已经成熟,现在Paas服务已经提供完整分布式的关系型存储,文件存储,Key-Value存储。他们都已经实现弹性。有的暂时无法统一整合到大资源池,但是有些已经可以了。典型的暂时无法整合的是MySQL,典型可以整合的是HBase。