一种网格服务实例和配置的动态下发方法与流程

文档序号:33058981发布日期:2023-01-25 00:42阅读:30来源:国知局
一种网格服务实例和配置的动态下发方法与流程

1.本发明涉及,尤其是涉及一种网格服务实例和配置的动态下发方法。


背景技术:

2.随着微服务技术的飞速发展,在引入微服务架构并享用它带来的众多好处时,也不可避免地遇到了很多问题。这些问题大多可以归纳为微服务应用之间的通信问题,而服务网格正是针对这些问题应运而生的一个解决方案,以用于管理微服务应用程序中各个微服务之间的通信。
3.为了使微服务应用程序成功运行,每个微服务的开发团队除了需要处理每个微服务的业务逻辑,还需要为每个微服务添加众多其他与实际业务无关的逻辑,并可能还需要在集群中配置一些额外的东西,这个时候问题就出现了。需要处理众多额外的逻辑,意味着微服务的开发人员无法专心处理实际的服务逻辑,而要忙于为每个微服务添加用于安全、通信的逻辑。对于每个微服务,这大大增加了其复杂性,当微服务数量达到一定数量,为众多的微服务一一配置这些逻辑也几乎成为了不可能的任务。为此,服务网格给出的解决方案为:与其单独为每一个微服务添加众多的逻辑,更加合理的做法是将这些与实际业务逻辑无关的逻辑从微服务中分离出来,放入到它的一个代理程序中,集中处理。此外开发人员也不必将代理配置添加到微服务的部署文件中,因为服务网格有一个控制平面,它会自动在每个微服务中添加这个代理。所以现在微服务可以通过这些代理相互通信,以实现由控制平面组成的服务到服务通信,而这些代理就是服务网格。
4.服务网格目前主要是基于k8s service作为服务实例来源,配置纳管原生都是依托于k8s中的etcd,也就是不同集群分管,网格中服务注册发现是依赖于k8s完成,网格控制面直接通过k8s-apiserver获取服务实例和配置,这样的缺点是无法进行跨集群的服务发现和配置下发、无法筛选实例和配置进行下发而是全量下发。由于无法进行集中的调度下发,如果要进行多集群的服务纳管,就显得有些力不从心,在实际应用中,当所有服务实例及配置都下发到每个边车(服务网格中数据平面内部署的代理),将导致资源消耗增加,同时降低服务访问的效率。


技术实现要素:

