一种基于反向代理的微服务治理方法技术

技术编号:25947298 阅读:33 留言:0更新日期:2020-10-17 03:39
本发明专利技术涉及一种基于反向代理的微服务治理方法,其中,包括:熔断处理和限流处理;限流处理步骤包括:微服务a和b向配置管理器请求配置信息;当微服务b请求访问服务A时,先是执行器proxy‑b获取此请求,通过映射关系了解到服务A的执行器地址为ip‑a,由执行器proxy‑b将请求转发至执行器proxy‑a;执行器proxy‑a获取请求,对于A服务准许请求限制,通过执行器proxy‑a内部维护的请求计数器判断是否超限额,如果没有超出限额,将请求转发至微服务a进行处理,并再次转发处理后结果数据至执行器proxy‑b,如果超出限额,直接向执行器proxy‑b返回拒绝服务的结果;执行器proxy‑b获取到结果后,转发至微服务实例b,完成此次服务请求调用。

【技术实现步骤摘要】
一种基于反向代理的微服务治理方法
本专利技术涉及微服务架构技术,特别涉及一种基于反向代理的微服务治理方法。
技术介绍
过去几年间,架构领域最火的方向非微服务莫属,伴随着业务规模的变大,微服务的好处显而易见,例如它本身所具备的可扩展性、易维护性、故障和资源隔离性等诸多特性使得产品的生产研发效率大大提高,同时,基于微服务架构设计,研发人员可以构建出具备超高友好度的系统,让产品的持续集成与发布变得更为便捷。微服务带来很多好处的同时也引入了很多问题。在微服务模型里,一个应用可以由数百个服务组成,每个服务可能有数千个实例,每个实例的状态可能持续的发生变化,此时,服务间的通信不仅异常复杂,而且都是运行时的行为,管理好服务间通信对于保证端到端的性能与可靠性来说无疑成为重中之重。目前,微服务框架之间的通讯大多采用SDK方案,但该方式短板也非常明显,例如对业务有侵入性、无法做到SDK升级对业务透明等。服务间通讯层属于共用与业务无关的功能负责服务之间的网络调用、限流、熔断和监控,不应该与应用程序的应用逻辑代码耦合。这就需要将服务间通讯层独立开来,既能满足服务间通讯的需求,又能捕获到底层环境的动态变化并作出适当的调整,避免业务出现单点故障,同时也可以让开发者只关注自身业务,将应用微服务化后带来的诸多问题以不侵入业务代码的方式提供给开发者。微服务治理当前的模式为如果微服务之间要进行通信,那么程序需要自己处理各种通信的细节,这就包括服务发现、限流、熔断、超时重试和监控等功能。这些功能通常被实现为与某种编程语言相关的第三方依赖,例如SpringCloudNetflix中的Hystrix和Ribbon等,这也导致了这样的第三方依赖无法在不同的编程语言之间共享。编程时引入第三方依赖的方式是个很自然的选择,原因就是它简单明了。在这种架构中,每个微服务应用程序包中都有实现服务通讯功能的库。如果一个团队仅使用一种语言开发并且还负责一个应用的运行,那么使用库引用就很容易,这种方式自然也是很合适的,但是要实现多语言支持,就必须用不同语言去重复实现多次,挑战在于实现的复杂性和一遍又一遍去实现同样概念的工作量。微服务的核心思想中有一条就是每个微服务都可以自由的选择使用何种语言、何种架构来实现业务功能只需要对外暴露接口即可,所以对于由众多微服务形成的大型应用来说引入第三方依赖包的形式来实现微服务治理显然是不合适的。
技术实现思路
本专利技术的目的在于提供一种基于反向代理的微服务治理方法,用于解决上述现有技术的问题。本专利技术一种基于反向代理的微服务治理方法,其中,包括:熔断处理和限流处理;限流处理步骤包括:微服务a和b向配置管理器请求配置信息;当微服务b请求访问服务A时,先是执行器proxy-b获取此请求,通过映射关系了解到服务A的执行器地址为ip-a,由执行器proxy-b将请求转发至执行器proxy-a;执行器proxy-a获取请求,对于A服务准许请求限制,通过执行器proxy-a内部维护的请求计数器判断是否超限额,如果没有超出限额,将请求转发至微服务a进行处理,并再次转发处理后结果数据至执行器proxy-b,如果超出限额,直接向执行器proxy-b返回拒绝服务的结果;执行器proxy-b获取到结果后,转发至微服务实例b,完成此次服务请求调用;熔断处理步骤包括:微服务实例a和b向配置管理器请求配置信息;当微服务实例b请求访问服务A时,先是执行器proxy-b获取此请求,通过映射关系获得服务A的执行器地址为ip-a,然后执行器proxy-b将请求转发至执行器proxy-a;执行器proxy-a获取请求,先是通过熔断策略了解A服务已经拒绝服务,所以proxy-a直接向proxy-b返回拒绝服务的结果;执行器proxy-b获取到结果后,将此结果转发至微服务实例b,完成此次服务请求调用。根据本专利技术的基于反向代理的微服务治理方法的一实施例,其中,熔断处理步骤还包括:启动微服务实例a;启动执行器proxy-a,通过ip表规则将微服务实例a的所有流量都转发到执行器proxy-a;启动微服务实例b;启动执行器proxy-b,通过ip表规则将微服务实例b的所有流量都转发到执行器proxy-b。根据本专利技术的基于反向代理的微服务治理方法的一实施例,其中,熔断处理步骤还包括:启动配置管理器manager,配置服务名与执行器地址的映射,配置服务的A熔断策略。根据本专利技术的基于反向代理的微服务治理方法的一实施例,其中,限流处理步骤包括:启动微服务a;启动执行器proxy-a,通过执行器proxy-a进行ip转发;启动微服务b;启动执行器proxy-b,将微服务b的出入所有流量都转发到执行器proxy-b;启动配置管理器manager,配置服务名与各执行器地址的映射,配置服务的A限流策略。根据本专利技术的基于反向代理的微服务治理方法的一实施例,其中,A服务10秒内准许1000次请。根据本专利技术的基于反向代理的微服务治理方法的一实施例,其中,执行器proxy-a和proxy-b根据执行器连接间隔,等待触发向配置管理器manager获取新的配置。根据本专利技术的基于反向代理的微服务治理方法的一实施例,其中,执行器proxy-a和proxy-b是根据从配置管理器获取的配置信息进行拦截微服务实例的出入流量进行转发或是丢弃请求。根据本专利技术的基于反向代理的微服务治理方法的一实施例,其中,配置管理器是一个web应用,对外提供http接口以实现添加、删除、修改和查询映射以及限流和熔断配置信息。本专利技术提出一种基于反向代理的微服务治理方法,通过单独进程的反向代理,为微服务提供限流、熔断等功能。与引用第三方依赖的模式相反,它并不关心应用程序的语言也不需要微服务编写特征明显的代码,就可以为许多不同的微服务提供服务。传统意义上反向代理是代理服务器的一种,反向代理服务器根据客户端的请求,从其关联的一组或多组后端服务器上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的地址,而不知道在反向代理服务器后面的服务器的存在。反向代理服务器相当于截获的客户端的请求,由其决定向后面服务器转发,而在这个决定的过程中可以根据适当的策略进行控制向后端转发请求的过程,为本方法实现微服务治理提供了技术条件。附图说明图1为新增配置示意图;图2所示为配置管理示意图。具体实施方式为使本专利技术的目的、内容、和优点更加清楚,下面结合附图和实施例,对本专利技术的具体实施方式作进一步详细描述。图1为新增配置示意图,图2所示为配置管理示意图,如图1以及图2所示,基于反向代理的微服务治理系统包括配置管理器和执行器两部分,配置管理器主要负责维护执行器运行时所需的配置信息,而执行器负责代理微服务的网络通信,并通过与配置管理器通信获取配置来决定微服务间的通信。配置管理器维护的配置包括:服务名与执行器地址的映射、服务的限流策略、服务的熔断策略和执行器连接间隔等。执行器与微服务实例一同执行,并部署在同一个节点中,通过iptables的规本文档来自技高网
...

