一种基于微服务架构的服务治理系统及其方法与流程

文档序号:17727006发布日期:2019-05-22 02:35阅读:336来源:国知局
一种基于微服务架构的服务治理系统及其方法与流程

本发明涉及互联网信息领域,尤其涉及一种基于微服务架构的服务治理系统及其方法。



背景技术:

随着互联网技术与应用的飞速发展以及互联网用户的快速增长,互联网应用的复杂内容服务和不断增长的并发访问量已经成为了现代互联网应用发展的主旋律。传统的单体应用在复杂服务方面已经显得很是吃力,又伴随着不断增长的用户量,致使单体应用无法再为每一位用户继续提供优质的服务。

针对上面的问题,全世界的互联网公司都在寻求解决办法。微服务架构最早由国际著名的面向对象分析设计专家martinfowler提出的。微服务架构区别于单体应用具有更高的扩展性。去中心化使得整个系统高度解耦,可用性大大提高,能承担更高的负载。每一个服务组件,都没有开发语言的要求,实现了跨平台,各个组件通过http协议的同步机制来进行通信。

但是微服务架构由于其“去中心化”和“组件化”的特性,使得服务组件之间的调用关系更为复杂,服务调用的处理方式、结果返回和缓存处理都是亟待解决的问题。



技术实现要素:

本发明的目的就是提供一种基于微服务架构的服务治理方法,主要应用在大型业务系统,可以是传统互联网高并发项目,也可以是企事业单位的管理系统。使用本方法可以使业务逻辑更加清晰,减轻技术人员繁重的维护工作;解决了大型业务系统业务间耦合度过高,扩展性极差的问题;从一定程度上减轻了硬件压力,降低了硬件基础配置,提高了产出率。

实现本发明目的技术方案是:

本发明通过以下3种方式实服务治理框架的稳定和高效:

①高度抽象分层架构

本方法采用面向接口编程的方式来实现所有细节,对外隐藏所有实现细节,对框架内的资源做了对外隔离,保证在多线程环境下框架稳定;运用面向对象思想巧妙地实现了功能分离,通过组件化将框架的各个模块进行分层,降低各组件的耦合性;

②组件集群化

通过组件集群,通过动态扩展集群的方式,在不停机的情况下动态扩展器群数量,无感移除失效节点,完善的集群健康检查机制,提前告警,自动化问题修复、限流,增强框架稳定性;

③服务降级

在高并发的系统中,会出现在某个时间点并发量呈现爆发式增长,系统由于系统资源有限,大量请求会超时,每个超时的请求都会占用系统资源,直到超时,才会释放系统资源,长此以往,系统堆积的慢请求会越来越多,就会导致该服务不可用;对于这种重大事故,本发明通过动态降低不重要业务模块的访问量来提高并发业务的访问能力;

一、基于微服务架构的服务治理系统(简称系统)

本系统包括依次交互的服务消费者、服务注册中心和服务提供者;

所述的服务消费者包括依次交互的缓存器组件、负载均衡组件和断路器组件;

所述的服务注册中心包括依次交互的注册表组件和健康检查组件。

二、基于微服务架构的服务治理方法(简称方法)

本方法包括下列步骤:

①服务创建

a、服务消费者和服务提供者都是通过该方法创建得到的产物;本服务创建方法本质是不区分服务消费者和服务提供者,原因在于生产环境下服务之间的互相调用是常见且频繁的;通过本方法生产的是最基本的服务架构,通过预留接口将其他组件注册到服务中,根据组件的组合方式,使得服务拥有不同的特性,进而形成了不同的服务类型;

b、基础服务包括服务基础信息协议、服务调用协议和服务心跳接口;这三个基础规范使得服务的创建稳定且高效;

a、服务基础信息协议,包括服务名称的规范、服务网络路由、服务基础配置信息以及网络空间编号;

b、服务调用协议,本方法采用基于http协议的restful规范作为实施的技术职称。通过ip映射技术隐藏具体的ip,由易于理解的英文名称来代替,提高了系统的扩展性和安全性,大大降低了运营和维护的成本;

c、服务心跳接口,该接口很重要,开接口直接影响到系统的可用性。本接口返回服务的连接数、使用时间、压力值。这些信息将返给健康检查器组件220;

②服务治理

ⅰ、服务管理是分层进行管理的,不同的服务角色都是以集群的形式来提供服务的,每个集群内部都有一个集群管理器,管理者集群内的服务实例,通过动态扫描服务实例,查询每个服务的状态;

ⅱ、当服务实例挂掉,集群管理器将会去掉挂掉的机器,但是管理器对该实例的询问不会停止,以便挂掉的服务实例重新上线后能及时的加入到集群,提供服务;

ⅲ、集群中的服务实例可能是同机房的,也可能是跨机房的,通过每个实例的网络空间编号来印象负载均衡策略。本方法默认会将在同一个网络编号的服务提供者去提供响应请求。

本发明具有下列优点和积极效果:

①服务安全可靠:通过集群技术和健康检查机制,使得系统在极端环境下都是可用的,能很好地为外界提供服务,将死掉的服务实例及时从集群中清除和将恢复正常的服务实例快速加入集群,使得在任何时候本方法下的任何服务都可以正常且稳定地对外提供服务;

②高性能、高扩展:通过集群技术,可以在不停机的情况下动态地扩展集群内服务数量,在性能曲线的拐角,将发出告警,技术人员仅仅需要增加几台机器,告知本服务治理系统,系统会自动将其加入,极大地提高了并发能力;

