今天我们向大家介绍UAVStack中的微服务计算平台(MSCP),UAV系列软件中监控代理程序(Monitor Agent)和监控管理服务(Health Manager)都是基于MSCP构建的。
微服务计算平台,即MicroService Computing Platform,简称MSCP,应用微智能思想提供了一套基于微服务架构的计算平台。
UAV系列软件中监控代理程序(Monitor Agent)和监控管理服务(Health Manager)都是基于MSCP构建的。MSCP能够
MSCP可依据在其中流转的共识数据实现多个运行实例的协作和跨实例多个能力的协作。
术语定义
在开始介绍MSCP之前,先简要介绍一下MSCP相关术语。
架构
为了理解方便,我们从小到大去讲解MSCP的相关架构及生命周期。
上面我们已经介绍Component是可完成某一单一处理逻辑的单元,这就意味着从特性上来看Component必然隶属于某一个Feature,而需要完成某些处理逻辑,又必须能够有足够的支持和协调响应的能力,所以Component可以获得来自MSCP的全局能力。MSCP内自带的组件根据基本功能被划分为了多种组件类别:直接继承AbstractComponent的组件称为普通组件;而功能类派生自AbstractComponent的被称为功能组件,大致有启动组件类(SystemStarter)、管理组件类(SystemTimerWorkMgr等)、Feature生命周期控制类(AgentFeatureComponent等)、业务处理类(AbstractHandleWorkComponent等)、通信类(AbstractHttpServiceComponent等)、流程类(ActionEngine等)、任务处理类(AbstractTimerWork等)、特种功能类(ResourceLimitationAuditor等)。
Feature具有全局范围内唯一的名称,至少包含一个生命周期控制类的组件,即AgentFeatureComponent。Feature通过SystemStarter启动器开始,通过installFeature方法加载安装,在start方法中初始化各种Component并注册到ConfigurationManager上。ConfigurationManager管理了配置和各实例的各种属性,因此既可以控制Feature和Component响应一组事件,比如配置变更onConfigUpdate,也可以获得来自MSCP的全局能力,同时由于各Feature的组件是由该Feature的单独的ClassLoader进行构造加载,从而也实现了隔离,并有了热启停的基础。
Resource是MSCP运行时的全局共享单位,所以Resource的类可被Feature直接引用,但Resource中的组件需要通过ConfigurationManager来获取。在生命周期控制上不同于Feature的地方在于,Resource只有一个生命周期控制类的组件,即AgentFeatureComponent。
若干Feature组成一个Node,Resource是Node的可选项。Node具有全局范围内唯一ID,只要NodeID不变,无论进程几次重启,就是同一个Node。Node内Feature之间Component的组件引用以Feature名和组件名的形式通过getComponent方法调用,而各Components间的数据流转则是通过Feature的AgentFeatureComponent组件的exchange方法进行数据交换。Resource也类似,如果需要获取类似消息队列生产者这样的Resource中的组件,则通过AgentResourceComponent的getComponent获取对应组件,并用getResource方法得到对应Resource。
由于MSCP是Node、Feature、Component三级的形式,并可以进行单binary多配置的差异化部署方式,这就意味着有了多个实例或跨实例多个Feature进行协作的可能性。
MSCP具有自己的心跳机制,该心跳主要有两个作用:
对于MSCP来说,Node是计算的基本单位,也是信息调度的基本单位,而Feature则是Node内部的计算能力,在整个MSCP计算网络中,心跳服务携带的数据一般被称为共识数据,包括Node所在Host主机的IP,具备哪些Feature的能力,对外能够提供哪些服务,以及服务的元数据信息。基于这些信息MSCP能够实现基本的动态编排能力:
另一方面,在这个基础之上,MSCP也可以进行服务编排:
本文的主要目的是让读者了解UAV MSCP代码结构、机制原理和相关实现。UAV其它重要功能及其实现原理将会在后续文章中依次剖析,敬请期待!
官方网站:https://uavorg.github.io/main/
开源地址:https://github.com/uavorg
UAVStack已在Github上开放源码,并提供了安装部署、架构说明和用户指南等双语文档,欢迎访问-给星-拉取~~~
文章来源:公 号 UAVStack_CreditEase
宜信技术学院官网:http://college.creditease.cn/#/index
作者:周新宇