(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 202010824722.4
(22)申请日 2020.08.17
(71)申请人 烽火通信科技股份有限公司
地址 430000 湖北省武汉市洪山区邮科院
路88号
(72)发明人 宋运俊 张涛 石志凯 
(74)专利代理机构 武汉东喻专利代理事务所
(普通合伙) 42224
代理人 王聪聪
(51)Int.Cl.
H04L  29/06(2006.01)
H04L  29/08(2006.01)
(54)发明名称
一种微服务架构
(57)摘要
本发明公开了一种微服务架构,包括控制平
面和数据平面;所述数据平面中的服务代理包括
用户态代理和内核态代理;所述用户态代理被配
置为接收控制平面发送的流量规则并通过缓存
将所述流量规则同步到内核态代理;所述内核态
代理被配置为获取上游微服务发送的数据包并
根据所述流量规则将其转发给下游微服务;本发
明使用用户态代理与内核态代理进行微服务之
间的网络流量转发与处理,大大缩短了网络处理
流程,降低微服务之间的网络延迟,将同物理机、
容器或虚拟机的网络性能提升到进程内的性能
水平。权利要求书1页  说明书6页  附图3页CN 111683109 A 2020.09.18
C N  111683109
A
1.一种微服务架构,包括控制平面和数据平面;其特征在于,所述数据平面中的服务代理包括用户态代理和内核态代理;
所述用户态代理被配置为接收控制平面发送的流量规则并通过缓存将所述流量规则同步到内核态代理;
所述内核态代理被配置为获取上游微服务发送的数据包并根据所述流量规则将其转发给下游微服务。
2.如权利要求1所述的微服务架构,其特征在于,当所述上游微服务与下游微服务位于同一物理主机、容器或虚拟机时,内核态代理从上游微服务创建的内核态套接字中获取数据包并将其直接转发给下游微服务的内核态套接字,由下游微服务的内核态套接字将数据包同步到下游微服务的用户态。
3.如权利要求1所述的微服务架构,其特征在于,当所述上游微服务与下游微服务位于不同的物理主机、容器或虚拟机时,内核态代理从上游微服务创建的内核态套接字中获取数据包并通过网络通信将其发送到下游微服务的内核态套接字,由下游微服务的内核态套接字将数据包同步到下游微服务的用户态。
4.如权利要求1所述的微服务架构,其特征在于,所述用户态代理还用于接收控制平面发送的屏蔽规则并通过缓存将所述屏蔽规则导入内核态代理;
当内核态代理接收到的数据包的转发对象为异常服务时,内核态代理根据屏蔽规则直接返回预置结果,而不将数据包转发给所述异常服务。
5.如权利要求1所述的微服务架构,其特征在于,所述用户态代理还用于接收控制平面发送的流量均衡规则并通过缓存将所述流量均衡规则导入内核态代理;
所述内核态代理通过统计提供相同服务的各个微服务的请求处理数计算负载分布,根据所述负载分布和
微服务项目技术架构流量均衡规则将流量均匀分配给每个微服务进行处理。
6.如权利要求1所述的微服务架构,其特征在于,所述用户态代理还用于接收控制平面发送的流量路由规则并通过缓存将所述流量路由规则导入内核态代理;所述流量路由规则中包含数据包与作为所述数据包的接收对象的一个或多个下游微服务之间的映射关系;
所述内核态代理根据所述映射关系将上游微服务发送的数据包发送到对应的下游微服务进行处理。
7.如权利要求1所述的微服务架构,其特征在于,还包括缓存单元,所述缓存单元由用户态代理或内核态代理创建,用于存储控制平面发送的流量规则。
8.如权利要求1所述的微服务架构,其特征在于,所述用户态代理和内核态代理基于linux内核提供的 eBPF实现,内核态代理工作在 linux操作系统的内核态。
9.如权利要求1所述的微服务架构,其特征在于,所述数据平面中还包括多个微服务,所述微服务可以是容器化的微服务或者独立进程的微服务。
10.如权利要求9所述的微服务架构,其特征在于,所述控制平面被配置为执行微服务的自动发现和注册,以及根据各微服务的服务状态和流量访问规则生成供内核态代理使用的流量规则。
权 利 要 求 书1/1页CN 111683109 A
一种微服务架构
技术领域
[0001]本发明属于微服务技术领域,更具体地,涉及一种高性能的微服务架构。
背景技术
[0002]微服务是一种软件架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,各个微服务之间是松耦合的,服务与服务间采用轻量级的通信机制互相沟通(通常是基于HTTP协议的RESTful API)。微服务框架是支持微服务运行管理的软件平台,微服务应用是基于微服务模式,可被独立部署、开发的业务应用单元,每个微服务应用代表着一个小的业务能力。
[0003]对于微服务化的应用接入微服务平台,一般有侵入式和非侵入式两类方式。侵入式是指基于微服务框架提供的SDK开发微服务,微服务本身依赖于微服务框架的开发环境。非侵入式是利用网络层服务代理的方式,在微服务间提供事务流量转发,非侵入式微服务架构可以用于遗留系统的无改造接入,也可接入异构技术和框架开发的微服务。
[0004]服务网格是一个基础设施层,功能在于处理服务间通信,职责是负责实现请求的可靠传递。在实
践中,服务网格通常实现为轻量级网络代理,通常与应用程序部署在一起,但是对应用程序透明。服务网格一般分为控制平面和数据平面,控制平面进行规则控制,数据平面处理流量转发等。上游服务指的是微服务中暴露接口供其他服务调用的服务,下游服务指的是微服务中调用其他服务的服务。
[0005]图1是目前服务网格框架的网络流量转发流程,如图1所示,当前服务网格框架中,代理与微服务之间采用本地回环口进行通信,网络流量从一个微服务发送到代理经过一个完整的网络7层结构,使用iptables进行控制和转发,代理将网络流量发送到下游微服务同样需要经过7层网络结构,两个微服务之间的通信网络冗长,该网络过程会产生10毫秒甚至更久的延时,对于一些工业生产环境或者其他对时延要求比较高的环境,冗长的网络流程对网络性能造成了影响。
发明内容
[0006]针对现有技术的至少一个缺陷或改进需求,本发明提供了一种微服务架构,其目的在于解决目前微服务架构中网络处理流程冗长,导致微服务之间的网络延迟长,影响网络性能的问题。
[0007]为实现上述目的,按照本发明的一个方面,提供了一种微服务架构,包括控制平面和数据平面;所述数据平面中的服务代理包括用户态代理和内核态代理;
所述用户态代理被配置为接收控制平面发送的流量规则并通过缓存将所述流量规则同步到内核态代理;
所述内核态代理被配置为根据所述流量规则将上游微服务发送的数据包转发给下游微服务;
服务代理在检测到微服务之间的通信事件时从用户态代理切换到内核态代理以执行上游微服务与下游微服务之间的流量转发。
[0008]优选的,上述微服务架构,当所述上游微服务与下游微服务位于同一物理主机、容器或虚拟机时,内核态代理从上游微服务创建的内核态套接字中获取数据包并将其直接转发给下游微服务的内核态套接字,由下游微服务的内核态套接字将数据包同步到下游微服务的用户态。
[0009]优选的,上述微服务架构,当所述上游微服务与下游微服务位于不同的物理主机、容器或虚拟机时,内核态代理从上游微服务创建的内核态套接字中获取数据包并通过网络通信将其发送到下游微服务的内核态套接字,由下游微服务的内核态套接字将数据包同步到下游微服务的用户态。
[0010]优选的,上述微服务架构,所述用户态代理还用于接收控制平面发送的屏蔽规则并通过缓存将所述屏蔽规则导入内核态代理;
当内核态代理接收到的数据包的转发对象为异常服务时,内核态代理根据屏蔽规则直接返回预置结果,而不将数据包转发给所述异常服务。
[0011]优选的,上述微服务架构,所述用户态代理还用于接收控制平面发送的流量均衡规则并通过缓存
将所述流量均衡规则导入内核态代理;
所述内核态代理通过统计提供相同服务的各个微服务的请求处理数计算负载分布,根据所述负载分布和流量均衡规则将流量均匀分配给每个微服务进行处理。
[0012]优选的,上述微服务架构,所述用户态代理还用于接收控制平面发送的流量路由规则并通过缓存将所述流量路由规则导入内核态代理;所述流量路由规则中包含数据包与作为所述数据包的接收对象的一个或多个下游微服务之间的映射关系;
所述内核态代理根据所述映射关系将上游微服务发送的数据包发送到对应的下游微服务进行处理。
[0013]优选的,上述微服务架构还包括缓存单元,所述缓存单元由用户态代理或内核态代理创建,用于存储控制平面发送的流量规则。
[0014]优选的,上述微服务架构,所述用户态代理和内核态代理基于linux内核提供的 eBPF实现,内核态代理工作在 linux操作系统的内核态。
[0015]优选的,上述微服务架构还包括多个微服务,所述微服务可以是容器化的微服务或者独立进程的微服务。
[0016]优选的,上述微服务架构,所述控制平面被配置为执行微服务的自动发现和注册,以及根据各微服务的服务状态和流量访问规则生成供内核态代理使用的流量规则。[0017]总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
本发明提供的微服务架构,抛弃传统的iptables,直接通过用户态代理与内核态代理进行微服务之间的网络流量转发与处理,大大缩短了网络处理流程,降低微服务之间的网络延迟,将同物理机、容器或虚拟机的网络性能提升到进程内的性能水平。
附图说明
[0018]图1是目前服务网格框架的网络流量转发流程的示意图;
图2是本发明实施例提供的微服务架构的结构示意图;
图3是本发明实施例提供的服务代理的结构组成示意图;
图4是本发明实施例提供的同物理主机的微服务间的流量处理示意图;
图5是本发明实施例提供的跨物理主机的微服务间的流量处理示意图;
图6是本发明实施例提供的另一种微服务架构的结构示意图。
具体实施方式
[0019]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0020]图2是本实施例提供的一种微服务架构的结构示意图,参见图2,该微服务架构包括控制平面和数据平面;
其中,控制平面主要执行微服务的自动发现和注册,当新的微服务运行的时候,控制平面可以自动或者手动发现新的微服务,并根据各微服务的服务状态和流量访问规则生成供数据平面中的服务代理使用的流量规则。
[0021]数据平面包括服务代理和多个微服务,微服务可以是容器化的微服务,即以容器运行的微服务,或者独立进程的微服务,即以独立进程运行的微服务。
[0022]服务代理是连接控制平面和数据平面的桥梁,控制平面与服务代理之间通过网络连接进行交互。对于一台物理主机、容器或虚拟机,仅需要部署一个服务代理,即可管理同一物理主机、容器或虚拟机
上所有的微服务。如图2所示,每个虚线框代表一台物理主机、容器或虚拟机上运行的数据平面,同一个物理主机、容器或虚拟机上仅部署一个服务代理。[0023]本方案中,服务代理包括用户态代理和内核态代理;用户态代理分别与控制平面、内核态代理进行交互,其被配置为接收控制平面发送的流量规则并通过缓存将该流量规则同步到内核态代理;内核态代理被配置为获取上游微服务发送的数据包并根据流量规则将其转发给下游微服务。
[0024]图3是本实施例提供的服务代理的结构组成示意图,参见图3,用户态代理工作在内核态,内核态代理工作在内核态,首先将内核态代理的代码逻辑从用户态通过验证编译后加载到系统内核态执行,形成内核态代理;由内核态代理或用户态代理创建map缓存,用户态代理根据控制平面获取到的数据平面各微服务的状态和流量访问规则生成具体的内核态代理使用的流量规则,存入到map缓存,内核态代理在流量处理中读取map缓存中的流量规则,然后根据该流量规则对数据包进行处理。
[0025]本申请抛弃传统的iptables,通过用户态代理与内核态代理执行微服务之间的网络流量转发与处理,大大缩短了网络处理流程,将同物理机、容器或虚拟机的网络性能提升到进程内的性能水平。
[0026]因为内核态代理工作在系统内核态,容器运行隔离是基于 cgroup,是在相同的操作系统之下。因此,对于容器化的微服务和独立进程的微服务,数据平面拥有相同的结构。[0027]图4是本实施例提供的同物理主机的微服务间的流量处理示意图;其中,虚线框内为本方案提供的流量处理流程,虚线框外是传统的微服务框架提供的流量处理流程;如图4

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。