③防止恶意攻击:通过ip映射技术,使得外界无法找到服务提供者的具体网络地址,通过缓存技术使得恶意访问将不会穿透我们的数据层,而是直接从缓存中直接返回数据,断路器技术使得每一次访问更加安全,避免网站无响应;

④详细的api文档:本方法附带有全面且具体的解释文档,这大大降低了技术人员的使用难度,节省了开发周期。

附图说明

图1是本系统的结构方框图。

图中:

100—服务消费者,

110—缓存器组件;

120—负载均衡组件;

130—断路器组件;

200—服务注册中心,

210—注册表组件;

220—健康检查器组件;

300—服务提供者。

英译汉

1、key:标识键值对存储的键;

2、api:applicationprogramminginterface,调用函数;

3、start:断路器打开状态;

4、stop:断路器关闭状态;

5、http:hypertexttransferprotocol,网络传输协议;

6、restful:representationalstatetransfer,一种软件架构风格;

7、ip:internetprotocol,一种网络数据传输协议;

8、martinfowler:美国人,国际著名面向对象分析设计科学家。

具体实施方式

下面结合附图和实施例详细说明:

一、系统

1、总体

如图1,本系统包括依次交互的服务消费者100、服务注册中心200和服务提供者300。

2、功能模块

1)服务消费者100

服务消费者100包括依次交互的缓存器组件110、负载均衡组件120和断路器组件130。

服务消费者100负责服务调用的创建、校验和过滤,通过缓存组件110降低访问响应时间,降低服务压力;通过负载均衡组件120提高服务质量,降低访问失败风险;通过断路器组件130优化服务调用流程,校验服务请求可行性。

(1)缓存器组件110

缓存器组件110在请求达到后,通过注解拿到约定的key,在缓存池中查看对应key的响应结果,找到将直接响应至客户端,否则将请求转发至断路器组件120。

(2)负载均衡组件120

负载均衡组件120根据请求的服务名,到服务对象池的双层键值对容器中查找该key,通过最小连接数算法将对应的服务实例传递至断路器组件130。

(3)断路器组件130

断路器组件130根据服务提供者实例,判断其断路器状态,打开就执行错误响应方法,否则进行服务调用的校验,检验成功就扭转到服务注册中心200。

服务消费者100其工作流程是:

①在服务消费者100发起远程服务调用时,首先会调用缓存器组件110,该组件通过通过约定好的key在内存和磁盘中查找对应的缓存对象,找到直接返回结果,否则进入负载均衡组件120。

a、通过注解的方式在api接口上定义缓存key,本方法采用的是通过请求参数来作为key;

b、缓存中是通过键值对的形式来存放响应对象的,一个远程访问通过key从缓存池中查找;

c、缓存没有命中时,最后返回的响应数据将存入缓存池中;

d、在更新操作的api接口上,将使用移除缓存注解来是缓存失效。

②负载均衡组件120主要是负责动态获取远程的服务提供者300实例,根据最小连接数算法来动态的分配,实现了服务提供者300的高可用;

③断路器组件130通过负载均衡组件120拿到远程服务实例,通过该服务实例在3分钟内的调用统计信息,当成功率(成功次数/问次数)低于60%的时候,断路器的状态将变为stop,此时直接调用失败方法返回给调用接口;断路器状态切换为stop后,30秒内拒绝转发请求至服务注册中心200,时间到达后,状态将至为start,此时访问正常。

2)服务注册中心200

服务注册中心200包括依次交互的注册表组件210和健康检查器组件220。

(1)注册表组件210

注册表组件210维护的是所有在其注册的服务提供者实例,通过健康检查器组件220的服务提供者实例的状态,动态的执行增加或移除操作。

(2)健康检查器组件220

健康检查器组件220是与每个服务提供者都保持着心跳连接,通过心跳接口返回结果动态标记服务提供者实例。

服务注册中心200其工作流程是:

①服务注册中心200的注册表组件210维护的是一组服务提供者300实例,注册表的数据结构是一个嵌套键值对,在服务提供者300启动的时候会向注册表中进行注册;

a、注册表在服务提供者对象插入的时候会检测该对象想是否已存在,如存在将进入二级容器;

b、当数据移除的时候会首先移除二级容器内对应同一服务名的对象,当二级容器不存在该该服务名为key的对象时,该服务提供者将完全从注册表中移除。

②健康检查组件220与每一个服务提供者300都保持这心跳连接,该心跳的频率在1次/3秒,主要是用来检测远程服务是否处于在线状态;

a、当远程服务拒绝连接或者心跳接口返回的数据出现异常,那么该服务本方法认为是处理离线的状态,离线的服务提供者300将从注册表中移除;

b、在远程服务离线的情况的30秒内,该心跳连接仍然处于工作状态,心跳期间内服务一旦上线,该服务将再次被注册表组件210收录;

当离线心跳时间超过30秒,那么意味着健康检查器组件220将停止该心跳任务,只能重新通过服务提供者300向注册中心组件200注册方式来恢复提供服务的权利;

3)服务提供者300

服务提供者300通过实现心跳接口来和健康检查器组件220进行交互,是终止消费服务请求的实际对象。

3、本系统的工作机理

①服务消费者100在接收到客户端的请求后,通过缓存检查后,在未命中的情况下,通过负载均衡技术找到对应的服务提供者实例交由断路器组件130校验,校验通过的请求将扭转到服务注册中心200;

②服务注册中心200在获取到服务消费者100的请求信息后,通过注册表找到对应服务名的服务提供者实例,交由健康检查器组件220,检测通过后拿到实际ip地址,通过http请求服务提供者300;

③服务提供者在收到请求后,通过自身逻辑处理后,将结果返回至服务消费者100。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1