System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于服务网格实现请求级负载均衡的方法技术_技高网

一种基于服务网格实现请求级负载均衡的方法技术

技术编号:41009694 阅读:7 留言:0更新日期:2024-04-18 21:45
本发明专利技术公开了一种基于服务网格实现请求级负载均衡的方法,其特征在于,通过在服务网格控制平面部署自研的Envoy配置服务模块,该模块负责辅助运维人员生成各种通信协议的负载均衡规则配置并解析、校验为服务网格的EnvoyFilter配置。服务网格的控制平面解析EnvoyFilter配置并下发,Envoy组件根据私有rpc协议的编解码接口实现私有rpc协议的解析从而让Envoy组件识别私有rpc协议的请求并依照配置进行负载均衡。相较于现有的普遍方案,隐藏了Envoy的配置细节,节约了大量EnvoyFilter的手动维护工作,降低了和服务网格控制平面的耦合,有效降低运维人员的编码负担和配置复杂度。同时Envoy配置服务模块提供的校验功能可以提前检查配置的有效性,将配置问题提前暴露,及早解决,降低排查问题的难度。

【技术实现步骤摘要】

本专利技术涉及服务网格和云原生微服务领域,特别是一种基于服务网格实现请求级负载均衡的方法


技术介绍

1、随着云计算和微服务架构的兴起,服务网格技术已经成为管理和监控分布式应用程序的重要工具。服务网格通常由一组轻量级代理组成,这些代理被部署在应用程序容器中,负责处理微服务之间的通信。服务网格提供了丰富的功能,包括流量控制、监控、安全性和负载均衡等。相比于使用sdk实现的微服务,服务网格对业务没有侵入性,将流量管理、安全认证和监控运维等功能从应用中剥离出来,更加统一得进行管理,实现了非业务公共能力的解耦。

2、现有的服务网格只支持http、https、grpc网络l7层应用协议的负载均衡和路由能力,对于大多数公司内部使用的私有rpc协议无法做到请求级粒度的负载均衡。这就导致对于这些rpc请求,在tcp长连接建立的时候选择的后端服务,后续的请求将一直调用该服务,直至tcp长连接被切断。这在tcp长连接场景下,服务调用方大量且频繁的请求只会集中到少量的服务提供方,导致这些服务提供方负载很高,且无法通过增加服务提供方数量的方式来缓解,进一步导致云原生的自动扩缩容特性失效,严重将导致服务提供方因请求数量太多而奔溃。

3、基于以上情况,现在普遍的解决方案是采用例如istio服务网格的envoyfilter实现。所述envoyfilter是istio提供的一种灵活强大的配置机制,使用envoyfilter可以为服务网格的控制平面生成的缺省envoy配置打补丁,通过增加、修改和删除缺省envoy配置中的部分内容,以达到实现自定义的路由解析规则。再通过实现envoy中的对私有rpc协议的编解码接口,实现数据平面envoy解析私有rpc协议的能力。这个方法可以对envoy配置进行非常灵活的定制,达到对私有rpc协议进行路由管理的目的,但是也带来了一些难以处理的问题:envoyfilter直接将envoy的底层实现细节暴露给了运维人员,运维人员需要具备一定的envoy基础知识才能完成具体的配置细节,这导致了原本简单的配置工作变成了复杂的编码工作,难以交付运维人员。同时当服务网格中管理的服务较多时,运维手动创建大量的envoyfilter是极易容易出错的,当发生问题时也难以排查。

4、因此,需要一种让运维人员能通过一种面向用户的yaml数据格式来实现上述的这些配置,通俗易懂、易编写,屏蔽大量的底层实现细节、并且易于管理的方式支持私有rpc协议的实现请求级负载均衡的方法。


技术实现思路

1、本专利技术所要解决的技术问题是克服现有技术的不足,一种基于服务网格实现请求级负载均衡的方法。