【技术保护点】
1.一种基于反向代理的微服务治理方法,其特征在于,包括:熔断处理和限流处理;/n限流处理步骤包括:/n微服务a和b向配置管理器请求配置信息;/n当微服务b请求访问服务A时,先是执行器proxy-b获取此请求,通过映射关系了解到服务A的执行器地址为ip-a,由执行器proxy-b将请求转发至执行器proxy-a;/n执行器proxy-a获取请求,对于A服务准许请求限制,通过执行器proxy-a内部维护的请求计数器判断是否超限额,如果没有超出限额,将请求转发至微服务a进行处理,并再次转发处理后结果数据至执行器proxy-b,如果超出限额,直接向执行器proxy-b返回拒绝服务的结果;/n执行器proxy-b获取到结果后,转发至微服务实例b,完成此次服务请求调用;/n熔断处理步骤包括:/n微服务实例a和b向配置管理器请求配置信息;/n当微服务实例b请求访问服务A时,先是执行器proxy-b获取此请求,通过映射关系获得服务A的执行器地址为ip-a,然后执行器proxy-b将请求转发至执行器proxy-a;/n执行器proxy-a获取请求,先是通过熔断策略了解A服务已经拒绝服务,所以proxy-a直接向proxy-b返回拒绝服务的结果;执行器proxy-b获取到结果后,将此结果转发至微服务实例b,完成此次服务请求调用。/n...

【技术特征摘要】
1.一种基于反向代理的微服务治理方法,其特征在于,包括:熔断处理和限流处理;
限流处理步骤包括:
微服务a和b向配置管理器请求配置信息;
当微服务b请求访问服务A时,先是执行器proxy-b获取此请求,通过映射关系了解到服务A的执行器地址为ip-a,由执行器proxy-b将请求转发至执行器proxy-a;
执行器proxy-a获取请求,对于A服务准许请求限制,通过执行器proxy-a内部维护的请求计数器判断是否超限额,如果没有超出限额,将请求转发至微服务a进行处理,并再次转发处理后结果数据至执行器proxy-b,如果超出限额,直接向执行器proxy-b返回拒绝服务的结果;
执行器proxy-b获取到结果后,转发至微服务实例b,完成此次服务请求调用;
熔断处理步骤包括:
微服务实例a和b向配置管理器请求配置信息;
当微服务实例b请求访问服务A时,先是执行器proxy-b获取此请求,通过映射关系获得服务A的执行器地址为ip-a,然后执行器proxy-b将请求转发至执行器proxy-a;
执行器proxy-a获取请求,先是通过熔断策略了解A服务已经拒绝服务,所以proxy-a直接向proxy-b返回拒绝服务的结果;执行器proxy-b获取到结果后,将此结果转发至微服务实例b,完成此次服务请求调用。


2.如权利要求1所述的基于反向代理的微服务治理方法,其特征在于,熔断处理步骤还包括:
启动微服务实例a;
启动执行器proxy-a,通过ip表规则将微服务实例a的所有流量都转发到执行器proxy-a;
启动微服务实...

【专利技术属性】
技术研发人员:孙宇张岩王通
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1