前言git
微服务计算平台,即MicroService Computing Platform,简称MSCP,应用微智能思想提供了一套基于微服务架构的计算平台。github
UAV系列软件中监控代理程序(Monitor Agent)和监控管理服务(Health Manager)都是基于MSCP构建的。MSCP可以编程
提供一系列特性来简化计算任务的开发工做,包括提供通讯、工做流、定时任务(多线程、异步等)、IO处理、资源限制器等组件;网络
提供以抽象组件为基础的微服务计算编程框架和运行时;数据结构
提供包含服务注册与发现、负载均衡、自动切换/重试等的服务化支持;多线程
提供以组件编程构建业务功能的能力和单binary多配置实现差别化运行的部署方式以及组件图谱。架构
MSCP可依据在其中流转的共识数据实现多个运行实例的协做和跨实例多个能力的协做。负载均衡
术语定义框架
在开始介绍MSCP以前,先简要介绍一下MSCP相关术语。异步
Component(组件): MSCP中的最小可编程和运行时单位,可完成某一单一处理逻辑,根类是AbstractComponent。
Feature(能力): MSCP运行时的最小生命周期控制单位,由若干MSCP组件和第三方组件构成,并完成某种特定业务功能,具备全局范围内惟一的名称,可热启停。
Resource(资源): MSCP运行时的全局资源共享单位,由若干MSCP组件和第三方组件构成,为Feature提供公共资源实例,具备全局范围内惟一名称,生命周期与JVM相同。
Node(计算节点): MSCP运行时的资源控制单位,由若干Feature构成,资源占用就是一个进程,具备全局范围内惟一Node ID。
架构
为了理解方便,咱们从小到大去讲解MSCP的相关架构及生命周期。
上面咱们已经介绍Component是可完成某一单一处理逻辑的单元,这就意味着从特性上来看Component必然隶属于某一个Feature,而须要完成某些处理逻辑,又必须可以有足够的支持和协调响应的能力,因此Component能够得到来自MSCP的全局能力。MSCP内自带的组件根据基本功能被划分为了多种组件类别:直接继承AbstractComponent的组件称为普通组件;而功能类派生自AbstractComponent的被称为功能组件,大体有启动组件类(SystemStarter)、管理组件类(SystemTimerWorkMgr等)、Feature生命周期控制类(AgentFeatureComponent等)、业务处理类(AbstractHandleWorkComponent等)、通讯类(AbstractHttpServiceComponent等)、流程类(ActionEngine等)、任务处理类(AbstractTimerWork等)、特种功能类(ResourceLimitationAuditor等)。
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来讲,Node是计算的基本单位,也是信息调度的基本单位,而Feature则是Node内部的计算能力,在整个MSCP计算网络中,心跳服务携带的数据通常被称为共识数据,包括Node所在Host主机的IP,具有哪些Feature的能力,对外可以提供哪些服务,以及服务的元数据信息。基于这些信息MSCP可以实现基本的动态编排能力:
另外一方面,在这个基础之上,MSCP也能够进行服务编排:
本文的主要目的是让读者了解UAV MSCP代码结构、机制原理和相关实现。UAV其它重要功能及其实现原理将会在后续文章中依次剖析,敬请期待!
UAVStack已在Github上开放源码,并提供了安装部署、架构说明和用户指南等双语文档,欢迎访问-给星-拉取~~~
扫一扫下方二维码,关注一个不会让你失望的公众号