松散耦合是一个被程序开发人员广泛使用的概念,就是说应用模块之间要使用输入和输出的模块进行解耦。而这个概念现在也被广泛的应用到了基础架构层面,基础架构的解耦带给我们的是可以无限扩展和灵活部署的基础架构。
我们原来使用的基础架构基本是应用被部署在中间件容器内,中间件的容器是被安置在OS上,OS需要硬件资源CPU和MEM来进行计算,需要DISK资源进行保存结果,然后不同的硬件资源位于网络的某一个位置(基本是固定的)进行网络通信。这样的结构基本属于一个高耦合结构,其中的任何一个环节我们很难对他们作出灵活的调整,可以说是牵一发而动全身。
虚拟化提供了我们松散耦合的环境,让我们看到美好的未来。
我这里提到虚拟化并非要介绍某一款产品,而是介绍一个解耦的概念,目前并没有一个单独的厂商或者产品可以做到整个infrastructure的虚拟化的。
首先我们谈谈存储层的解耦,存储的解耦是OS层一些高级应用的基础,存储空间要能够被自由的扩展,自由的分割,分割后还可以被整合或者扩展,这样自由度很高的存储方式提供了我们一个很好的结果存放点,或者资源调用库。其中有一些值得我们关注的技术和产品,比如SUN的ZFS,NETAPP的虚拟化存储概念的产品等。
访问这些存储我们依然需要解耦,我们可以通过IP的方式,可以通过scsi的方式,可以通过FC的方式,统一这些传输方式现在有这种方式,cisco是通过统一的交换机接入这些设备统一over ethernet来进行,而NETAPP的产品本身支持各种协议的传输,但是我觉得cisco的可能更加优秀。
OS和硬件需要解耦,现在很多厂商提出了虚拟化的操作系统,比如citrix的xenserver,vmware的vsphere,sun的xvm|ops center,redhat的kvm等。这些系统各有优势,各有问题,但是他们的出发点一致,解耦OS和HARDWARE的关系。现在我们可以在同一个HARDWARE上构建不同数量,不同类型,不同OS的虚拟server,并且这些虚拟的server并不绑定某一个HARDWARE,这样HARDWARE和OS的规划完全可以分离了。
中间件和OS需要解耦,结构的中间件层被看做只是利用OS层的底层资源对HARDWARE进行利用,而不关心利用的是哪个OS,或者哪种OS,也就是中间件层也实行虚拟化,目前例如GIGASPACE提出的概念,通过中间件的虚拟化,所有的GIGASPACE容器分布在各个OS上,他们可以进行跨OS的迁移,但是目前他们还是只有linux和windows平台的产品,还没有发展到所有的OS平台,但是我们可以看到如果跨所有平台支持以后,中间件就完全不需要考虑基础架构中提供了什么样的OS,而只要利用他们就可以提供应用部署的容器了。
应用与中间件解耦,我这里不谈,因为我对于这部分并没有太多的研究,但是我觉得这也是必然的趋势,作为一个应用如何脱离对中间件类型的束缚,使用于任何的中间件,而不需要作出任何修改,只要有容器就可以自己发现和完成依赖关系和组件的调用。
网络层的解耦,网络虚拟化是OS动态化以后的必然产物,应为OS的动态化造成了物理位置的不固定,原本这种相对固定位置的网络不能适合这种动态结构了。一个OS可以在这里,可以在那里,物理位置可以在上海可以在北京,端口可能是在交换机1上变成交换机10上,但是这些变化在虚拟的交换网络中都可以不被用户所察觉,虚拟化的交换网络可以把物理位置和逻辑位置完全解耦。
解耦的世界是多么的美好,我们应该在这条美好的大道上寻找更好的解决方案去优化我们的基础架构,只有越是灵活的平台,才越可以收到我们的控制。