CN114650293B - 一种流量分流的方法、装置、终端和计算机存储介质 - Google Patents
一种流量分流的方法、装置、终端和计算机存储介质 Download PDFInfo
- Publication number
- CN114650293B CN114650293B CN202011503401.0A CN202011503401A CN114650293B CN 114650293 B CN114650293 B CN 114650293B CN 202011503401 A CN202011503401 A CN 202011503401A CN 114650293 B CN114650293 B CN 114650293B
- Authority
- CN
- China
- Prior art keywords
- user request
- user
- kubernetes
- end service
- database
- 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
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000003860 storage Methods 0.000 title claims abstract description 19
- 238000009826 distribution Methods 0.000 claims abstract description 69
- 238000012545 processing Methods 0.000 claims abstract description 14
- 235000014510 cooky Nutrition 0.000 claims description 11
- 238000004891 communication Methods 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000009877 rendering Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 5
- 238000013515 script Methods 0.000 description 5
- 238000002372 labelling Methods 0.000 description 3
- 230000005291 magnetic effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000005294 ferromagnetic effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明实施例公开了一种流量分流的方法,该方法应用于Kubernetes的Ingress组件中,该Kubernetes的数据库中存储有一组配置信息,该配置信息是针对至少两个后端服务的配置信息,包括:接收用户请求,根据预设的分流参数,采用分流参数对应的分流规则,对用户请求进行处理,从Kubernetes的数据库中确定用户请求的后端服务,将用户请求的流量分流至用户请求的后端服务中。本发明实施例还同时公开了一种流量分流装置、终端和计算机存储介质,降低了复杂度,提高了稳定性。
Description
技术领域
本发明涉及Kubernetes云平台中Ingress的流量分流技术,尤其涉及一种流量分流的方法、装置、终端和计算机存储介质。
背景技术
为了满足WEB应用的快速部署,自动维护和自动扩容的需求,从而产生了Kubernetes平台。但随之而来的问题是如何实现Kubernetes平台上的灰度发布功能。
现有Kubernetes平台上Ingress的灰度方案,利用原生Ingress中的annotation:nginx.ingress.kubernetes.io/canary来实现,现有的方案通过创建两个Ingress配置,每个Ingress对应一个后端服务Service,并在Ingress配置中填写对应的后端服务以做区分,具体地,Ingress控制器可以采取以下3种方式对接收到的用户流量进行分流以实现灰度发布:
基于Header:nginx.ingress.kubernetes.io/canary-by-header
基于Cookie:nginx.ingress.kubernetes.io/canary-by-cookie
基于Weight:nginx.ingress.kubernetes.io/canary-weight
然而,针对上述灰度发布来说,用户流量仅仅能够分流到两个Ingress配置分别对应的后端服务上,这样使得流量分流受到限制,并不利于灰度发布;由此可以看出,现有的Kubernetes云平台中Ingress在实现流量分流时存在局限性。
发明内容
有鉴于此,本发明实施例提供一种流量分流的方法、装置、终端和计算机存储介质,以解决现有技术中存在的Kubernetes云平台中Ingress在实现流量分流时具有局限性的技术问题。
本发明的技术方案是这样实现的:
第一方面,本发明实施例提供了一种流量分流的方法,所述方法应用于Kubernetes的Ingress组件中,所述Kubernetes的数据库中存储有一组配置信息,所述配置信息是针对至少两个后端服务的配置信息,包括:
接收用户请求;
根据预设的分流参数,采用所述分流参数对应的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务;
将所述用户请求的流量分流至所述用户请求的后端服务中。
在上述方法中,所述Ingress组件包括Ingress控制器和负载均衡器,相应地,
所述Ingress控制器接收用户请求;
所述负载均衡器根据预设的分流参数,采用所述分流参数对应的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务;
所述负载均衡器将所述用户请求的流量分流至所述用户请求的后端服务中。
在上述方法中,所述负载均衡器根据预设的分流参数,采用所述分流参数对应的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务,包括:
所述负载均衡器根据所述分流参数,对所述用户请求进行解析,得到所述用户请求的分流参数的值;
所述负载均衡器根据所述分流参数的值,采用所述分流规则,从所述Kubernetes的数据库中确定所述用户请求的后端服务。
在上述方法中,在所述Ingress控制器接收用户请求之前,所述方法还包括:
所述Ingress控制器监听并从所述Kubernetes的数据库中获取所述配置信息;
所述Ingress控制器根据所述配置信息动态渲染出所述Ingress组件的配置文件;
所述负载均衡器动态加载所述配置文件,并从所述配置文件中读取所述预设的分流参数和所述分流规则。
在上述方法中,所述分流参数的种类包括以下任意一项:
Header,Cookie,Weight和IP地址。
在上述方法中,当所述分流参数为IP地址时,所述均衡负载器根据所述分流参数,对所述用户请求进行解析,得到所述用户请求的分流参数的值,包括:
所述负载均衡器对所述用户请求进行解析,得到所述用户请求的客户端的IP地址;
所述负载均衡器根据所述分流参数的值,采用所述分流规则,从所述Kubernetes的数据库中确定所述用户请求的后端服务,包括:
所述负载均衡器确定所述用户请求的客户端的IP地址所属的预设网段;
所述负载均衡器从所述Kubernetes的数据库中确定所述预设网段对应的后端服务;
所述负载均衡器将所述预设网段对应的后端服务,确定为所述用户请求的后端服务。
在上述方法中,所述将所述用户请求的流量分流至所述用户请求的后端服务中,包括:
将所述用户请求的流量分流至所述用户请求的后端服务的Pod中;
其中,所述后端服务中的Pod是通过annotation字段进行标记的。
第二方面,本发明实施例提供了一种流量分流的装置,所述装置设置于Kubernetes的Ingress组件中,所述Kubernetes的数据库中存储有一组配置信息,所述配置信息是针对至少两个后端服务的配置信息,包括:
接收模块,用于接收用户请求;
确定模块,用于根据预设的分流参数,采用所述分流参数对应的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务;
分流模块,用于将所述用户请求的流量分流至所述用户请求的后端服务中。
在上述装置中,所述Ingress组件包括Ingress控制器和负载均衡器,相应地,
所述Ingress控制器的接收模块,用于接收用户请求;
所述负载均衡器的确定模块,用于的根据预设的分流参数,采用所述分流参数对应的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务;
所述负载均衡器的分流模块,用于将所述用户请求的流量分流至所述用户请求的后端服务中。
在上述装置中,确定模块根据预设的分流参数,采用所述分流参数的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务中,包括:
根据所述分流参数,对所述用户请求进行解析,得到所述用户请求的分流参数的值;
根据所述分流参数的值,采用所述分流规则,从所述Kubernetes的数据库中确定所述用户请求的后端服务。
在上述装置中,所述Ingress控制器还用于:
在所述Ingress控制器接收用户请求之前,监听并从所述Kubernetes的数据库中获取所述配置信息;
根据所述配置信息动态渲染出所述Ingress组件的配置文件;
所述负载均衡器还用于:
加载所述配置文件,并从所述配置文件中读取所述预设的分流参数和所述分流规则。
在上述装置中,所述分流参数的种类包括以下任意一项:
Header,Cookie,Weight和IP地址。
在上述装置中,当所述分流参数为IP地址时,确定模块根据所述分流参数,对所述用户请求进行解析,得到所述用户请求的分流参数的值中,包括:
对所述用户请求进行解析,得到所述用户请求的客户端的IP地址;
确定模块根据所述分流参数的值,采用所述分流规则,从所述Kubernetes的数据库中确定所述用户请求的后端服务中,包括:
确定所述用户请求的客户端的IP地址所属的预设网段;
从所述Kubernetes的数据库中确定所述预设网段对应的后端服务;
将所述预设网段对应的后端服务,确定为所述用户请求的后端服务。
在上述装置中,分流模块,具体用于:
将所述用户请求的流量分流至所述用户请求的后端服务的Pod中;
其中,所述后端服务中的Pod是通过annotation字段进行标记的。
第三方面,本发明实施例还提供了一种终端,所述终端包括:处理器以及存储有所述处理器可执行指令的存储介质,所述存储介质通过通信总线依赖所述处理器执行操作,当所述指令被所述处理器执行时,执行上述一个或多个实施例所述流量分流的方法。
本发明实施例提供了一种计算机存储介质,存储有可执行指令,当所述可执行指令被一个或多个处理器执行的时候,所述处理器执行上述一个或多个实施例所述流量分流的方法。
本发明实施例所提供的一种流量分流的方法、装置、终端和计算机存储介质,该方法应用于一Kubernetes的Ingress组件中,该Kubernetes的数据库中存储有一组配置信息,该配置信息是针对至少两个后端服务的配置信息,包括:接收用户请求,根据预设的分流参数,采用分流参数对应的分流规则,对用户请求进行处理,从Kubernetes的数据库中确定用户请求的后端服务,将用户请求的流量分流至用户请求的后端服务中;也就是说,在本发明实施例中,通过预先在Kubernetes的数据库中存储有一个Ingress配置对应的至少两个后端服务,使得Ingress组件可以根据分流参数,并采用分流规则,将用户请求的流量可以分流至至少两个后端服务,并且,所有的后端服务只与一个Ingress配置相对应,这样,在进行流量分流时,简化了流量分流时所采用的架构,通过监听一个Ingress配置就可以实现流量分流,降低了复杂度,提高了稳定性。
附图说明
图1为本发明实施例中的一种可选的流量分流的方法的流程示意图;
图2为Ingress组件进行灰度发布的流程示意图;
图3为本发明实施例提供的一种可选的流量分流的方法的实例的流程示意图;
图4为本发明实施例中的一种可选的流量分流的装置的结构示意图;
图5为本发明实施例提供的一种可选的终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例一
本发明实施例提供一种流量分流的方法,该方法应用于Kubernetes的Ingress组件中,该Kubernetes的数据库中存储有一组配置信息,该配置信息是针对至少两个后端服务器的配置信息,图1为本发明实施例中的一种可选的流量分流的方法的流程示意图,如图1所示,该方法可以包括:
S101:接收用户请求;
目前,Kubernetes平台的Ingress灰度发布方案通常采用基于Header,或者Cookie,或者Weight的方式进行发布,并且,Kubernetes的数据库中存储有多组配置信息,每组配置信息为一个后端服务器的配置信息,图2为Ingress组件进行灰度发布的流程示意图,如图2所示,首先,在Kubernetes的数据库中设置有两组配置信息,分别为Ingress配置-01和Ingress配置-02,其中,Ingress配置-01对应服务(Service01)Deployment01,Deployment01包括Pod-V1,Ingress配置-02对应服务(Service02)Deployment02,Deployment02包括Pod-V2,然后,Ingress控制器监听Ingress配置并渲染出配置文件nginx.conf,其中,配置文件nginx.conf中包含有lua脚本,Ingress控制器接收到用户请求(相当于用于流量),lua脚本根据预设的分流参数,例如Cookie,对用户请求进行解析,得到该用户请求的Cookie的值,负载均衡器Nginx根据解析出的Cookie的值采用分流规则,例如,Cookie的值所落入的预设区间,将所落入的预设区间对应的后端确定为用户请求的后端服务,并将用户请求的流量分流至用户请求的后端服务中,例如Pod-V1中。
由此可以看出,现有Ingress灰度发布方案,大多通过lua脚本编写逻辑判断,调试运维成本高,且后期支持不完善;其中,提供灰度发布的维度不够完善,只提供基于三种维度,支持的维度较少,另外,根据Kubernetes平台判别后端服务需创建两组配置信息,浪费资源,lua脚本与原生Nginx配置相比,存在性能瓶颈,稳定性方面未能保证。
为了简化架构提高稳定性,本发明实施例提供一种流量分流的方法,先接收到用户请求,其中,该用户请求可以为多个,通过该方法可以实现对用户请求的流量进行分流,分流至不同的后端服务中。
S102:根据预设的分流参数,采用分流参数对应的分流规则,对用户请求进行处理,从Kubernetes的数据库中确定用户请求的后端服务;
S103:将用户请求的流量分流至用户请求的后端服务中。
具体来说,在接收到用户请求之后,先确定出预设的分流参数,其中,分流参数的种类包括以下任意一项:Header,Cookie,Weight和IP地址;也就是说,预设的分流参数可以为以上任何一种,例如为Header或者Cookie时,先确定出用户请求Header的值或者Cookie的值,然后可以根据该值所落入的区间对应的后端服务器确定用户请求的后端服务,最后将用户请求分流至确定出的后端服务中,针对Weight,假设后端服务为5个,将20%的用户请求分流至后端服务01,20%的用户请求分流至后端服务02,20%的用户请求分流至后端服务03,20%的用户请求分流至后端服务04,20%的用户请求分流至后端服务05;针对IP地址,需要去解析出用户请求的IP地址,在采用IP地址对应的分流规则确定用户请求的后端服务,将用户请求分流至确定出的后端服务中。
为了简化流量分流的架构,在一种可选的实施例中,该Ingress组件包括Ingress控制器和负载均衡器,相应地,
Ingress控制器接收用户请求;
负载均衡器根据预设的分流参数,采用分流参数对应的分流规则,对用户请求进行处理,从Kubernetes的数据库中确定用户请求的后端服务;
负载均衡器将用户请求的流量分流至用户请求的后端服务中。
具体来说,在本发明实施例中,Ingress控制器接收用户请求,然后,负载均衡器确定用户请求的后端服务,并将用户请求的流量分流至用户请求的后端服务中。
进一步地,为了确定出用户请求的后端服务,在一种可选的实施例中,负载均衡器根据预设的分流参数,采用分流参数的分流规则,对用户请求进行处理,从Kubernetes的数据库中确定用户请求的后端服务,包括:
负载均衡器根据分流参数,对用户请求进行解析,得到用户请求的分流参数的值;
负载均衡器根据分流参数的值,采用分流规则,从Kubernetes的数据库中确定用户请求的后端服务。
其中,在Ingress组合件中预先存储有分流参数,负载均衡器根据分流参数对用户请求进行解析,例如,分流参数为Header,对用户请求进行解析,解析得到用户请求的Header的值,负载均衡根据Header的值,确定出该值对应的后端服务,并将该值对应的后端服务确定为用户请求的后端服务。
为了确定出分流参数和分流规则,在一种可选的实施例中,在Ingress控制器接收用户请求之前,上述方法还包括:
Ingress控制器监听并从Kubernetes的数据库中获取配置信息;
Ingress控制器根据配置信息动态渲染出Ingress组件的配置文件;
负载均衡器动态加载配置文件,并从配置文件中读取预设的分流参数和分流规则。
具体来说,在Ingress控制器接收用户请求之前,Ingress控制器监听并从Kubernetes的数据库中获取配置信息,然后根据配置信息动态渲染出Ingress组件的配置文件,这里,动态渲染除了现有的渲染功能之外,还可以主动查询Kubernetes信息,例如主动查询Pod的信息,然后渲染出配置文件,使得负载均衡器动态加载配置文件,负载均衡器能够从配置文件中读取分流参数和分流规则,这样,负载均衡器在分流的过程中,可以获取分流参数,并对用户请求进行解析,并确定出用户请求的后端服务,与现有的lua脚本解析用户请求相比,避免引入第三方脚本,使用负载均衡器解析用户请求,降低了流量分流的复杂度。
为了实现采用IP地址这一维度进行用户请求的分流,在一种可选的实施例中,当分流参数为IP地址时,均衡负载器根据分流参数,对用户请求进行解析,得到用户请求的分流参数的值,包括:
负载均衡器对用户请求进行解析,得到用户请求的客户端的IP地址;
负载均衡器根据分流参数的值,采用分流规则,从Kubernetes的数据库中确定用户请求的后端服务,包括:
负载均衡器确定用户请求的客户端的IP地址所属的预设网段;
负载均衡器从Kubernetes的数据库中确定预设网段对应的后端服务;
负载均衡器将预设网段对应的后端服务,确定为用户请求的后端服务。
这里,负载均衡器对接收到的用户请求进行解析,这样,可以得到发出用户请求的客户端的IP地址;然后负载均衡器中存储有多个预设网段,负载均衡器确定所得到的用户请求的IP地址所属的预设网段,在负载均衡器中还设置有每个预设网络对应的后端服务,所以,在确定出IP地址所属网段之后,就可以确定出所属网段对应的后端服务,并将对应的后端服务确定为用户请求的后端服务。
为了实现用户请求的分流,在一种可选的实施例中,将用户请求的流量分流至用户请求的后端服务中,包括:
将用户请求的流量分流至用户请求的后端服务的Pod中;
具体来说,在后端服务中,采用在Pod上打标签来区分后端服务,其中,后端服务中的Pod是通过annotation字段进行标记的;也就是说,不再需要依赖不同的Ingress的配置信息来判别后端服务,而是通过在多个后端服务的Pod上打标签来进行区分,操作更简单,并且节省了Kubernetes的资源。
下面举实例来对上述一个或多个实施例中的流量分流的方法进行说明。
图3为本发明实施例提供的一种可选的流量分流的方法的实例的流程示意图,如图3所示,上述流量分流的方法可以包括:
在Kubernetes的数据库中设置有一组配置信息,即为图3中的Ingress配置,其中,Ingress配置对应服务(Service)Deployment01,Deployment02和Deployment03,Deployment01包括Pod-V1,Deployment02包括Pod-V2,Deployment03包括Pod-V3;在本实例中,针对不同的后端服务,修改其对应的Kubernetes平台中Deployment资源YAML配置中的Annotation字段,进而影响到Pod的Annotation字段,起到打标签的作用。例如打上版本信息的标签V1,V2,V3。
修改Ingress控制器的源码使其监听Kubernetes中自定义的Ingress配置资源,该配置中定义了自定义的一些规则,用于描述根据哪些特征进行流量分流;例如:Header,Cookie,Weight和IP等维度,同时根据Ingress配置中用户配置的Pod版本信息,获取各版本Pod的IP。
Ingress控制器监听Ingress配置,根据其中的配置动态渲染出对应规则的配置文件(nginx.conf);例如:用户配置了根据IP分流到不同版本的规则,Ingress控制器就会渲染出静态的nginx.conf支持该规则,该nginx.conf规则会先后解析X-Forward-For,X-Real-IP,$remote_addr等字段判断客户端IP,并将源IP为指定IP的流量转到特定后端。
与现有lua脚本解析用户请求的方案则不同,其只有一套nginx.conf,嵌套的lua脚本对所有情况进行判断分流,其目前不支持基于IP的分流方案。此外,现有方案只能通过2不同的配置信息进行2个版本后端服务的区分,而本实例是通过annotation打标签进行区分,支持多个不同版本的后端服务。
具体来说,Ingress控制器接收用户请求(例如http请求)的流量,负载均衡器Nginx动态加载nginx.conf,并生效;Ingress组件中的负载均衡器Nginx根据之前配置好的规则,对流量进行分流,可以根据http请求中特定(或自定义)Header的值,Cookie的值或者客户端的IP地址或者直接根据权重Weight去做流量分流,转发到特定的后端服务上。
通过上述实例,不需要对Ingress组件中包含的Nginx进行改造升级,利用Kubernetes平台资源监听的先天优势,以及Nginx的固有语法规则,简化流量分流的具体实现,降低复杂度,提高了稳定性。
本发明实施例所提供的一种流量分流的方法,该方法应用于一Kubernetes的Ingress组件中,该Kubernetes的数据库中存储有一组配置信息,该配置信息是针对至少两个后端服务的配置信息,包括:接收用户请求,根据预设的分流参数,采用分流参数对应的分流规则,对用户请求进行处理,从Kubernetes的数据库中确定用户请求的后端服务,将用户请求的流量分流至用户请求的后端服务中;也就是说,在本发明实施例中,通过预先在Kubernetes的数据库中存储有一个Ingress配置对应的至少两个后端服务,使得Ingress组件可以根据分流参数,并采用分流规则,将用户请求的流量可以分流至至少两个后端服务,并且,所有的后端服务只与一个Ingress配置相对应,这样,在进行流量分流时,简化了流量分流时所采用的架构,通过监听一个Ingress配置就可以实现流量分流,降低了复杂度,提高了稳定性。
实施例二
基于同一发明构思,本发明实施例提供一种流量分流的装置,图4为本发明实施例中的一种可选的流量分流的装置的结构示意图,如图4所示,该流量分流的装置,包括:
接收模块41,用于接收用户请求;
确定模块42,用于根据预设的分流参数,采用分流参数对应的分流规则,对用户请求进行处理,从Kubernetes的数据库中确定用户请求的后端服务;
分流模块43,用于将用户请求的流量分流至用户请求的后端服务中。
在一种可选的实施例中,Ingress组件包括Ingress控制器和负载均衡器,相应地,
Ingress控制器的接收模块41,用于接收用户请求;
负载均衡器的确定模块42,用于根据预设的分流参数,采用分流参数对应的分流规则,对用户请求进行处理,从Kubernetes的数据库中确定用户请求的后端服务;
负载均衡器的分流模块43,用于将用户请求的流量分流至用户请求的后端服务中。
在一种可选的实施例中,确定模块42,具体用于:
根据分流参数,对用户请求进行解析,得到用户请求的分流参数的值;
根据分流参数的值,采用分流规则,从Kubernetes的数据库中确定用户请求的后端服务。
在一种可选的实施例中,Ingress控制器还用于:
在Ingress控制器的确定模块42接收用户请求之前,监听并从Kubernetes的数据库中获取配置信息;
根据配置信息动态渲染出Ingress组件的配置文件;
负载均衡器还用于:动态加载配置文件,并从配置文件中读取预设的分流参数和分流规则。
在一种可选的实施例中,分流参数的种类包括以下任意一项:
Header,Cookie,Weight和IP地址。
在一种可选的实施例中,当分流参数为IP地址时,确定模块42根据分流参数,对用户请求进行解析,得到用户请求的分流参数的值中,包括:
对用户请求进行解析,得到用户请求的客户端的IP地址;
确定模块42根据分流参数的值,采用分流规则,从Kubernetes的数据库中确定用户请求的后端服务中,包括:
确定用户请求的客户端的IP地址所属的预设网段;
从Kubernetes的数据库中确定预设网段对应的后端服务;
将预设网段对应的后端服务,确定为用户请求的后端服务。
在一种可选的实施例中,分流模块43具体用于:
将用户请求的流量分流至用户请求的后端服务的Pod中;
其中,后端服务中的Pod是通过annotation字段进行标记的。
在实际应用中,上述接收模块41,确定模块42和分流模块43可由位于终端上的处理器实现,具体为中央处理器(CPU,Central Processing Unit)、微处理器(MPU,Microprocessor Unit)、数字信号处理器(DSP,Digital Signal Processing)或现场可编程门阵列(FPGA,Field Programmable Gate Array)等实现。
图5为本发明实施例提供的一种可选的终端的结构示意图,如图5所示,本发明实施例提供了一种终端500,包括:
处理器51以及存储有所述处理器51可执行指令的存储介质52,所述存储介质52通过通信总线53依赖所述处理器51执行操作,当所述指令被所述处理器51执行时,执行上述实施例一所述的流量分流的方法。
需要说明的是,实际应用时,终端中的各个组件通过通信总线53耦合在一起。可理解,通信总线53用于实现这些组件之间的连接通信。通信总线53除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图5中将各种总线都标为通信总线53。
本发明实施例提供了一种计算机存储介质,存储有可执行指令,当所述可执行指令被一个或多个处理器执行的时候,所述处理器执行实施例一所述的流量分流的方法。
其中,计算机可读存储介质可以是磁性随机存取存储器(ferromagnetic randomaccess memory,FRAM)、只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,EEPROM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (8)
1.一种流量分流的方法,其特征在于,所述方法应用于Kubernetes的Ingress组件中,所述Kubernetes的数据库中存储有一个Ingress配置,一个Ingress配置是针对至少两个后端服务的配置信息,所述至少两个后端服务只与一个Ingress配置相对应,包括:
接收用户请求;
根据预设的分流参数,采用所述分流参数对应的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务;
将所述用户请求的流量分流至所述用户请求的后端服务中;
所述Ingress组件包括Ingress控制器和负载均衡器,相应地,
所述Ingress控制器接收用户请求;
所述负载均衡器根据预设的分流参数,采用所述分流参数对应的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务;
所述负载均衡器将所述用户请求的流量分流至所述用户请求的后端服务中;其中,
在所述Ingress控制器接收用户请求之前,所述方法还包括:
所述Ingress控制器监听并从所述Kubernetes的数据库中获取所述配置信息;
所述Ingress控制器根据所述配置信息动态渲染出所述Ingress组件的配置文件;
所述负载均衡器动态加载所述配置文件,并从所述配置文件中读取所述预设的分流参数和所述分流规则。
2.根据权利要求1所述的方法,其特征在于,所述负载均衡器根据预设的分流参数,采用所述分流参数对应的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务,包括:
所述负载均衡器根据所述分流参数,对所述用户请求进行解析,得到所述用户请求的分流参数的值;
所述负载均衡器根据所述分流参数的值,采用所述分流规则,从所述Kubernetes的数据库中确定所述用户请求的后端服务。
3.根据权利要求1所述的方法,其特征在于,所述分流参数的种类包括以下任意一项:
Header,Cookie,Weight和IP地址。
4.根据权利要求3所述的方法,其特征在于,当所述分流参数为IP地址时,所述负载均衡器根据所述分流参数,对所述用户请求进行解析,得到所述用户请求的分流参数的值,包括:
所述负载均衡器对所述用户请求进行解析,得到所述用户请求的客户端的IP地址;
所述负载均衡器根据所述分流参数的值,采用所述分流规则,从所述Kubernetes的数据库中确定所述用户请求的后端服务,包括:
所述负载均衡器确定所述用户请求的客户端的IP地址所属的预设网段;
所述负载均衡器从所述Kubernetes的数据库中确定所述预设网段对应的后端服务;
所述负载均衡器将所述预设网段对应的后端服务,确定为所述用户请求的后端服务。
5.根据权利要求1所述的方法,其特征在于,所述将所述用户请求的流量分流至所述用户请求的后端服务中,包括:
将所述用户请求的流量分流至所述用户请求的后端服务的Pod中;
其中,所述后端服务中的Pod是通过annotation字段进行标记的。
6.一种流量分流的装置,其特征在于,所述装置设置于Kubernetes的Ingress组件中,所述Kubernetes的数据库中存储有一个Ingress配置,一个Ingress配置是针对至少两个后端服务的配置信息,所述至少两个后端服务只与一个Ingress配置相对应,包括:
接收模块,用于接收用户请求;
确定模块,用于根据预设的分流参数,采用所述分流参数对应的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务;
分流模块,用于将所述用户请求的流量分流至所述用户请求的后端服务中;其中,
所述Ingress组件包括Ingress控制器和负载均衡器,相应地,
Ingress控制器的接收模块,用于接收用户请求;
负载均衡器的确定模块,用于根据预设的分流参数,采用所述分流参数对应的分流规则,对所述用户请求进行处理,从所述Kubernetes的数据库中确定所述用户请求的后端服务;
负载均衡器的分流模块,用于将所述用户请求的流量分流至所述用户请求的后端服务中;
Ingress控制器,还用于在Ingress控制器的确定模块接收用户请求之前,监听并从Kubernetes的数据库中获取配置信息;根据配置信息动态渲染出Ingress组件的配置文件;
负载均衡器,还用于动态加载配置文件,并从配置文件中读取预设的分流参数和分流规则。
7.一种终端,其特征在于,所述终端中安装有Kubernetes的Ingress组件,所述Kubernetes的数据库中存储有一个Ingress配置对应的至少两个后端服务,包括:
处理器以及存储有所述处理器可执行指令的存储介质,所述存储介质通过通信总线依赖所述处理器执行操作,当所述指令被所述处理器执行时,执行上述的权利要求1至5任一项所述的流量分流的方法。
8.一种计算机存储介质,其特征在于,存储有可执行指令,当所述可执行指令被一个或多个处理器执行的时候,所述处理器执行所述的权利要求1至5任一项所述的流量分流的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011503401.0A CN114650293B (zh) | 2020-12-17 | 2020-12-17 | 一种流量分流的方法、装置、终端和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011503401.0A CN114650293B (zh) | 2020-12-17 | 2020-12-17 | 一种流量分流的方法、装置、终端和计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114650293A CN114650293A (zh) | 2022-06-21 |
CN114650293B true CN114650293B (zh) | 2024-02-23 |
Family
ID=81991628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011503401.0A Active CN114650293B (zh) | 2020-12-17 | 2020-12-17 | 一种流量分流的方法、装置、终端和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114650293B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095743A (zh) * | 2011-10-28 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种灰度发布的处理方法及系统 |
CN106657248A (zh) * | 2016-11-01 | 2017-05-10 | 山东大学 | 一种基于Docker容器的网络负载均衡系统及其搭建方法、工作方法 |
CN108549580A (zh) * | 2018-03-30 | 2018-09-18 | 平安科技(深圳)有限公司 | 自动部署Kubernetes从节点的方法及终端设备 |
CN109992273A (zh) * | 2019-01-03 | 2019-07-09 | 蔚来汽车有限公司 | 一种灰度发布方法以及灰度发布系统 |
CN110874227A (zh) * | 2018-08-29 | 2020-03-10 | 京东数字科技控股有限公司 | 实现于api网关的灰度发布的分流方法、系统和电子设备 |
CN110912734A (zh) * | 2019-10-31 | 2020-03-24 | 北京浪潮数据技术有限公司 | 云管理平台实现容器应用多维度灰度发布方法及装置 |
CN111427625A (zh) * | 2020-03-23 | 2020-07-17 | 中国—东盟信息港股份有限公司 | 一种基于动态路由构建Kubernetes容器云外部负载均衡器的方法 |
CN111796858A (zh) * | 2020-07-07 | 2020-10-20 | 金蝶软件(中国)有限公司 | Kubernetes集群内部应用程序访问检测的方法、系统及相关设备 |
CN111831269A (zh) * | 2020-07-21 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 一种应用开发系统、运行方法、设备及存储介质 |
CN111857974A (zh) * | 2020-07-30 | 2020-10-30 | 江苏方天电力技术有限公司 | 一种基于负载均衡器的服务访问方法及装置 |
CN112000348A (zh) * | 2020-07-28 | 2020-11-27 | 金蝶医疗软件科技有限公司 | 服务灰度发布的控制方法、装置、计算机设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090259736A1 (en) * | 2008-04-15 | 2009-10-15 | Juniper Networks, Inc. | Label-based target host configuration for a server load balancer |
JP2011248683A (ja) * | 2010-05-27 | 2011-12-08 | Canon Inc | クラウドコンピューティングシステム、サーバーコンピュータ、デバイス接続方法及びプログラム |
US11178217B2 (en) * | 2017-01-09 | 2021-11-16 | International Business Machines Corporation | DNS-based in-packet service version tagging |
US10606851B1 (en) * | 2018-09-10 | 2020-03-31 | Palantir Technologies Inc. | Intelligent compute request scoring and routing |
-
2020
- 2020-12-17 CN CN202011503401.0A patent/CN114650293B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103095743A (zh) * | 2011-10-28 | 2013-05-08 | 阿里巴巴集团控股有限公司 | 一种灰度发布的处理方法及系统 |
CN106657248A (zh) * | 2016-11-01 | 2017-05-10 | 山东大学 | 一种基于Docker容器的网络负载均衡系统及其搭建方法、工作方法 |
CN108549580A (zh) * | 2018-03-30 | 2018-09-18 | 平安科技(深圳)有限公司 | 自动部署Kubernetes从节点的方法及终端设备 |
CN110874227A (zh) * | 2018-08-29 | 2020-03-10 | 京东数字科技控股有限公司 | 实现于api网关的灰度发布的分流方法、系统和电子设备 |
CN109992273A (zh) * | 2019-01-03 | 2019-07-09 | 蔚来汽车有限公司 | 一种灰度发布方法以及灰度发布系统 |
CN110912734A (zh) * | 2019-10-31 | 2020-03-24 | 北京浪潮数据技术有限公司 | 云管理平台实现容器应用多维度灰度发布方法及装置 |
CN111427625A (zh) * | 2020-03-23 | 2020-07-17 | 中国—东盟信息港股份有限公司 | 一种基于动态路由构建Kubernetes容器云外部负载均衡器的方法 |
CN111796858A (zh) * | 2020-07-07 | 2020-10-20 | 金蝶软件(中国)有限公司 | Kubernetes集群内部应用程序访问检测的方法、系统及相关设备 |
CN111831269A (zh) * | 2020-07-21 | 2020-10-27 | 腾讯科技(深圳)有限公司 | 一种应用开发系统、运行方法、设备及存储介质 |
CN112000348A (zh) * | 2020-07-28 | 2020-11-27 | 金蝶医疗软件科技有限公司 | 服务灰度发布的控制方法、装置、计算机设备 |
CN111857974A (zh) * | 2020-07-30 | 2020-10-30 | 江苏方天电力技术有限公司 | 一种基于负载均衡器的服务访问方法及装置 |
Non-Patent Citations (1)
Title |
---|
大数据中心负载均衡技术研究;郎为民;姚晋芳;赵毅丰;;电信快报(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114650293A (zh) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108632374B (zh) | 软件灰度发布方法及装置 | |
CN111083225B (zh) | 在物联网平台中的数据处理方法、装置及物联网平台 | |
US10104169B1 (en) | Optimizing a load balancer configuration | |
CN108063714B (zh) | 一种网络请求的处理方法及装置 | |
CN111913738B (zh) | 访问请求的处理方法、装置、计算设备和介质 | |
CN110120970B (zh) | 基于车联网的数据处理方法、装置及网关系统 | |
CN111026982A (zh) | 智能合约处理方法、计算机设备及存储介质 | |
CN107105013B (zh) | 文件的处理方法、服务器、终端和系统 | |
CN111970359B (zh) | 基于Node.js服务器的前端无服务架构系统及建立方法 | |
CN110417903A (zh) | 一种基于云计算的信息处理方法和系统 | |
CN102957624A (zh) | 内容路由方法和装置 | |
CN111866099A (zh) | 镜像文件的下载方法、装置、系统、设备及存储介质 | |
CN107203464B (zh) | 业务问题的定位方法以及装置 | |
CN112751897A (zh) | 负载均衡方法、装置、介质及设备 | |
EP3338409B1 (fr) | Procédé de gestion dynamique d'un service réseau dans un réseau de communication | |
KR101033813B1 (ko) | 클라우드 컴퓨팅 네트워크 시스템 및 그것의 파일 분산 방법 | |
CN109257229A (zh) | 一种主备切换方法及装置 | |
CN114650293B (zh) | 一种流量分流的方法、装置、终端和计算机存储介质 | |
CN110012111A (zh) | 一种数据服务集群系统及数据处理方法 | |
CN113360413A (zh) | 一种代码测试方法及装置 | |
CN114465919B (zh) | 一种网络服务测试方法、系统、电子设备及存储介质 | |
CN114938396A (zh) | 服务调用请求的路由方法、创建服务的方法及装置 | |
CN113766020A (zh) | 面向卫星导航接收机设备的远程控制系统及其控制方法 | |
CN112769960A (zh) | 一种基于Nginx服务器的主动流量控制方法及系统 | |
CN112631577A (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 |