5.本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种网格服务实例和配置的动态下发方法,能够实现集中的调配和动态下发,避免所有服务实例及配置都下发到每个边车,从而有效节省资源的消耗、提升服务访问的效率。
6.本发明的目的可以通过以下技术方案来实现:一种网格服务实例和配置的动态下发方法,包括服务实例下发过程和配置下发过程,所述服务实例下发过程包括以下步骤:
7.a1、服务边车向统一注册中心发起服务注册请求,完成服务注册;
8.a2、网格控制面从统一注册中心订阅服务实例;
9.a3、统一注册中心进行服务实例的组装分组、并下发给网格控制面;
10.a4、根据边车的cr配置,网格控制进行服务实例筛选后下发给边车;
11.所述配置下发过程包括以下步骤:
12.b1、管理面调用网格配置转换服务下发配置;
13.b2、网格配置转换服务将下发的配置存入数据库;
14.b3、网格控制面根据自身的网络区集群,监听网格配置转换服务的配置变化,并获取当前机房网络区集群的配置;
15.b4、根据边车的cr配置,网格控制面进行配置筛选后下发到边车。
16.进一步地,所述步骤a1具体是由服务边车获取当前服务所在机房、网络区、集群环境标签,之后边车发起注册、将这些标签当作元数据进行注册。
17.进一步地,所述步骤a2中网格控制面与统一注册中心之间建立grpc连接,网格控制面根据自身所处的机房、网络区、集群环境,以使用这些标签从统一注册中心订阅具有相同标签的注册信息。
18.进一步地,所述步骤a3中统一注册中心具体是根据标签进行服务实例的组装分组。
19.进一步地,所述步骤a3中,若服务需要跨集群的访问或者跨项目访问,则统一注册中心从管理面控制平台拉取服务f5信息和黑白名单配置,以筛选出其他集群的服务实例对应的f5配置、再进行下发,跨项目访问会将指定需要访问服务实例推送给服务访问方。
20.进一步地,所述步骤a3中统一注册中心执行按需实例推送实例筛选过程,包括同项目实例筛选以及白名单实例筛选。
21.进一步地,所述同项目实例筛选是指统一注册中心根据边车的项目id筛选出全部实例,再比对同项目的全部实例与边车的机房、网络区、集群,按设定的项目优先级规则筛选出实例,添加到列表中。
22.进一步地,所述白名单实例筛选是指根据边车的服务名查询白名单服务名,以及白名单服务的全部未屏蔽的实例,统一注册中心比对白名单服务的全部实例与边车的机房、网络区、集群,按设定的白名单优先级规则筛选出实例,添加到列表中。
23.进一步地,所述项目优先级规则具体为:
24.1)筛选出机房相同、网络区相同、集群相同的实例,如果实例数大于0,则直接添加到推送列表中,并中断筛选;
25.2)如果步骤1)筛选的实例数等于0,继续筛选出机房相同、网络区不同、集群匹配的实例,如果实例数大于0,则添加到实例列表a中,并中断筛选;
26.3)如果步骤2)筛选的实例数等于0,继续筛选出机房相同、网络区相同、集群不匹配的实例,如果实例数大于0,则添加到实例列表a中,并中断筛选;
27.4)如果步骤3)筛选的实例数等于0,继续筛选出机房不同、集群匹配的实例,如果实例数大于0,则添加到实例列表a中,并中断筛选;
28.5)遍历实例列表a,依次查询出每个实例所在机房、网络区、集群的f5的ip与端口,并替换掉当前实例的ip与端口,添加到推送列表中。
29.进一步地,所述白名单优先级规则具体为:
30.1)筛选出机房相同、网络区相同、集群相同的实例,如果实例数大于0,则直接添加到推送列表中,并中断筛选;
31.2)如果步骤1)筛选的实例数等于0,继续筛选出机房相同、网络区不同、集群匹配的实例,如果实例数大于0,则添加到实例列表a中,并中断筛选;
32.3)如果步骤2)筛选的实例数等于0,继续筛选出机房相同、网络区相同、集群不匹配的实例,如果实例数大于0,则添加到实例列表a中,并中断筛选;
33.4)如果步骤3)筛选的实例数等于0,继续筛选出机房不同、集群匹配的实例,如果实例数大于0,则添加到实例列表a中,并中断筛选;
34.5)遍历实例列表a,依次查询出每个实例所在机房、网络区、集群的f5的ip与端口,并替换掉当前实例的ip与端口,添加到推送列表中。
35.与现有技术相比,本发明采用统一注册中心的方式,利用统一注册中心纳管所有集群的服务实例,通过统一注册中心根据不同的服务标签进行动态下发到不同服务网格集群,配置也是集中存储在数据库中,由此能够抽象出k8s-apiserver的能力,管理面下发配置时是调用抽象出来的这个服务保存配置到数据库中,并根据特定标签下发给对应的网格控制面,从而实现服务实例和配置的动态下发。能够有效避免所有服务实例及配置都下发到每个边车,从而大大节省资源的消耗和提升服务访问的效率。
36.本发明中,服务注册由边车携带机房网络区集群等标签向统一注册中心发起注册请求完成,由此能够设置自定义的标签进行数据聚合整理,边车能够进行业务容器的探活,如果业务容器没有问题,才会进行服务注册,能够有效保证服务的可用性。
附图说明
37.图1为本发明中服务实例下发的方法流程示意图;
38.图2为本发明中配置下发的方法流程示意图;
39.图3为实施例中服务网格方案的应用组件架构示意图;
40.图4为实施例中服务实例下发的过程示意图;
41.图5为实施例中配置下发的过程示意图。
具体实施方式
42.下面结合附图和具体实施例对本发明进行详细说明。
43.实施例
44.如图1和图2所示,一种网格服务实例和配置的动态下发方法,包括服务实例下发过程和配置下发过程,其中,服务实例下发过程包括以下步骤:
45.a1、服务边车向统一注册中心发起服务注册请求,完成服务注册;
46.a2、网格控制面从统一注册中心订阅服务实例;
47.a3、统一注册中心进行服务实例的组装分组、并下发给网格控制面;
48.a4、根据边车的cr配置,网格控制进行服务实例筛选后下发给边车;
49.配置下发过程包括以下步骤:
50.b1、管理面调用网格配置转换服务下发配置;
51.b2、网格配置转换服务将下发的配置存入数据库;
52.b3、网格控制面根据自身的网络区集群,监听网格配置转换服务的配置变化,并获取当前机房网络区集群的配置;
53.b4、根据边车的cr配置,网格控制面进行配置筛选后下发到边车。
54.本实施例中,如图3所示,采用nacos注册中心作为统一的注册中心,以统一纳管所有集群的服务实例,并通过nacos根据不同的服务标签将实例动态下发到不同服务网格集群,配置则是集中存储在数据库中,再根据特定标签下发到对应的网格控制面。
55.本实施例应用上述技术方案,其中,实例下发过程如图4所示,主要包括:
56.1、服务边车获取当前服务所在机房、网络区、集群环境标签,边车发起注册并将这些标签当作元数据进行注册。
57.2、网格控制面会和统一注册中心建立grpc连接,网格控制面根据自身所处的机房网络区集群环境,并使用这些标签去注册中心订阅有相同标签的注册信息。
58.3、统一注册中心根据标签进行服务实例的组装分组,并及时下发到网格控制面。
59.4、网格控制面再根据sidecar(边车)的cr配置进行服务实例筛选下发到边车。
60.在步骤3中,如果服务需要跨集群的访问或者跨项目访问,注册中心会根据管理面的配置筛选出其他集群的服务实例对应的f5配置再进行下发,跨项目访问则会将指定需要访问服务实例推送给服务访问方。
61.在步骤3中,nacos还会执行按需实例推送实例筛选逻辑,包括同项目实例筛选和白名单实例筛选。
62.同项目实例筛选:
63.nacos根据sidecar的项目id筛选出全部实例,再比对同项目的全部实例与sidecar的机房、网络区、集群,按下列优先级筛选出实例,添加到列表中。
64.1)筛选出机房相同、网络区相同、集群相同的实例,如果实例数大于0,直接添加到推送列表中,并中断筛选。
65.2)如果步骤1)筛选的实例数等于0,继续筛选出机房相同、网络区不同、集群匹配的实例,如果实例数大于0,添加到实例列表a中,并中断筛选。
66.3)如果步骤2)筛选的实例数等于0,继续筛选出机房相同、网络区相同、集群不匹配的实例,如果实例数大于0,添加到实例列表a中,并中断筛选。
67.4)如果步骤3)筛选的实例数等于0,继续筛选出机房不同、集群匹配的实例,如果实例数大于0,添加到实例列表a中,并中断筛选。
68.遍历实例列表a依次查询出每个实例所在机房、网络区、集群的f5的ip与端口,并替换掉当前实例的ip与端口,添加到推送列表中。
69.白名单实例筛选:
70.根据sidecar的服务名查询白名单服务名,以及白名单服务的全部未屏蔽的实例,比对白名单服务的全部实例与sidecar的机房、网络区、集群,按下列优先级筛选出实例,添加到列表中。
71.1)筛选出机房相同、网络区相同、集群相同的实例,如果实例数大于0,直接添加到推送列表中,并中断筛选。
72.2)如果步骤1)筛选的实例数等于0,继续筛选出机房相同、网络区不同、集群匹配的实例,如果实例数大于0,添加到实例列表a中,并中断筛选。
73.3)如果步骤2)筛选的实例数等于0,继续筛选出机房相同、网络区相同、集群不匹配的实例,如果实例数大于0,添加到实例列表a中,并中断筛选。
74.4)如果步骤3)筛选的实例数等于0,继续筛选出机房不同、集群匹配的实例,如果实例数大于0,添加到实例列表a中,并中断筛选。
75.遍历实例列表a依次查询出每个实例所在机房、网络区、集群的f5的ip与端口,并替换掉当前实例的ip与端口,添加到推送列表中。
76.配置下发过程如图5所示,主要包括:
77.1、管理面调用nacos-apiserver下发配置。
78.2、nacos-apiserver将下发的配置存入数据库。
79.3、网格控制面根据本身的网络区集群去监听nacos-apiserver的配置变化,并获取当前机房网络区集群的配置。
80.4、网格控制面根据sidecar的cr配置进行配置筛选下发到边车。
81.综上可知,本技术方案考虑到现有网格中服务注册发现是依赖于k8s完成的,网格控制面直接通过k8s-apiserver获取服务实例和配置,这样的方式无法进行跨集群的服务发现和配置下发、无法筛选实例和配置进行下发而是全量下发。本技术方案将服务实例和配置都脱离k8s,由统一的注册中心和数据库进行托管,实例纳管到统一的注册中心以能够有条件的进行实例下发,减少资源浪费,从而有效提高系统的健壮性,服务配置统一存放在一个数据库集群中,使得配置能够进行多集群的下发。
82.本技术方案中,统一注册中心中服务实例根据机房网络区集群进行服务实例分发的逻辑,从而解决了服务实例全量下发问题,大大节省了网格控制面的内存使用。
83.网格配置通过nacos-apiserver进行存储和分发,并可以完全脱离k8s-apiserver进行配置,能够解决多个k8s集群无法进行配置统一管理的问题。
84.服务注册由边车完成(携带机房网络区集群等标签),现有技术中原生的能力是基于k8s service,不可以设置自定义的标签进行数据聚合整理,而本技术方案中,边车能够进行业务容器的探活,如果业务容器没有问题,才会进行服务注册,以此保证了服务的可用性。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1