ZStack是华人工程师张鑫(Frank)和尤永康在2015年4月发布的完全自研的新一款开源IaaS产品。根据官方网站(http://en.zstack.io/)的介绍:“ZStack is open source IaaS(infrastructure as a service)software aiming to automate datacenters,managing resources of compute,storage,and networking all by APIs.”可以看到,ZStack的定位和传统IaaS软件并无区别,都是面向数据中心的IaaS软件,只是,ZStack强调了全API实现数据中心自动化的管理。看起来一两句简短的介绍并没有体现ZStack的优越之处,作为业界的后起之秀,ZStack靠什么来改变已有的用户习惯,并和已经发展多年的CloudStack、OpenStack竞争呢?如图3-4所示,我们先看下ZStack的总体架构:
从图3-4可以看到,ZStack的整体架构非常清晰,底层只依赖Mysql和Tomcat。所有组件之间的交互都是通过消息,并且,组件和组件之间都是完全松耦合关系,用户通过网络访问ZStack的UI Service,UI Service收到用户请求后,转发给Portal Service,Portal Service针对请求的类型,将请求通过API消息的方式,转发给不同的后端服务,不同的后端服务之间,也通过API消息或内部消息产生交互,请求的功能完成后,再通过UI返回给用户。加上前文ZStack对自身全API的描述,我们对ZStack可以有一个直观的感受,ZStack采用的是一个全API的架构,各组件之间只有消息的交互,组件之间基本独立,添加或者删除某个组件不会影响整个架构(只会增加或失去某些功能)。ZStack把所有服务封装在单一进程中,称之为管理节点。除去一些微服务已经带来的如解耦架构的优点外,进程内的微服务还给了我们很多额外的好处:
图3-4 ZStack架构图
1.简洁的依赖
因为所有服务都运行在同一进程内,软件只需要一份支持软件(如:database library,message library)的拷贝;升级或改变支持库跟我们对一个单独的二进制应用程序所做的一样简单。
2.高可用,负载均衡和监控
服务可以专注于它们的业务逻辑,而不受各种来自高可用、负载均衡、监控的干扰,这一切只由管理节点关心;更进一步,状态可以从服务中分离以创建无状态服务,详见ZStack's Scalability Secrets Part 2:Stateless Services。(www.xing528.com)
3.中心化的配置
由于在一个进程中,所有的服务共享一份配置文件——zstack.properties;用户不需要去管理各种各样的分散在不同机器上的配置文件。
4.易于部署、升级、维护和横向扩展
部署,升级或者维护一个单一的管理节点跟部署升级一个单一的应用程序一样容易。横向扩展服务只需要简单地增加管理节点。
5.允许插件
因为运行在一个单一的进程中,插件可以很容易地被创建,和给传统的单进程应用程序添加插件一样。
通过进程内微服务,ZStack很好地解决了其他云平台遇到的微服务化的架构问题。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。