2、为解决上述技术问题,本专利技术提供一种基于服务网格的实现私有rpc协议请求级负载均衡的方法,通过在服务网格控制平面部署envoy配置服务模块,所述envoy配置服务模块用于生成各种通信协议的负载均衡规则配置,并将负载均衡规则配置解析、校验为envoyfilter配置;服务网格控制平面解析envoyfilter配置并下发到数据平面的envoy组件,envoy组件根据私有rpc协议的编解码接口实现私有rpc协议的解析,用以让envoy组件识别私有rpc协议的请求并依照配置进行负载均衡;所述envoy组件是一个开源的用于处理微服务架构中的网络通信的高性能代理服务器,具体包括如下步骤:

3、步骤1:编写私有rpc协议的负载均衡配置信息并应用到服务网格控制平面所在集群,所述负载均衡配置信息是yaml数据格式,和服务网格的路由配置格式一致;

4、步骤2:在已经部署了服务网格控制平面的k8s集群上部署自研的envoy配置服务模块,所述envoy配置服务模块收集并识别出步骤1所述的负载均衡配置信息,在解析并校验为服务网格控制平面可以识别的envoyfilter配置后,在服务网格控制平面集群应用所述的envoyfilter配置,如果校验不通过,在负载均衡配置信息的描述信息字段提示语法错误和更改建议;

5、步骤3:服务网格控制平面识别到步骤2所述的envoyfilter配置后,通过xds协议分发到服务网格数据平面的envoy组件并应用;

6、步骤4:envoy组件接收到私有rpc协议的流量之后,调用协议解码器,将二进制信息解码为协议内容信息;

7、步骤5:envoy组件根据步骤3中所述被分发到的envoyfilter配置,判断私有rpc协议的请求是否匹配,如果匹配,则根据负载均衡配置信息转发到对应的upstream。

8、所述步骤1中,所述负载均衡配置信息是通过kubernetes crd创建的自定义资源对象,所述自定义资源对象用以定义负载均衡配置信息作用的目标,所述目标包括流量协议类型、请求头信息的匹配条件、路由的upstream限制、端口号和入站出站类型。

9、所述步骤2中,所述envoy配置服务模块由go语言编写。部署在服务网格控制平面的同一集群,包括一个定时器任务、一个配置信息解析器、一个envoyfilter配置生成器、一个配置信息辅助生成器和一个配置信息校验器;所述定时器任务用于同步步骤1中所述的负载均衡配置信息,并调用配置信息校验器校验负载均衡配置信息的语义结构合法性;所述配置信息校验器预置系统已支持的规则语法语义,并应用经过大量正反例配置信息及相应修改建议训练而成的ai模型;所述正反例配置信息包括纠错后采纳和不被采纳的信息;所述配置信息辅助生成器用于采集前端提交的配置请求,调用llm生成用于答复运维人员的配置信息修改意见;配置信息解析器解析出配置信息作用的目标,再以所述目标的参数调用envoyfilter配置生成器生成符合envoy组件规范且可识别的envoyfilter配置信息,并应用到服务网格控制平面所在集群。

10、所述步骤4中的协议解码器是基于envoy filter实现的自定义filter,用于实现请求信息的解码,通过实现所述协议解码器的decode方法,将网络的二进制信息解码为程序可理解的协议内容信息,所述协议内容信息用于完成请求头匹配。

11、所述步骤5中,具体步骤包括:

12、步骤5-1:判断私有rpc协议的请求调用的端口号是否与负载均衡配置信息中申明的调用端口号一致,如是,则进入步骤5-2,否则直接放行该请求,不予处理;

13、步骤5-2:判断私有rpc协议的请求调用的host是否与负载均衡配置信息中申明的调用host一致,如是,则进入步骤5-3,否则直接放行该请求,不予处理;

14、步骤5-3:判断步骤4中的协议内容信息中是否包含负载均衡配置信息中申明的属性key-value信息,其中value判断匹配的方式包括是否包含、前缀是否一致、后缀是否一致和正则表达式是否一致,如是,则进入步骤5-3,否则直接放行该请求,不予处理;

15、步骤5-4:根据负载均衡配置信息中申明的被调用host、被调用subset和对应的权重比例,采用随机方式按范围分配至被调本文档来自技高网...

【技术保护点】

