在需求、数据和软件愈来愈碎片化的驱使下,集装箱包装的微服务(Micro-Service)将成为主流,这些微服务在运行时间(Run-Time)经常需要动态性组合成为各式各样的 App 来支撑企业多变的业务流程(Business Process)。
Docker 和 Micro-Service 一定是引领未来新时代的,但实际上这种技术趋势也有一定传承性,是集中式计算走向分布式计算道路上的一个里程碑。虽然“颠覆”这个词已经被互联网玩坏了,不过大教堂与集市所揭示的软件开发模式已经从早期的互相竞争(Linux & Windows 时代),逐渐兼容(OpenStack & VMWare 时代)走向引领未来(Docker & Micro-Serivces 时代)的新时代。
@天外非仙 提出一个非常有意思的点,是否能把集中式计算转化为分布式,那么未来所有应用都可以靠分布式进行低成本横向扩展。
这个问题其实关乎于两个前提,一是分布式是否能取代集中式的竖井架构,二是新的应用是否都是分布式的领域。
从极限层面看,数学理论决定了分布式不可能取代集中式,横向扩展替代不了纵向架构。谷歌的大数据体系很大程度是基于马尔科夫模型的,也就是假设现在状态只和它之前的一个状态相关,不考虑复杂的迭代关系,因此便可以实现分布。但是现实中很多问题,马尔科夫模型并不适用,但也可能有更深的数学理论可以适合分布式。
从成本来看,目前分布式仍需要建立在一定规模之上。譬如邮政储蓄银行改成分布式系统之后,维护量高出许多,导致高昂的维护成本,通常这类需要技术实力支撑的组织都需要面对大量用户,例如提供服务的公有云或运营者,都倾向于系统架构的分布式。如果成本部分是个伪命题,那么分布式的弹性将成为下一步需要核心解决的问题。
在某些领域,分布式仍然不能解决全部问题。有的应用追求数据一致性,而弹性和分布式仍很难解决这个问题。尤其是大数据领域,分布式只能做“筛子”,做不了“螺丝刀”。
拿视频分析处理举例,视频分析处理必须在规定的时间内处理完一帧图像,其中用到了光流的处理,需要大量计算。单 CPU 是顺序计算,想要用 GPU 和 fpga,但如要用到他们,就必须把算法分解为可并行运算的单元,最后并行的结果还是要综合,那么最终的时间取决于并行中最长时间的算法。整个业务中,既有并行也必须有串行。
此外,分布式领域里面网络传输浪费的时间也是个待解决的大问题。容器内的应用不可能独立,必然要跟其他部分交换数据。运营商的复杂系统不可能整个搬到容器里,那么如何进行数据交换便成为关键的问题。远程分布用高速网络,机器内部用高速传输接口,比如双端口内存,双接口存储等等,都需要更加进步的系统设计。目前尚没有存储、内存、CPU、网络、GPU都可以热插拔,并能有效管理的操作系统,再加上现在分布式大行其道,软件商的热插拔也更为重要。
容器化起来之后,这样的系统便有机会得以实现。容器技术会把 OS 这层变薄,只需要处理操作系统层面的问题变成为可能。—— Ben
目前 VMWare 的 FT 特性可以实现两台服务器指令级保持同步,2013年的时候验证过,当时只支持最简配置的 VMWare,单 CPU,内存不大于63MB。但对于多 CPU 是有路标规划的。但2013年时候的测试结果显示性能损耗非常严重,大约为损失70%,所以还只能在实验室玩玩。乐观估计是在三年内,实现成千上百的 CPU 可以热插拔。想像一个机器三个笼子:CPU,内存,硬盘。然后笼子之间的资源可以自由组合、任意划分、热加热减。各个笼子间通过硅光互联。好了,参考设计就说到这里,如有需要,欢迎和@天外非仙 进一步交流。
整理 By Fei
-----------------
感谢贡献人:
天外非仙
红熊猫
杜玉杰