- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ZStack技术白皮书精选架构篇中册
www.zstack.io
ZStack 技术白皮书精选
架构篇:中册
微服务、通用插件系统、工作流引擎
扫一扫二维码,获取更多技术干货吧
www.zstack.io
版权声明
本白皮书版权属于上海云轴信息科技有限公司,并受法律保护。转载、摘编或利用其它
方式使用本调查报告文字或者观点的,应注明来源。违反上述声明者,将追究其相关法律责
任。
www.zstack.io
目录
ZStack--进程内的微服务架构 3
ZStack--通用插件系统 14
ZStack--工作流引擎 25
www.zstack.io
ZSTACK--进程内的微服务架构
为了应对诸如惊人的操作开销、重复的努力、可测试性等微服务通常面临的挑战,以及获
得诸如代码解耦,易于横向扩展等微服务带来的好处,ZStack 将所有服务包含在单个进程中,
称为管理节点,构建一个进程内的微服务架构。
动机
构建一个IaaS 软件是很难的,这是一个已经从市场上现存的IaaS 软件获得的教训。作为一
个集成软件,IaaS 软件通常需要去管理复杂的各种各样的子系统(如:虚拟机管理器
hypervisor ,存储,网络,身份验证等)并且需要组织协调多个子系统间的交互。例如,创建
虚拟机操作将涉及到虚拟机管理模块,存储模块,网络模块的合作。由于大多数IaaS 软件通常
对架构考虑不够全面就急于开始解决一个具体问题,它们的实现通常会演变成:
www.zstack.io
随着一个软件的不断成长,这个铁板一块的架构(monolithic architecture )将最终变为一
团乱麻,以至于没有人可以修改这个系统的代码,除非把整个系统从头构建。这种铁板一块的
编程问题是微服务可以介入的完美场合。通过划分整个系统的功能为一个个小的、专一的、独
立的服务,并定义服务之间交互的规则,微服务可以帮助转换一个复杂笨重的软件,从紧耦合
的、网状拓扑架构,变成一个松耦合的、星状拓扑的架构。
www.zstack.io
因为服务在微服务中是编译独立的,添加或者删除服务将不会影响整个系统的架构(当
然,移除某些服务会导致功能的缺失)。
微服务远比我们已经讨论的内容更多:微服务的确有很多引入注目的优点,尤其是在一个
的开发运维 流程 (DevOps process )中,当涉及到一个大机构的很多团队时。我们不打算讨论
微服务的所有支持和反对意见,我们确定你可以在网上找到大量的相关文章,我们主要介绍一
些我们认为对IaaS 软件影响深远的特性。
问题
虽然微服务可以解耦合架构,但这是有代价的。阅读Microservices - Not A Free Lunch!和
Failing at Microservices 会对这句话有更深的理解。在这里,我们重点强调一些我们认为对IaaS
软件影响重大的事情。
1. 难以定义服务的边界和重复做功
创建Microservices 架构的挑战之一是决定应该把哪一部分的代码定义为服务,一些是非常
明显的,比如说,处理主机部分的逻辑代码可以被定义为一个服务。然而,管理数据库交互的
代码非常难以决定应不应该被定义为服务。数据库服务可以使得整个架构更加清晰明了,但是
这样会导致严重的性能下降。通常,类似于这样的代码可以被定义为库,库可以被各个服务调
文档评论(0)