1.一种基于服务网格实现请求级负载均衡的方法,其特征在于,在服务网格控制平面部署Envoy配置服务模块,所述Envoy配置服务模块用于生成各种通信协议的负载均衡规则配置,并将负载均衡规则配置解析、校验为EnvoyFilter配置;服务网格控制平面解析EnvoyFilter配置并下发到数据平面的Envoy组件,Envoy组件根据私有rpc协议的编解码接口实现私有rpc协议的解析,用以让Envoy组件识别私有rpc协议的请求并依照配置进行负载均衡;所述Envoy组件是一个开源的用于处理微服务架构中的网络通信的高性能代理服务器,具体包括如下步骤:

2.如权利要求1所述的一种基于服务网格实现请求级负载均衡的方法,其特征在于,所述步骤1中,所述负载均衡配置信息是通过kubernetes CRD创建的自定义资源对象,所述自定义资源对象用以定义负载均衡配置信息作用的目标,所述目标包括流量协议类型、请求头信息的匹配条件、路由的upstream限制、端口号和入站出站类型。

3.如权利要求2所述的一种基于服务网格实现请求级负载均衡的方法,其特征在于,所述步骤2中,所述Envoy配置服务模块由GO语言编写,部署在服务网格控制平面的同一集群,包括一个定时器任务、一个配置信息解析器、一个EnvoyFilter配置生成器、一个配置信息辅助生成器和一个配置信息校验器;所述定时器任务用于同步步骤1中所述的负载均衡配置信息,并调用配置信息校验器校验负载均衡配置信息的语义结构合法性所述配置信息校验器预置系统已支持的规则语法语义,并应用经过正反例配置信息及相应修改建议训练而成的AI模型;所述正反例配置信息包括纠错后采纳和不被采纳的信息;所述配置信息辅助生成器用于采集前端提交的配置请求,调用LLM生成用于答复运维人员的配置信息修改意见;配置信息解析器解析出配置信息作用的目标,再以所述目标的参数调用EnvoyFilter配置生成器生成符合Envoy组件规范且可识别的EnvoyFilter配置信息,并应用到服务网格控制平面所在集群。

4.如权利要求3所述的一种基于服务网格实现请求级负载均衡的方法,其特征在于,所述步骤4中的协议解码器是基于Envoy Filter实现的自定义filter,用于实现请求信息的解码,通过实现所述协议解码器的decode方法,将网络的二进制信息解码为程序可理解的协议内容信息,所述协议内容信息用于完成请求头匹配。

5.如权利要求4所述的一种基于服务网格实现请求级负载均衡的方法,其特征在于,所述步骤5中,具体步骤包括:

...

【技术特征摘要】

1.一种基于服务网格实现请求级负载均衡的方法,其特征在于,在服务网格控制平面部署envoy配置服务模块,所述envoy配置服务模块用于生成各种通信协议的负载均衡规则配置,并将负载均衡规则配置解析、校验为envoyfilter配置;服务网格控制平面解析envoyfilter配置并下发到数据平面的envoy组件,envoy组件根据私有rpc协议的编解码接口实现私有rpc协议的解析,用以让envoy组件识别私有rpc协议的请求并依照配置进行负载均衡;所述envoy组件是一个开源的用于处理微服务架构中的网络通信的高性能代理服务器,具体包括如下步骤:

2.如权利要求1所述的一种基于服务网格实现请求级负载均衡的方法,其特征在于,所述步骤1中,所述负载均衡配置信息是通过kubernetes crd创建的自定义资源对象,所述自定义资源对象用以定义负载均衡配置信息作用的目标,所述目标包括流量协议类型、请求头信息的匹配条件、路由的upstream限制、端口号和入站出站类型。

3.如权利要求2所述的一种基于服务网格实现请求级负载均衡的方法,其特征在于,所述步骤2中,所述envoy配置服务模块由go语言编写,部署在服务网格控制平面的同一集群,包括一个定时器任务、一个配置信息解...

【专利技术属性】
技术研发人员:朱鹏鹏
申请(专利权)人:焦点科技股份有限公司
类型:发明
国别省市:

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

1