CN109788055B - 一种基于微服务架构的服务治理系统及其方法 - Google Patents
一种基于微服务架构的服务治理系统及其方法 Download PDFInfo
- Publication number
- CN109788055B CN109788055B CN201910025017.5A CN201910025017A CN109788055B CN 109788055 B CN109788055 B CN 109788055B CN 201910025017 A CN201910025017 A CN 201910025017A CN 109788055 B CN109788055 B CN 109788055B
- Authority
- CN
- China
- Prior art keywords
- service
- component
- registry
- service provider
- heartbeat
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Medical Treatment And Welfare Office Work (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于微服务架构的服务治理系统及其方法,涉及互联网信息领域。本系统包括依次交互的服务消费者(100)、服务注册中心(200)和服务提供者(300);所述的服务消费者(100)包括依次交互的缓存器组件(110)、负载均衡组件(120)和断路器组件(130);所述的服务注册中心(200)包括一次交互的注册表组件(210)和健康检查组件(220)。本方法包括:①服务创建;②服务管理。本发明具有下列优点和积极效果:①服务具有更强的扩展性;②负载均衡使得各个服务具有更高的可用性;③提高了系统的并发能力;④使得系统的各个模块高度解耦。
Description
技术领域
本发明涉及互联网信息领域,尤其涉及一种基于微服务架构的服务治理系统及其方法。
背景技术
随着互联网技术与应用的飞速发展以及互联网用户的快速增长,互联网应用的复杂内容服务和不断增长的并发访问量已经成为了现代互联网应用发展的主旋律。传统的单体应用在复杂服务方面已经显得很是吃力,又伴随着不断增长的用户量,致使单体应用无法再为每一位用户继续提供优质的服务。
针对上面的问题,全世界的互联网公司都在寻求解决办法。微服务架构最早由国际著名的面向对象分析设计专家Martin Fowler提出的。微服务架构区别于单体应用具有更高的扩展性。去中心化使得整个系统高度解耦,可用性大大提高,能承担更高的负载。每一个服务组件,都没有开发语言的要求,实现了跨平台,各个组件通过HTTP协议的同步机制来进行通信。
但是微服务架构由于其“去中心化”和“组件化”的特性,使得服务组件之间的调用关系更为复杂,服务调用的处理方式、结果返回和缓存处理都是亟待解决的问题。
发明内容
本发明的目的就是提供一种基于微服务架构的服务治理方法,主要应用在大型业务系统,可以是传统互联网高并发项目,也可以是企事业单位的管理系统。使用本方法可以使业务逻辑更加清晰,减轻技术人员繁重的维护工作;解决了大型业务系统业务间耦合度过高,扩展性极差的问题;从一定程度上减轻了硬件压力,降低了硬件基础配置,提高了产出率。
实现本发明目的技术方案是:
本发明通过以下3种方式实服务治理框架的稳定和高效:
①高度抽象分层架构
本方法采用面向接口编程的方式来实现所有细节,对外隐藏所有实现细节,对框架内的资源做了对外隔离,保证在多线程环境下框架稳定;运用面向对象思想巧妙地实现了功能分离,通过组件化将框架的各个模块进行分层,降低各组件的耦合性;
②组件集群化
通过组件集群,通过动态扩展集群的方式,在不停机的情况下动态扩展器群数量,无感移除失效节点,完善的集群健康检查机制,提前告警,自动化问题修复、限流,增强框架稳定性;
③服务降级
在高并发的系统中,会出现在某个时间点并发量呈现爆发式增长,系统由于系统资源有限,大量请求会超时,每个超时的请求都会占用系统资源,直到超时,才会释放系统资源,长此以往,系统堆积的慢请求会越来越多,就会导致该服务不可用;对于这种重大事故,本发明通过动态降低不重要业务模块的访问量来提高并发业务的访问能力;
一、基于微服务架构的服务治理系统(简称系统)
本系统包括依次交互的服务消费者、服务注册中心和服务提供者;
所述的服务消费者包括依次交互的缓存器组件、负载均衡组件和断路器组件;
所述的服务注册中心包括依次交互的注册表组件和健康检查器组件。
二、基于微服务架构的服务治理方法(简称方法)
本方法包括下列步骤:
①服务创建
A、服务消费者和服务提供者都是通过该方法创建得到的产物;本服务创建方法本质是不区分服务消费者和服务提供者,原因在于生产环境下服务之间的互相调用是常见且频繁的;通过本方法生产的是最基本的服务架构,通过预留接口将其他组件注册到服务中,根据组件的组合方式,使得服务拥有不同的特性,进而形成了不同的服务类型;
B、基础服务包括服务基础信息协议、服务调用协议和服务心跳接口;这三个基础规范使得服务的创建稳定且高效;
a、服务基础信息协议,包括服务名称的规范、服务网络路由、服务基础配置信息以及网络空间编号;
b、服务调用协议,本方法采用基于HTTP协议的RESTFUL规范作为实施的技术支撑。通过IP映射技术隐藏具体的IP,由易于理解的英文名称来代替,提高了系统的扩展性和安全性,大大降低了运营和维护的成本;
c、服务心跳接口,该接口很重要,该接口直接影响到系统的可用性。本接口返回服务的连接数、使用时间、压力值。这些信息将返给健康检查器组件220;
②服务治理
i、服务管理是分层进行管理的,不同的服务角色都是以集群的形式来提供服务的,每个集群内部都有一个集群管理器,管理着集群内的服务实例,通过动态扫描服务实例,查询每个服务的状态;
ii、当服务实例挂掉,集群管理器将会去掉挂掉的机器,但是管理器对该实例的询问不会停止,以便挂掉的服务实例重新上线后能及时的加入到集群,提供服务;
iii、集群中的服务实例可能是同机房的,也可能是跨机房的,通过每个实例的网络空间编号来影响负载均衡策略。本方法默认会将在同一个网络编号的服务提供者去提供响应请求。
本发明具有下列优点和积极效果:
①服务安全可靠:通过集群技术和健康检查机制,使得系统在极端环境下都是可用的,能很好地为外界提供服务,将死掉的服务实例及时从集群中清除和将恢复正常的服务实例快速加入集群,使得在任何时候本方法下的任何服务都可以正常且稳定地对外提供服务;
②高性能、高扩展:通过集群技术,可以在不停机的情况下动态地扩展集群内服务数量,在性能曲线的拐角,将发出告警,技术人员仅仅需要增加几台机器,告知本服务治理系统,系统会自动将其加入,极大地提高了并发能力;
③防止恶意攻击:通过IP映射技术,使得外界无法找到服务提供者的具体网络地址,通过缓存技术使得恶意访问将不会穿透我们的数据层,而是直接从缓存中直接返回数据,断路器技术使得每一次访问更加安全,避免网站无响应;
④详细的API文档:本方法附带有全面且具体的解释文档,这大大降低了技术人员的使用难度,节省了开发周期。
附图说明
图1是本系统的结构方框图。
图中:
100-服务消费者,
110-缓存器组件;
120-负载均衡组件;
130-断路器组件;
200-服务注册中心,
210-注册表组件;
220-健康检查器组件;
300一服务提供者。
英译汉
1、KEY:标识键值对存储的键;
2、API:Application Programming Interface,调用函数;
3、start:断路器打开状态;
4、stop:断路器关闭状态;
5、HTTP:Hyper Text Transfer Protocol,网络传输协议;
6、RESTFUL:Representational State Transfer,一种软件架构风格;
7、IP:Internet Protocol,一种网络数据传输协议;
8、Martin Fowler:美国人,国际著名面向对象分析设计科学家。
具体实施方式
下面结合附图和实施例详细说明:
一、系统
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。
Claims (3)
1.一种基于微服务架构的服务治理系统,
包括依次交互的服务消费者(100)、服务注册中心(200)和服务提供者(300);
所述的服务消费者(100)包括依次交互的缓存器组件(110)、负载均衡组件(120)和断路器组件(130);
所述的服务注册中心(200)包括依次交互的注册表组件(210)和健康检查器组件(220);
缓存器组件(110)在请求达到后,通过注解拿到约定的KEY,在缓存池中查看对应KEY的响应结果,找到将直接响应至客户端,否则将请求转发至负载均衡组件(120);
负载均衡组件(120)根据请求的服务名,到服务对象池的双层键值对容器中查找该KEY,通过最小连接数算法将对应的服务实例传递至断路器组件(130);
断路器组件(130)根据服务提供者实例,判断其断路器状态,打开就执行错误响应方法,否则进行服务调用的校验,检验成功就扭转到服务注册中心(200);
注册表组件(210)维护的是所有在其注册的服务提供者实例,通过健康检查器组件(220)的服务提供者实例的状态,动态的执行增加或移除操作;
健康检查器组件(220)是与每个服务提供者都保持着心跳连接,通过心跳接口返回结果动态标记服务提供者实例;
服务提供者(300)通过心跳接口来和健康检查器组件(220)进行交互,是终止消费服务请求的实际对象。
2.按权利要求1所述的一种基于微服务架构的服务治理系统,其特征在于
所述的服务消费者(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,此时访问正常。
3.按权利要求1所述的一种基于微服务架构的服务治理系统,其特征在于
所述的服务注册中心(200)其工作流程是:
①服务注册中心(200)的注册表组件(210)维护的是一组服务提供者(300)实例,注册表的数据结构是一个嵌套键值对,在服务提供者(300)启动的时候会向注册表中进行注册;
a、注册表在服务提供者对象插入的时候会检测该对象是否已存在,如存在将进入二级容器;
b、当数据移除的时候会首先移除二级容器内对应同一服务名的对象,当二级容器不存在该服务名为key的对象时,该服务提供者将完全从注册表中移除;
②健康检查器组件(220)与每一个服务提供者(300)都保持着心跳连接,该心跳的频率在1次/3秒,主要是用来检测远程服务是否处于在线状态;
a、当远程服务拒绝连接或者心跳接口返回的数据出现异常,那么该服务本系统认为是处理离线的状态,离线的服务提供者(300)将从注册表中移除;
b、在远程服务离线的情况的30秒内,该心跳连接仍然处于工作状态,心跳期间内服务一旦上线,该服务将再次被注册表组件(210)收录;
当离线心跳时间超过30秒,那么意味着健康器检查组件(220)将停止该心跳任务,只能重新通过服务提供者(300)向服务注册中心(200)注册方式来恢复提供服务的权利。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910025017.5A CN109788055B (zh) | 2019-01-11 | 2019-01-11 | 一种基于微服务架构的服务治理系统及其方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910025017.5A CN109788055B (zh) | 2019-01-11 | 2019-01-11 | 一种基于微服务架构的服务治理系统及其方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109788055A CN109788055A (zh) | 2019-05-21 |
CN109788055B true CN109788055B (zh) | 2021-07-30 |
Family
ID=66500386
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910025017.5A Active CN109788055B (zh) | 2019-01-11 | 2019-01-11 | 一种基于微服务架构的服务治理系统及其方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109788055B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112202829A (zh) * | 2019-07-08 | 2021-01-08 | 北京邮电大学 | 基于微服务的社交机器人调度系统和调度方法 |
CN110381058B (zh) * | 2019-07-18 | 2023-05-16 | 深圳前海微众银行股份有限公司 | 基于全双工通信协议WebSocket的请求传输方法及装置 |
CN110602208B (zh) * | 2019-09-12 | 2022-01-21 | 北京笔新互联网科技有限公司 | 一种分布式微服务治理系统及系统的构建方法 |
CN112749050B (zh) * | 2019-10-29 | 2023-04-07 | 中国移动通信集团浙江有限公司 | 基于微服务框架的安全断路方法、装置及计算设备 |
CN112291099B (zh) * | 2020-11-02 | 2022-07-29 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 移动环境下多模式注册中心架构切换方法 |
CN112583932B (zh) * | 2020-12-25 | 2022-12-09 | 北京明朝万达科技股份有限公司 | 业务处理方法、装置及网络架构 |
WO2022155825A1 (zh) * | 2021-01-20 | 2022-07-28 | Oppo广东移动通信有限公司 | 用于建立通信连接的方法、通信设备和网络功能实体 |
CN114157717B (zh) * | 2021-11-05 | 2023-09-29 | 福建福诺移动通信技术有限公司 | 一种微服务动态限流的系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106888129A (zh) * | 2017-04-20 | 2017-06-23 | 国家电网公司 | 一种可弹性伸缩的分布式服务管理系统及其方法 |
WO2017124796A1 (zh) * | 2016-01-21 | 2017-07-27 | 江苏蒙哥马利电梯有限公司 | 一种电梯轿厢蓄电池供电方法 |
CN108446111A (zh) * | 2018-03-26 | 2018-08-24 | 国家电网公司客户服务中心 | 一种基于Spring cloud的微服务构建方法 |
CN108647265A (zh) * | 2018-04-28 | 2018-10-12 | 新疆熙菱信息技术股份有限公司 | 基于多平台数据交互式系统 |
-
2019
- 2019-01-11 CN CN201910025017.5A patent/CN109788055B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017124796A1 (zh) * | 2016-01-21 | 2017-07-27 | 江苏蒙哥马利电梯有限公司 | 一种电梯轿厢蓄电池供电方法 |
CN106888129A (zh) * | 2017-04-20 | 2017-06-23 | 国家电网公司 | 一种可弹性伸缩的分布式服务管理系统及其方法 |
CN108446111A (zh) * | 2018-03-26 | 2018-08-24 | 国家电网公司客户服务中心 | 一种基于Spring cloud的微服务构建方法 |
CN108647265A (zh) * | 2018-04-28 | 2018-10-12 | 新疆熙菱信息技术股份有限公司 | 基于多平台数据交互式系统 |
Non-Patent Citations (1)
Title |
---|
"基于Dubbo服务治理模式的单体架构改造";侯海平;《通化师范学院学报》;20180827;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109788055A (zh) | 2019-05-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109788055B (zh) | 一种基于微服务架构的服务治理系统及其方法 | |
US7676516B2 (en) | System and method for the optimization of database access in data base networks | |
US5768587A (en) | Operating a transaction manager with a non-compliant resource manager | |
US20200322232A1 (en) | Network service management method, related apparatus, and system | |
CN109995859A (zh) | 一种调度方法、调度服务器及计算机可读存储介质 | |
WO2019001312A1 (zh) | 实现告警关联的方法、装置以及计算机可读存储介质 | |
CN113821268B (zh) | 一种与OpenStack Neutron融合的Kubernetes网络插件方法 | |
CN104219235A (zh) | 一种分布式交易请求方法及装置 | |
CN102098233B (zh) | 即时通讯软件中通讯窗口的控制方法及控制系统 | |
CN105681426B (zh) | 异构系统 | |
CN106933548A (zh) | 全局信息获取、处理及更新、方法、装置和系统 | |
US20220318071A1 (en) | Load balancing method and related device | |
CN106095483A (zh) | 服务的自动化部署方法及装置 | |
WO2024088217A1 (zh) | 私有网络的访问方法和系统 | |
CN106060125A (zh) | 一种基于数据标签的分布式实时数据传输方法 | |
CN103561060A (zh) | 一种多线程环境下的通信链接方法及中转服务器 | |
CN110069365A (zh) | 管理数据库的方法和相应的装置、计算机可读存储介质 | |
CN114036236A (zh) | 多网关集群系统 | |
CN113315754A (zh) | 容器出访防火墙智能联动方法及装置、设备、介质 | |
CN1963821A (zh) | 一种实现数据库访问的方法、系统和装置 | |
CN109257435B (zh) | 基于消息中间件的多实例多子系统应用的通信系统 | |
CN113760447A (zh) | 服务管理方法、装置、设备、存储介质及程序产品 | |
US7885292B2 (en) | Method, system, and computer program product for data exchange | |
KR100503291B1 (ko) | 실시간 트랜잭션 처리요청 메시지의 분석과 업무처리를계층구조로 구성한 트랜잭션 통합메시지 처리시스템 | |
CN115086311A (zh) | 一种基于云服务总线的企业跨系统服务的管理系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |