扩展性ZStack在设计之初就考虑到了不同的用户对云的使用模式的差异性。例如公有云提供商,服务提供商,倾向于亚马逊的模式。而传统企业用户,则更喜欢VMWare的企业虚拟化模式(Enterprise Virtualization)。基于插件系统,ZStack将每个功能实现成小插件,默认是亚马逊的EC2模式,也就是各种资源池化。然后在这个基础上,通过一些辅助插件,ZStack可以在EC2的模式上组合出VMWare这种以虚拟机为中心的模式。这样不同的用户就可以根据自己的需求选择相应的模式。并且两种模式还可以互通,比如以虚拟机为中心的模式也可以使用EC2模式所提供的安全组(security group),弹性IP(EIP)这样的网络服务。 除了插件系统外,ZStack也认识到很多IaaS的功能可以实现成单独的服务,并且允许开发者用他们熟悉的语言来实现。这种创建单独服务的方法在ZStack中称为进程外插件(out-of-process plugin)。开发者可以根据自己的喜好选用自己喜欢的语言,创建与ZStack管理节点进程分离的服务。如果服务本身功能单一,可以订阅ZStack管理节点组播到消息总线的事件(canonical events),例如账单系统就可以监听各种资源的创建和销毁事件,完全实现独立开发。对于功能复杂的服务,例如需要访问数据库的服务,可以通过写一个轻量级的插件安装在管理节点中,然后跟进程外服务通信。第二种方式有点类似应用程序通过在操作系统中安装驱动,来实现对内核的访问。ZStack的web UI就是以这种进程外插件的方式实现的。 基于插件系统和进程外服务,ZStack可以在持续创新,开发出各种适应用户需求的应用场景的同时,保持架构的稳定和松耦合。 总结ZStack的整个架构并非离散的功能点的组合,而是在经过精密设计后相辅相成的。例如要实现查询API自动化,数据模型就必须预先定义完备;又比如要实现无锁架构,就必须要有无状态服务的基础。通过对架构的缜密思考,ZStack有信心解决当前IaaS行业面临的困难,为用户提供一款优秀的开源软件。 对话张鑫CSDN:OpenStack生态已经比较成熟,公有云私有云的成功案例都有了,我们为何还需要ZStack项目?张鑫:IaaS领域是时候需要新鲜血液了。 自亚马逊2006年发布EC2公有云以来,IaaS(基础架构即服务)领域持续创新,先后出现了Eucalyptus, CloudStack,OpenNebula这样的开源软件。到2010年OpenStack出现,整个创新达到了一个高潮。从业者都认为云计算的春天来了,认为传统企业可以很快的从上个世纪的IT架构中解脱出来,迅速迁移到由软件定义的数据中心。但让人大跌眼镜的是,5年过去了,Eucalyptus, CloudStack,OpenNebula已渐渐淡出人们的视线,OpenStack一统天下,却迟迟打不开企业软件的市场。就在去年,OpenStack的发起者Rackspace,宣布不再以纯IaaS提供商的身份进入市场,而是转向专注于核心业务“为客户管理服务”,在跟以亚马逊为首的公有云巨头的竞争中败下阵来。最近,著名OpenStack公司Nebula倒闭,给出的理由是“市场不成熟”,更是给整个IaaS产业浇了一盆冷水。一时间各种悲观论调四起,例如认为企业云市场根本不存在,又例如公有云最终统治世界,企业不再需要自己维护数据中心。 我于2010年加入Cloud.com,作为CloudStack前核心开发人员,一直紧密的关注整个产业以及各个开源IaaS软件,深深感到市场的需求是巨大的,但当前的产品离市场的要求差距很远。随着时间的推移,这个鸿沟越来越大,丝毫没有减小的迹象。 当前开源IaaS软件的痛点可以概括为四个方面:易用性差,不稳定,性能差,难扩展。而这四个方面又是阻碍市场接受IaaS软件的至关重要的因素。根据我多年来对各个项目的观察,认为导致目前状况的原因,并不是开源社区缺乏有才能的开发人员,而是这些项目起源太早,缺乏对市场的足够理解。这些项目早期都是盲目模仿亚马逊EC2模式,在快速开发功能的同时自然生长,用俗话说就是“摸着石头过河”,导致了在架构设计方面思考过少,累积了大量欠账。而前述的几个方面,又正是不从架构入手重新设计,就不能解决的问题。但我们又不能期望像OpenStack这样拥有几百万行代码的项目从底部推到重来。基于这样的现实,我认为不重新设计一款IaaS软件是无法解决已有的问题的。在退出了原来CloudStack的工作后,我跟搭档一起建立了ZStack,希望从根源上解决当今IaaS软件遇到的各种问题,为整个行业带来一款真正能打开企业市场的软件 CSDN:能否介绍一下ZStack的市场目标,以及社区规划?张鑫:ZStack的最终目的,并不是为喧闹的云市场添加更多的噱头,而是解决数据中心管理的一个刚需:即面对越来越多的硬件,如何管理它们,以及如何自动化这个管理的过程。我们相信终有一天,传统企业会摆脱人工手动配置或写脚本这种上个世纪的技术,将自身的IT架构迁移到完全通过API管理的,软件定义的数据中心中。此外,随着企业软件技术的不断创新,最终会是以SaaS(软件即服务)的方式在IT设施中部署。到那个时候,企业软件再不是为某个操作系统所设计的单机程序,而是为某个云设计的分布式程序。IaaS以及之上的PaaS就是这些企业软件的入口。依托ZStack的插件架构,我们完全相信我们可以逐步完善成一个涵盖IaaS和PaaS的平台,并且由于我们是IaaS和PaaS高度集成,提供的用户体验也必然优于同类软件间的第三方集成,从而成为未来企业软件的部署入口。 ZStack是一个开源项目,并且会一直坚持开源。我从2006年加入XEN社区到现在,就一直在开源领域工作,经历过不少成也开源败也开源的例子。例如OpenStack发迹于社区,但现在遇到了很多困难也源于社区。对于ZStack,我们欢迎任何形式的,基于Apache 2.0许可证的贡献。同时我们会负责维护ZStack核心稳定,对于提交到核心服务的代码进行严格控制。这样的代码会是少量的,因为在插件架构下,大部分功能会是以单独的插件方式实现。我们会推出两个目录:plugins和contribs。凡是ZStack自己的测试架构可以保证质量的插件,我们会放到plugins目录去,由我们承诺质量。对于测试架构无法保证的插件,例如需要特殊外设配合的插件,我们会放到contribs目录,表示用户在使用时需要自担风险。 总而言之,ZStack是个年轻的项目,是IaaS领域的一个新兵。但我们继承了先行者的经验,学到了先行者的教训,所以相信我们能比先行者走的更远。对于现有的IaaS项目,我们也不是扮演一个挑战者,而是为这个领域提供多一个选择。用我搭档的话说:我们不是蚂蚁与大象跳舞,我们是站在大象背上的蚂蚁,所以能看得更远。 |