一种自管理的微服务架构及其服务方法

文档序号:10572800阅读:385来源:国知局
一种自管理的微服务架构及其服务方法
【专利摘要】本发明公开了一种自管理的微服务架构及其服务方法,微服务架构包括:服务编排、配置共享和服务发现两个方面;服务方法包括:组件部署和发现;监控;自动伸缩;健康管理;自修复;单一服务组件化。本发明是一个天然整合了最佳编排以及服务自管理的分布式框架,将自管理与应用的部署相关联,排除了本质上的局限性,利用一致性算法选举leader节点,对集群内其他节点进行管理,同时整合了常用的最佳云编排实践和分布式配置,提供可组合的微服务自管理以及微服务架构的应用。
【专利说明】
一种自管理的微服务架构及其服务方法
技术领域
[0001]本发明涉及一种自管理的云端微服务应用架构,尤其涉及一种利用服务编排和一致性算法的分布式配置管理进行云应用的自管理的微服务架构及其服务方法。
【背景技术】
[0002]云计算在经历早期尝试后正被大多数公司接受,云计算的优势可归纳为两类,可操作性和经济。云计算提供了快捷的自助式服务,通过可使资源部署和移除的API达到任务的自动化,这减少可开发-测试-生产环境搭建的等待时间,提高了敏捷度和交付速度。在经济方面按需收费的模式仅需为实际使用的资源付费,开发公司不再需要进行物理IT基础设施的维护,减少了运营成本,公司更多专注于开发而不是运维。
[0003]然而,虽然有对云应用开发的一系列架构模式和最佳实践,但将遗留应用迀移到云端或者开发原生的云应用仍然存在挑战。一方面,按需收费模式节约成本是有条件的,即:I)应用的负载多变;2)提供商能够分配合适的资源,不多也不少。另一方面,虽然在硬件、故障开关(switch break)、故障域等方法有助于隔离故障,但是开发人员也要在半可靠的基础设施上为修复应用做故障预案。为了达到修复和扩展的效果,需要进行云应用的持续监测,分析特定的应用和基础设施指标,最小化人为干预地实现故障自动响应(健康管理)和环境自动变更(自动伸缩)。
[0004]目前的监控、健康管理、扩展包括下面几种方式:
基础设施提供商,如CloudWatch(http: //aws.amazon.com/cn/cloudwatch/)和AutoScalingChttp://aws.amazon.com/cn/autoscaling/);
第三方服务,如RightScale(https://en.wikipedia.0rg/wiki/RightScale) ,NewRelicChttps://newrelic.com/);
使用组件构建专用方案,如Netfl ix Server (https: //www.netf I ix.com/cn/),Kubernetes(http://kubernetes.1/),logstash(https://www.elastic.co/products/logstash)o
[0005]前两种都可能导致被“套牢”,甚至突然被终止服务。专用方案则难度更大,因为这种方式需要对云应用实现无缝监控和管理,即方案本身能够修复和扩展。上述管理方式都有一个特征:它们都是作为额外的服务或者进程,独立于具体应用的。
[0006]经过上述分析,鉴于这些方式本质上的局限性,提供一种可以进行扩展和修复自管理,以及适应云应用及其动态特性的云端微服务应用架构是大势所趋。

【发明内容】

[0007]本发明的目的是提供一种自管理的微服务架构及其服务方法,利用一致性算法选举leader节点,对集群内其他节点进行管理,同时整合了常用的最佳云编排实践和分布式配置,提供可组合的微服务自管理以及微服务架构的应用。
[0008]本发明的目的通过以下技术方案实现: 一种自管理的微服务架构,其特征在于:该微服务架构包括:服务编排、配置共享和服务发现两个方面;服务编排,是一种自动化部署的抽象,通过表示所需资源及其拓扑关系的类型图(Type Graph,TG)定义一个服务,当需要实例化时,编排器就开始对资源进行部署和配置(通过自动部署工具);配置共享和服务发现,考虑到部署简便和文档丰富,本发明使用了 EtccLEtcd是分布式配置共享及服务发现的一致性键值仓库,多个节点运行etcd服务器,相互连通形成集群,通过一致性算法(即Raft)进行容错和保持一致性,统一集群中节点共享相同令牌,使用CoreOS提供的节点注册服务来相互发现。
[0009]本发明也可以使用专用的节点注册服务。Etcd使用的一致性算法同样提供Leader的选举功能,集群中的某个节点被其他节点选举为唯一的“协调者”。
[0010]一种自管理的微服务架构的服务方法,其特征在于包括以下步骤:
I)组件部署和发现。初始的自管理单一服务部署可以通过G.Karagiannis等人提出的编SM艮务(G.Karagiannis, A.Jamakovic, A.Edmonds, C.Parada, T.Metsch, D.Pichon, M.Corici, S.Ruffino, A.Gomes, P.S.Crosta, et al.Mobile cloudnetworking: Virtualisat1n of cellular networks.1n Telecommunicat1ns (ICT),2014 21st Internat1nal Conference on, pages 410-415.1EEE, 2014.)实现。已部署的软件组件定位自己在类型图(TG)中的角色(本例中指是否是LB,AS,DB或者CA);每个组件使用uuid标识,所有组件作为节点共享令牌来访问Etcd集群,并相互发现。当编排器部署完成初始化组件,就在Etcd上将对应服务状态设置为“active”,当初始化完成后,被选举为leader的组件开始履行自动扩展和健康管理的自管理功能。
[0011]2)监控。假设每个相关组件都执行内部监控,并将监控指标发布给Etcd进行聚合。Etcd使存储的监控信息变得无状态达到伸缩的弹性效果。即使虚机或容器的伸缩过程发生故障,会立即启用新的组件,从中断处接替伸缩过程。
[0012]3)自动伸缩。自动伸缩组件使用性能模型进行组件横向扩展。主要功能是确定在保证服务质量前提下每种类型组件所需实例户数量。自动伸缩由leader节点启动,该节点从Etcd中监控信息,获取当前系统配置,然后输出每种组件类型的实例数量,并存储在类型图中的节点的约束文件夹下以req(required)标识。
[0013]4)健康管理。负责健康管理的节点将实例图与系统的期望状态比对,根据结果实施以下操作:I)杀死或重启未响应组件;2)实例化新组件;3)销毁不需要的组件;4)按照基数约束,配置组件间联系。
[0014]5)自修复。通过在不同故障域中测试部署组件,上述架构可以从故障中修复,而且故障组件会在秒级重启。只要剩余集群节点数量大于一致性所需最小值(3个),故障节点以外的某个节点会被选举为新leader,预期的应用状态和监控数据在Etcd集群中共享,使得健康管理和自动伸缩组件无状态,进而正确管理单一服务。
[0015]6)单一服务组件化。每个微服务以单一服务的形式部署,但是组件持有两个etcd令牌。本地令牌用来和原来一样形成单一服务集群并选举leader,第二个令牌用于被选举出的leader节点们组成更高一层的多服务集群。
[0016]本发明中,监控指标是指,系统底层指标(如CPU、10、RAM)和上层应用的指标(如响应时间、吞吐量)。
[0017]与现有微服务架构相比,本发明具有如下优势: 本发明是一个天然整合了最佳编排以及服务自管理分布式框架,将自管理与应用的部署相关联,排除了本质上的局限性,可以天然的扩展应用而不需额外的代码或认为干预。本发明使得云应用可以更加方便的迀移到其他更高效的云平台上,而不会被基础设施等提供的管理“套牢”。
【附图说明】
[0018]图1-1带有缓存的简单web应用类型图示例;
图1-2是带有缓存的简单web应用类型对应实例图示例;
图2为描绘服务实例和反实例过程的时序图;
图3为使用Etcd目录结构表示类型图(TG)和示例图(IG)的片段图;
图4为一个基于微服务应用的类型图和实例图示例图;
图5为Etcd实现自管理的微服务应用图。
【具体实施方式】
[0019]以下结合附图和具体实施例对本发明进行详细说明。
[0020]一种自管理的微服务架构,应用于带有缓存的简单Web应用中,包括服务编排以及配置共享和服务发现两部分。
[0021]服务编排。图1-1展示了带有缓存的简单web应用编排类型图(TG),其使用负载均衡器(LB)向最多20个应用服务器(AS)实例转发请求,并最多连接2个数据库(DB)实例和4个缓存(CA)实例。图中节点旁的数字代表实例的上下限约束,边旁的数字代表实例间连接数的上下限约束。如,一个缓存节点最多给5个应用服务器节点提供服务。连接数的约束设定一般依赖技术人员的经验。右边图是对应的实例图。在数学上,类型图(TG)是实例图(IG)的范式,实例图在拓扑上遵守了类型图的拓扑结构和约束。
[0022]配置共享和服务发现。Etcd配置服务的主要用处是当系统发生相关改变时更新组件的配置。例如,图1-2所提及的应用示例,负载均衡器可以使用Etcd来监控所有应用服务器,一旦有新的应用服务器启动,立即重新配置转发策略。这个重配置协议仅需要应用服务器启动时进行服务注册。Etcd使用的一致性算法同样提供Leader的选举功能,集群中的某个节点被其他节点选举为唯一的“协调者”。
[0023]本实施例的自管理的微服务架构的实施流程如图2:—种自管理的微服务架构的服务方法,包括以下步骤:
I)组件部署和发现。Etcd目录结构可以用来表示类型图(TG)和实例图(IG)。当一个新组建部署并启动时将加入Etcd集群,在对应组件类型下注册新目录,广播自身的能力,保存关系信息。图3中,一个新的CA(cache)实例使用uuidl创建目录,并保存可以被应用服务器组件使用的终端键。自动扩展管理负责确定每种组件类型需要的实例数量,健康管理器确保有预定数量的实例正确运行且和类型图中所规定的连接相配。Etcd周期性发布组件信息(如终端)当组件故障或者被移除时,其可访问的信息将自动从Etcd中移除,健康管理器以及所有独立组件将收到更新通告。当编排器部署完成初始化组件,就在Etcd上将对应服务状态设置为“active”,当初始化完成后,被选举为leader的组件开始履行自动扩展和健康管理的自管理功能。
[0024]2)监控。云监控都需要收集系统底层指标(如CPU,10,RAM)和上层应用的指标(如响应时间,吞吐量)。响应时间一般与系统性能有关,但为了服务质量,几秒钟的时间窗口足以评估系统表现。假设每个相关组件都执行内部监控,并将指标发布给Etcd进行聚合。例如,图1例子中的负载均衡可以用内部指标与logstash监控指标相结合,得到诸如平均请求速率,响应时间,最后5s,1s,30s,lm,5m,1m的请求队列长度等信息。这些指标一般足以确定实际所需的应用服务器数量。
[0025]3)自动伸缩。自动伸缩组件使用性能模型进行组件横向扩展。主要功能是确定在保证服务质量前提下每种类型组件所需实例户数量。自动伸缩由leader节点启动,该节点从Etcd中监控信息,获取当前系统配置,然后输出每种组件类型的实例数量,并存储在类型图中的节点的约束文件夹下以req(required)标识,如图3所示。
[0026]4)健康管理。负责健康管理的节点将实例图与系统的期望状态比对,根据结果实施以下操作:I)杀死或重启未响应组件;2)实例化新组件;3)销毁不需要的组件;4)按照基数约束,配置组件间联系。
[0027]5)自修复。通过在不同故障域中测试部署组件,上述架构可以从故障中修复,而且故障组件会在秒级重启。只要剩余集群节点数量大于一致性所需最小值(3个),故障节点以外的某个节点会被选举为新leader,预期的应用状态和监控数据在Etcd集群中共享,使得健康管理和自动伸缩组件无状态,进而正确管理单一服务。
[0028]6)单一服务组件化。基于服务编排可组合性的概念,同样的架构也可以用来部署自管理的服务组合以及使用微服务架构的应用。正如可以在单一服务中使用类型图表示组件,类型图同样可以表示基于微服务的应用以及相互调用关系,实例图则可以表示多个微服务实例,提供弹性及性能的保证,如图4。
[0029]图5直观展示了Etcd集群如何用来实现自管理的微服务应用。每个微服务以单一服务的形式部署,但是组件持有两个etcd令牌。本地令牌用来和原来一样形成单一服务集群并选举leader,第二个令牌用于被选举出的leader节点们组成更高一层的多服务集群。组合集群用于微服务终端发现,也用于微服务组合层次的leader选举。再加上跨故障域的布置,上面提出的架构能够进行分布层次的自管理;每个单元都是活跃的自管理元素,通过新建单元以维持形态。
【主权项】
1.一种自管理的微服务架构,其特征在于:该微服务架构包括服务编排、配置共享和服务发现两个方面;服务编排,是一种自动化部署的抽象,通过表示所需资源及其拓扑关系的类型图定义一个服务,当需要实例化时,编排器就开始对资源进行部署和配置;配置共享和服务发现,考虑到部署简便和文档丰富,使用EtccUEtcd是分布式配置共享及服务发现的一致性键值仓库,多个节点运行Etcd服务器,相互连通形成集群,通过一致性算法进行容错和保持一致性,统一集群中节点共享相同令牌,使用CoreOS提供的节点注册服务来相互发现。2.根据权利要求1所述的自管理的微服务架构,其特征在于:使用专用的节点注册服务;Etcd使用的一致性算法提供Leader的选举功能,集群中的某个节点被其他节点选举为唯一的“协调者”。3.—种权利要求1所述的自管理的微服务架构的服务方法,其特征在于包括以下步骤: 1)组件部署和发现:初始的自管理单一服务部署通过编排服务实现;已部署的组件定位自己在类型图中的角色;每个组件使用uuid标识,所有组件作为节点共享令牌来访问Etcd集群,并相互发现;当编排器部署完成初始化组件,就在Etcd上将对应服务状态设置为“active”,当初始化完成后,被选举为leader的组件开始履行自动扩展和健康管理的自管理功能; 2)监控:假设每个相关组件都执行内部监控,并将监控指标发布给Etcd进行聚合;Etcd使存储的监控信息变得无状态达到伸缩的弹性效果;即使虚机或容器的伸缩过程发生故障,会立即启用新的组件,从中断处接替伸缩过程; 3)自动伸缩:自动伸缩组件使用性能模型进行组件横向扩展;主要功能是确定在保证服务质量前提下每种类型组件所需实例户数量;自动伸缩由leader节点启动,该节点从Etcd中监控信息,获取当前系统配置,然后输出每种组件类型的实例数量,并存储在类型图中的节点的约束文件夹下以r eq标识; 4)健康管理:负责健康管理的节点将实例图与系统的期望状态比对,根据结果实施以下操作:(I)杀死或重启未响应组件;(2)实例化新组件;(3)销毁不需要的组件;(4)按照基数约束,配置组件间联系; 5)自修复:通过在不同故障域中测试部署组件,上述架构从故障中修复,而且故障组件在秒级重启;只要剩余集群节点数量大于一致性所需最小值,故障节点以外的某个节点被选举为新leader,预期的应用状态和监控数据在Etcd集群中共享,使得健康管理和自动伸缩组件无状态,进而正确管理单一服务; 6)单一服务组件化:每个微服务以单一服务的形式部署,但是组件持有两个Etcd令牌;本地令牌用来和原来一样形成单一服务集群并选举leader,第二个令牌用于被选举出的leader节点们组成更高一层的多服务集群。4.根据权利要求3所述的自管理的微服务架构的服务方法,其特征在于:步骤2)中,所述监控指标是指,系统底层指标,包括CPU、10、RAM;上层应用的指标,包括响应时间、吞吐量。
【文档编号】H04L29/08GK105933448SQ201610493852
【公开日】2016年9月7日
【申请日】2016年6月29日
【发明人】赵军, 程伟华, 谭晶
【申请人】江苏电力信息技术有限公司, 国网江苏省电力公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1