龙空技术网

ZStack 5分钟 | 进程内微服务架构

ZStack云计算 130

前言:

今天朋友们对“osgi 微服务”都比较看重,朋友们都想要学习一些“osgi 微服务”的相关内容。那么小编也在网络上网罗了一些有关“osgi 微服务””的相关文章,希望各位老铁们能喜欢,朋友们快快来了解一下吧!

ZStack是下一代开源的云计算IaaS(基础架构即服务)软件。它主要面向未来的智能数据中心,通过提供灵活完善的APIs来管理包括计算、存储和网络在内的数据中心资源。用户可以利用ZStack快速构建自己的智能云数据中心,也可以在稳定的ZStack之上搭建灵活的云应用场景,例如VDI(虚拟桌面基础架构)、PaaS(平台即服务)、SaaS(软件即服务)等。

上期5分钟和大家分享了ZStack 核心架构设计特点之可拓展性秘密武器3-无锁架构,本期重点介绍:进程内微服务架构。

前言

为了应对诸如惊人的操作开销、重复的努力、可测试性等微服务通常面临的挑战,以及获得诸如代码解耦,易于横向扩展等微服务带来的好处,ZStack将所有服务包含在单个进程中,称为管理节点,构建一个进程内的微服务架构。

动机

构建一个IaaS软件是很难的,这是一个已经从市场上现存的IaaS软件获得的教训。作为一个集成软件,IaaS软件通常需要去管理复杂的各种各样的子系统(如:虚拟机管理器hypervisor,存储,网络,身份验证等)并且需要组织协调多个子系统间的交互。例如,创建虚拟机操作将涉及到虚拟机管理模块,存储模块,网络模块的合作。由于大多数IaaS软件通常对架构考虑不够全面就急于开始解决一个具体问题,它们的实现通常会演变成:

随着一个软件的不断成长,这个铁板一块的架构(monolithic architecture)将最终变为一团乱麻,以至于没有人可以修改这个系统的代码,除非把整个系统从头构建。这种铁板一块的编程问题是微服务可以介入的完美场合。通过划分整个系统的功能为一个个小的、专一的、独立的服务,并定义服务之间交互的规则,微服务可以帮助转换一个复杂笨重的软件,从紧耦合的、网状拓扑架构,变成一个松耦合的、星状拓扑的架构。

因为服务在微服务中是编译独立的,添加或者删除服务将不会影响整个系统的架构(当然,移除某些服务会导致功能的缺失)。

微服务远比我们已经讨论的内容更多:微服务的确有很多引入注目的优点,尤其是在一个的开发运维流程(DevOps process)中,当涉及到一个大机构的很多团队时。我们不打算讨论微服务的所有支持和反对意见,我们确定你可以在网上找到大量的相关文章,我们主要介绍一些我们认为对IaaS软件影响深远的特性。

问题

虽然微服务可以解耦合架构,但这是有代价的。阅读Microservices - Not AFree Lunch!和Failing atMicroservices会对这句话有更深的理解。在这里,我们重点强调一些我们认为对IaaS软件影响重大的事情。

难以定义服务的边界和重复做功软件难以部署、升级和维护零散的配置额外的监控努力插件杀手

所有的服务都在一个进程

意识到上述的所有问题,以及这么一个事实,即一个可以正常工作的IaaS软件必须和所有的编排服务一起运行之后,ZStack把所有服务封装在单一进程中,称之为管理节点。除去一些微服务已经带来的如解耦架构的优点外,进程内的微服务还给了我们很多额外的好处:

简洁的依赖高可用,负载均衡和监控中心化的配置易于部署、升级、维护和横向扩展允许插件

进程内的微服务并不是一个新发明:早在90年代,微软在COM(Component Object Model)中把server定义为远程、本地和进程内三种。这些进程内的server是一些DLLs,被应用程序在同一进程空间内加载,属于进程内的微服务。Peter Kriens在四年前就声称已经定义了一种总是在同一进程内通信的服务,OSGi µservices。

服务样例

在微服务中,一个服务通常是一个可重复的业务活动的逻辑表示,是无关联的、松耦合的、自包含的,而且对服务的消费者而言是一个“黑盒子”。简单来说,一个传统的微服务通常只关心特定的业务逻辑,有自己的API和配置方法,并能像一个独立的应用程序一样运行。尽管ZStack的服务共享同一块进程空间,它们拥有这些特点中的绝大多数。ZStack很大程度上是一个使用强类型语言java编写的项目,但是在各个编排服务之间没有编译依赖性,例如:计算服务(包含VM服务、主机服务、区域服务、集群服务)并不依赖于存储服务(包含磁盘服务、基础存储服务、备份存储服务、磁盘快照服务等),虽然这些服务在业务流程中是紧密耦合的。

在源代码中,一个ZStack的服务并不比一个作为一个独立的jar文件构建的maven模块多任何东西。每一个服务可以定义自己的APIs、错误码、全局配置,全局属性和系统标签。例如KVM的主机服务拥有自己的APIs和各种各样的允许用户自己定义配置的方式。

总结

在这篇文章中,我们演示了ZStack的进程内微服务架构。通过使用它,ZStack拥有一个非常干净的,松耦合的代码结构,这是创建一个强壮IaaS软件的基础。

以上,就是本期的云补习啦,对架构感兴趣的小伙伴欢迎参考以下步骤自行到官网探索更多ZStack架构相关噢~

产品下载请戳:

产品手册:

Question Time

1. 微服务如何实现复杂笨重软件的转换?

2. 进程内微服务有哪些好处?

问题答案都在今日的小课堂中,补习完成记得带着答案到官微后台回复,我们会随机抽取5位爱学习的小伙伴送上一点小心意~

阅读原文包含文中代码,需要的小伙伴点击进入:官网-知识库-技术汇-进程内微服务’自取即可!

- END -

标签: #osgi 微服务