配置的下发方法、装置、计算机设备和存储介质与流程

文档序号:31836822发布日期:2022-10-18 21:34阅读:49来源:国知局
配置的下发方法、装置、计算机设备和存储介质与流程

1.本技术涉及通信技术领域,尤其涉及一种配置的下发方法、装置、计算机设备和存储介质。


背景技术:

2.在现有的负载产品应用过程中需要做到严格的配置强一致性和配置完整性。即,数据面生效的配置和最原始用户下发在控制面的配置必须保持一致。且所有配置引用的外部配置都必须存在,不得被删除。
3.为了实现配置强一致,控制面的api层面需要对配置进行查验,由于查验复杂,导致难以做到分布式并行下发,且当某一个关键配置下发出错时,其它配置都会受到关联影响甚至下发失败。
4.另外,现有技术中通过配置实时查找可以不需要强制保证配置完整性,处理业务时实时通过名字或其它机制查找对应配置,一定程度上解除了配置强绑定关系,但是在高速业务请求时,查找存在额外的性能损耗和开销。


技术实现要素:

5.为了解决现有技术中对于配置下发需要做到配置强一致性和配置完整性导致配置下发复杂,容易下发失败的技术问题。本技术提供了一种配置的下发方法、装置、计算机设备和存储介质,其主要目的在于解除配置下发的局限性和复杂性,实现配置的零耦合下发。
6.为实现上述目的,本技术提供了一种配置的下发方法,应用于数据面,该方法包括:
7.获取并解析控制面下发的每条第一配置的配置信息,从第一配置的配置信息中获取与第一配置具有关联关系的第二配置的配置路径,其中,第一配置的配置信息包括对应的第一配置的配置路径和配置数据;
8.为不存在资源占位的第一配置和第二配置分别创建资源占位,其中,同一个配置的配置路径与对应创建的资源占位具有第一实体关系;
9.从配置数据中提取出不为空的配置内容,将配置内容存储为对应的第一配置的实体化数据,或,根据配置内容更新对应的第一配置的历史实体化数据,其中,第一配置的资源占位、第二配置的资源占位、第一配置的实体化数据之间具有第二实体关系,第一配置的资源占位和第一配置的实体化数据之间具有第三实体关系。
10.此外,为实现上述目的,本技术还提供了一种配置的下发装置,该装置包括:
11.解析模块,用于获取并解析控制面下发的每条第一配置的配置信息,从第一配置的配置信息中获取与第一配置具有关联关系的第二配置的配置路径,其中,第一配置的配置信息包括对应的第一配置的配置路径和配置数据;
12.创建模块,用于为不存在资源占位的第一配置和第二配置分别创建资源占位,分
别对获取到的配置路径、对应创建的资源占位建立第一实体关系;
13.存储更新模块,用于从配置数据中提取出不为空的配置内容,将配置内容存储为对应的第一配置的实体化数据,或,根据配置内容更新对应的第一配置的历史实体化数据,其中,第一配置的资源占位、第二配置的资源占位、第一配置的实体化数据之间具有第二实体关系,第一配置的资源占位和第一配置的实体化数据之间具有第三实体关系。
14.为实现上述目的,本技术还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令,处理器执行计算机可读指令时执行如前面任一项的配置的下发方法的步骤。
15.为实现上述目的,本技术还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机可读指令,计算机可读指令被处理器执行时,使得处理器执行如前面任一项的配置的下发方法的步骤。
16.本技术提出的配置的下发方法、装置、计算机设备和存储介质,通过为第一配置中具有关联关系的第二配置创建资源占位,可以允许具有关联关系的两个配置中其中一个配置不存在也不影响另外一个配置的正常下发,解除了配置之间的强耦合性和强关联性;即使具有关联关系的配置存在下发错误,也不会影响其他关联配置的下发,解除了配置之间必须保证配置完整性和一致性的局限,实现了配置的分布式下发。本技术在数据面实现了一种零耦合的配置下发方式,提高了设备配置的下发效率和准确性,降低维护成本。
附图说明
17.图1为本技术一实施例中配置的下发方法的应用场景图;
18.图2为本技术一实施例中配置的下发方法的流程示意图;
19.图3为本技术一实施例中实体关系的示意图;
20.图4为本技术一实施例中配置的下发装置的结构框图;
21.图5为本技术一实施例中计算机设备的内部结构框图。
22.本技术目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
23.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
24.图1为本技术一实施例中配置的下发方法的应用场景图;参考图1,配置人员通过配置下发平台调用控制面的相关api接口,以向控制面下发至少一条配置的原始配置信息。aip接口自动对这些原始配置信息作权限校验和配置校验,并将校验通过的原始配置信息转存储。原始配置信息以某种形式存储在控制面对应的存储单元上。例如,将原始配置信息作为配置信息以xml文件格式或者以sql数据库记录格式等不局限于此的格式存储在磁盘上。
25.控制面可以将发生变化的配置的配置信息主动推送给数据面(转发面),也可以是
数据面监听到控制面存储的配置信息发生变化后,向控制面请求发生变化的配置的配置信息。
26.数据面接收到发生变化的配置信息后修改自身配置,以改变对外提供的服务或业务的具体行为。
27.外部客户端可以向数据面请求服务,数据面提供的服务可以是web页面服务,api网关服务等不局限于此。
28.数据面根据配置人员下发的配置及客户端的请求内容,向客户端给出指定应答或响应。
29.图2为本技术一实施例中配置的下发方法的流程示意图。参考图2,以该方法应用于图1中的数据面为例进行说明。该配置的下发方法包括以下步骤s100-s300。
30.s100:获取并解析控制面下发的每条第一配置的配置信息,从第一配置的配置信息中获取与第一配置具有关联关系的第二配置的配置路径,其中,第一配置的配置信息包括对应的第一配置的配置路径和配置数据。
31.具体地,控制面:与用户交互,影响用户请求的组件。数据面:提供实际服务的组件,服务提供的方式由控制面决定。
32.配置信息用于对网络中待配置设备进行配置,待配置设备包括转发设备。配置信息包括网口ip的配置信息、网关的配置信息、端口的配置信息、路由的配置信息、服务的配置信息等其中的至少一种,但不局限于此。
33.第一配置具体为配置路径或配置数据发生变化的网络配置或者是新的配置。控制面可以向数据面并行下发多条配置的配置信息。
34.下发配置时,数据面可能还存储有一些历史配置的配置信息。因此,新下发的第一配置可能为全新的配置,也可能是已存在的配置。通过配置下发可以更新已存在的配置或者下发全新的配置。
35.数据面接收到第一配置的配置信息后对其进行解析,以提取出具有关联关系的第二配置的配置路径。在所有第一配置中,有的第一配置的配置信息中携带有具有关联关系的第二配置的配置路径,有的第一配置的配置信息中不携带任何配置的配置路径,有的第一配置与已存在的配置具有关联关系。
36.本实施例以配置路径作为一条配置的唯一标识,可以有效避免配置之间的名称冲突或关联冲突。
37.s200:为不存在资源占位的第一配置和第二配置分别创建资源占位,其中,同一个配置的配置路径与对应创建的资源占位具有第一实体关系。
38.具体地,第一配置和第二配置有可能是新的配置或者是被删除后重新下发的配置,还可能是已有的历史配置。如果是已有配置,则已有配置已存在对应的资源占位,因此,不需要为其再创建资源占位,而是继续沿用已有的资源占位。只有对不存在资源占位的第一配置和第二配置才创建资源占位。一个新配置在被任意形式关联或下发时会自动为其创建对应的资源占位。同一个配置的资源占位和其对应的配置路径建立有第一实体关系。
39.资源占位可以使用占位符,例如配置a的资源占位为占位符a_bus,配置b的资源占位为占位符b_bus,配置c的资源占位为占位符c_bus等等。资源占位并没有实际的配置内容。所有资源占位对应同一个数据结构config_bus。
40.第一实体关系用于指示同一个第一配置的资源占位与配置路径的映射关系。例如,配置a的配置路径为“groups/group0/namespaces/default/services/http”,配置a的资源占位为占位符a_bus,则配置a的第一实体关系为“groups/group0/namespaces/default/services/http”与a_bus的映射关系。
41.s300:从配置数据中提取出不为空的配置内容,将配置内容存储为对应的第一配置的实体化数据,或,根据配置内容更新对应的第一配置的历史实体化数据,其中,第一配置的资源占位、第二配置的资源占位、第一配置的实体化数据之间具有第二实体关系,第一配置的资源占位和第一配置的实体化数据之间具有第三实体关系。
42.具体地,配置内容包括了至少一个配置字段及对应的字段取值。
43.如果第一配置为新的配置即不为已有的历史配置,则将其配置数据中的配置内容作为其实体化数据。如果第一配置为已有的历史配置,则下发的第一配置的配置内容用于更新对应的历史实体化数据。实体化数据即一个配置的实际配置内容。例如,一个下发的第一配置如下:
44.{
45."name":"groups/group0/namespaces/default/pools/tcp/members/172.24.112.9_80",
46."description":"",
47."apiversion":"",
48."resourceversion":"",
49."uid":"",
50."enable":true,
51."priority":0,
52."source":"",
53."spec":{
54."@type":"type.googleapis.com/cnad.config.pool.configmember",
55."address":"172.24.112.9",
56."port":80,
57."weight":1,
58."link":"",
59."monitor":""
60.}}。
61.其中,"name":"groups/group0/namespaces/default/pools/tcp/members/172.24.112.9_80"为该第一配置的配置路径。其他字段组成了该第一配置的具体配置内容即实体化数据。该第一配置为节点的配置。
62.例如,可以将配置a的实体化数据存储在对应配置的a_item中,将配置b的实体化数据存储在对应配置的b_item中,a_item和b_item是自动创建的,用于存储对应配置的实体化数据。item中存储对应配置的实体化数据,只能原子整体更新。
63.另外,本实施例还会对具有关联关系的第一配置和第二配置的资源占位、实体化数据建立第二实体关系,对第一配置的资源占位和实体化数据建立第三实体关系。
64.具体地,第二实体关系用于指示两个配置之间的关联关系,第二实体关系包括表征父子关系的第一子实体关系和表征持久引用关系的第二子实体关系。其中,持久引用关系为在原始下发配置中已存在的一个配置对另外一个配置的引用关系。如果第一配置与对应的第二配置的关联关系为父子关系(第一配置为第二配置的子配置),则建立第一配置的资源占位与对应的第二配置的资源占位之间的第一子实体关系。通过第二实体关系可以允许具有第二实体关系的两个配置中其中一个配置不存在也不影响另外一个配置的正常下发,另外,在读取配置时方便快速查找其引用的配置,及方便整理集合与成员之间的关系。
65.其中,第二配置可能为新的配置,也可能为其他已有配置。如果根据配置路径判定第一配置为已有配置的子配置,则建立该第一配置的资源占位与具有父子关系的已有配置的资源占位的第一子实体关系。如果根据配置路径判定第一配置为已有配置的父配置,则建立该第一配置的资源占位与具有父子关系的已有配置的资源占位的第一子实体关系。
66.如果第一配置与对应的第二配置的关联关系为持久引用关系,则不论该第二配置的配置数据是否下发,即不论是否存储有该第二配置的实体化数据,建立第一配置的实体化数据与第二配置的资源占位之间的第二子实体关系,其中,第一配置引用第二配置,第二配置为第一配置的被引用配置。
67.例如,配置a在用户下发的配置中引用了配置b,则配置a持久引用配置b,且允许配置b不存在(未下发)。
68.第一配置既有资源占位也有对应的实体化数据,因此,建立第一配置的资源占位与实体化数据的第三实体关系。第三实体关系用于指示同一个第一配置的资源占位与实体化数据的映射关系,这样在读取配置时方便查找配置的相关数据。
69.通过建立资源占位,即使被引用配置或具有父子关系的关联配置未下发,对应的引用配置或具有父子关系的关联配置可以正常下发;此时虽然引用配置对被引用配置的引用暂时无法生效,但是不影响引用配置的下发。若被引用配置正常下发,则对应的引用配置对被引用配置的引用自动生效。例如,在正常业务处理过程中,当配置a引用的配置b不存在时,则按照a未引用b时处理,具体行为可能是丢包,可能是bypass放通,当配置b下发后,配置a对配置b的引用自动生效,实现了配置快速生效的目的,其对应的业务会被正常处理。
70.本实施例通过创建资源占位来建立同一个配置的资源占位与实体化数据的第三实体关系、建立具有父子关系的第一配置和第二配置的资源占位之间的第二实体关系、建立具有持久引用关系的第一配置的实体化数据和第二配置的资源占位之间的第二实体关系,对于未下发配置内容的配置通过资源占位也可以实现引用关系及父子关系的建立,解除了配置之间的强耦合性和强关联性,实现了配置的分布式下发。即使具有关联关系的配置存在下发错误,也不会影响其他关联配置的下发,解除了配置之间必须保证配置完整性和一致性的局限。本实施例实现了分布式配置并行、零耦合下发和配置更新。提高了设备配置的下发效率和准确性,降低维护成本。实现了api的配置校验、配置存储及数据面配置生效过程零耦合以及极速下发和生效速度。
71.在一个实施例中,关联关系包括持久引用关系和父子关系;
72.步骤s100中从第一配置的配置信息中获取与第一配置具有关联关系的第二配置的配置路径,包括:
73.若为持久引用关系,则从第一配置的配置数据中确定配置引用字段,从配置引用
字段所对应的字段值中提取出具有持久引用关系的第二配置的配置路径,
74.若为父子关系,则从第一配置的配置路径中提取出具有父子关系的第二配置的配置路径,其中,第一配置为第二配置的子配置。
75.具体地,本实施例中不论是子配置还是父配置,其配置路径都是完整路径。如果某个第一配置为某个父配置的子配置,则该子配置的配置路径中包含了其父配置的配置路径。一个父配置可以有多个子配置。
76.配置a的配置路径为:“groups/group0/namespaces/default/services/http”;配置b的配置路径为“groups/group0/namespaces/default/pools/http”。根据配置a和配置b的配置路径可以获取到其共有的父配置的配置路径为“groups/group0/namespaces/default”。因此,从子配置的配置路径中可以提取出父配置的配置路径。具有父子关系的父配置和子配置是集合与成员之间的关系,父配置和子配置作为两种不同的配置独立下发。
77.本实施例中配置之间的引用是通过被引用配置的配置路径来引用。因此,在引用配置的配置数据中包含了被引用配置的配置路径。
78.例如,配置a中存在某个字段为config_b,该字段为配置引用字段,表明配置a引用配置b。字段config_b的字段取值即为配置b的配置路径。
79.上述举例中,配置a下发的时候,配置b可以不存在,配置b删除的时候,允许正在被配置a引用。虽然配置a和b都被用户取名为“http”,但配置路径不同,仍然不会存在引用冲突或标识冲突。
80.本实施例通过配置路径来实现配置之间的引用,由于配置路径的唯一性,可以确保配置引用之间不会发生冲突,明确了引用关系。
81.在一个实施例中,步骤s200包括:在第一哈希表中以配置路径作为键为对应的第一配置或第二配置创建资源占位,其中,同一个配置的配置路径与对应的资源占位组成第一键值对;
82.步骤s300中将配置内容存储为对应的第一配置的实体化数据,或,根据配置内容更新对应的第一配置的历史实体化数据,包括:根据配置内容确定对应的键,将配置内容作为对应的第一配置的实体化数据与对应的键组成第二键值对存储于第二哈希表中,或,根据配置内容更新第二哈希表中对应的第一配置的历史实体化数据。
83.具体地,例如,为配置a创建资源占位a_bus,以资源占位a_bus作为值(value)、以该配置a的配置路径作为键(key)组成第一键值对,第一键值对存储于第一哈希表中。通过配置路径可以唯一查找到对应的配置的资源占位。
84.配置都是为了实现正常的业务或正常提供服务。因此,根据配置内容可以确定该配置所对应的业务或服务,根据对应的业务或服务可以为该配置分配对应的键,例如以业务或服务的调用端口作为该配置的键。将该第一配置的实体化数据作为值与对应的键组成第二键值对。
85.如果第一配置为已有配置且已存储有其对应的历史实体化数据,则根据此次下发的配置内容来更新对应的历史实体化数据。
86.本实施例使用哈希表代替数组来存储数据,只要内存足够,配置下发数量可以不受限制,支持海量配置(例如,控制面和数据面配置下发数量均可达到100w),且不影响配置下发性能。解决了现有技术中配置下发数量受限的问题。
87.在一个实施例中,将配置内容作为对应的第一配置的实体化数据与对应的键组成第二键值对存储于第二哈希表中,包括:
88.遍历所有第一配置及已存在的历史配置的配置内容,进行冲突检测;
89.根据预设的生效优先级规则,将同一组存在冲突的配置所对应的第二键值对按照生效优先级以级联的方式存储在第二哈希表的同一个地址所连接的链表中。
90.具体地,冲突检测用于检测各个配置之间的配置内容是否互斥,即具有冲突的配置之间同时只有一种配置生效,其他配置暂时不生效。
91.在第二哈希表中同一个地址所连接的同一个链表中,按照生效优先级的先后顺序从链表的链头开始依次存储有同一组存在冲突的配置的第二键值对。离链表的表头越远的配置生效优先级越低。更具体地,可以以配置内容下发的先后顺序来确定生效优先级,先下发的配置生效优先级越高。
92.当配置a与配置b存在冲突时,配置a所对应的业务与配置b所对应的业务也存在冲突,使用链表的形式关联配置a和配置b,让先生效的配置作为业务处理依据。比如配置a先下发,则设置配置a生效优先级高于配置b的生效优先级,即,在同一个链表中配置a所对应的第二键值对位于配置b的第二键值对之前,配置b虽然暂时不生效但仍然为下发状态。如果配置a删除,则配置b立即生效。
93.在一个实施例中,该方法还包括:
94.对第一配置和第二配置进行配置校验;
95.对存在校验错误的第一配置和第二配置进行错误告警,以指示配置人员更改并重新下发对应的第一配置。
96.具体地,配置校验具体是对第一配置和第二配置的配置路径的格式进行校验,以及对第一配置的配置字段进行校验。且只针对存在校验错误的配置进行告警,以提醒配置人员重新下发错误配置。
97.本实施例不需要对被引用配置是否存在进行校验,也不需要对存在配置冲突进行告警,即使关联配置出现错误也不会影响其他关联配置的正常下发。因此,本技术可以实现配置的零耦合下发。
98.在一个实施例中,该方法还包括:
99.若在业务处理过程任意一个第一现存配置被其他第一现存配置临时引用,则对产生临时引用关系的第一现存配置和其他第一现存配置的实体化数据之间建立第四实体关系,其中,第一现存配置为现存的已存储有实体化数据的配置。
100.具体地,第一现存配置和其他第一现存配置均为存储有实体化数据的已有配置。第四实体关系用于表征已有配置之间的临时引用关系。临时引用关系是业务处理过程中临时产生的引用关系、非用户下发配置中的原始引用关系,临时引用关系可能会随着其他配置变化而变化,临时引用关系与配置下发时配置内容中固有的持久引用关系不同。
101.例如,配置a在业务处理过程中临时引用了配置b,而非用户下发时设置配置a引用配置b,随着其它配置变化,配置a和配置b的临时引用关系也可能发生改变。
102.本实施支持已有配置之间配置内容的临时引用,实现了配置的复用。
103.图3为本技术一实施例中实体关系的示意图;参考图3,配置b的第一资源占位b_bus通过指针与其第二资源占位b_priv关联,配置b的第一资源占位b_bus通过指针与其实
体化数据b_item建立了第三实体关系。配置a持久引用配置b,配置a的实体化数据a_item与配置b的资源占位b_bus建立了第二实体关系中的第二子实体关系。配置c为配置b的子配置,配置b的资源占位b_bus与配置c的资源占位c_bus建立了第二实体关系中的第一子实体关系。配置a临时引用配置c,配置a的实体化数据a_item与配置c的实体化数据c_item建立了第四实体关系。配置c的第一资源占位c_bus通过指针与其实体化数据c_item建立了第三实体关系。其中,配置a的第一资源占位a_bus和第二资源占位a_priv、配置c的第二资源占位c_priv图中未示出。图3仅仅是示意性的表示本技术一个实施例中的实体关系的建立原理。具体每种关联关系资源占位、实体化数据之间如何构建实体关系可以根据实际情况确定,本技术不局限于此。
104.在一个实施例中,该方法还包括:
105.若接收到对任意一条待删除配置的删除指令,则根据待删除配置与其他已有配置之间的第二实体关系和第四实体关系,删除待删除配置的实体化数据或删除待删除配置的资源占位和实体化数据。
106.具体地,若在其他已有配置中存在与待删除配置具有第一子实体关系(父子关系)的关联配置,则保留待删除配置的资源占位,删除待删除配置的实体化数据,保留其他已有配置与待删除配置的第一子实体关系。
107.如果存在与待删除配置具有第二子实体关系(持久引用关系)的第二关联配置,且待删除配置的资源占位与对应的第二关联配置的实体化数据建立有第二子实体关系,则保留待删除配置的资源占位,删除待删除配置的实体化数据,保留待删除配置的资源占位与对应的第二关联配置的实体化数据的第二子实体关系。
108.若在其他已有配置中不存在与待删除配置具有第一子实体关系(父子关系)的第一关联配置,且待删除配置的资源占位不与任意一个第二关联配置的实体化数据建立有第二子实体关系,则删除待删除配置的资源占位和实体化数据。
109.如果存在与待删除配置具有第二子实体关系(持久引用关系)的第二关联配置,且待删除配置的实体化数据与对应的第二关联配置的资源占位建立有第二子实体关系,且待删除配置的实体化数据已被删除,则解除待删除配置的实体化数据与第二关联配置的资源占位的第二子实体关系。
110.如果存在与待删除配置具有第四实体关系(临时引用关系)的第三关联配置,且待删除配置的实体化数据已被删除,则解除待删除配置的实体化数据与第三关联配置的实体化数据之间的第四实体关系。
111.在一个实施例中,该方法还包括:
112.对不存在实体化数据且不与任意一条第二现存配置存在任意一种实体关系的孤立配置的资源占位进行注销,其中,第二现存配置为除孤立配置以外且现存的已创建有资源占位的配置。
113.具体地,孤立配置为不与任何其他配置存在父子关系或引用关系或临时引用关系且不存在实体化数据的配置。对孤立配置的资源占位进行注销可以及时释放并节省存储空间。
114.在一个实施例中,步骤s200中为不存在资源占位的第一配置和第二配置分别创建资源占位,包括:为不存在资源占位的第一配置和第二配置分别创建关联的第一资源占位
和第二资源占位,其中,同一个配置的配置路径与对应的第一资源占位组成第一键值对;
115.该方法还包括:在第二资源占位中记录或更新对应的第一配置或第二配置的持久数据,其中,持久数据包括第一配置或第二配置所对应的统计数据。
116.具体地,将同一个配置的配置路径与对应的第一资源占位组成第一键值对;例如,配置a的第一资源占位为a_bus,第二资源占位为a_priv。同理,配置b的第一资源占位为b_bus,第二资源占位为b_priv。如果配置a的配置路径为“groups/group0/namespaces/default/services/http”,则第一资源占位a_bus为value(值),groups/group0/namespaces/default/services/http为key(键),组成了第一键值对。配置a的第一资源占位a_bus与第二资源占位a_priv具有关联,例如,通过指针将a_bus与a_priv关联,这样通过a_bus的指针可以找到a_priv。a_priv持久存储有配置a的统计数据。统计数据包括配置a所对应的业务或服务被调用的累计次数,还可以包括配置a下发的版本和次数等不局限于此。a_priv中存储的统计数据与配置内容无关。当配置a更新时,a_priv中的统计数据需要保留,即使配置a更新也不会重新生成a_priv。a_priv随着a_bus自动创建和注销。
117.本技术实现了具有关联关系的配置的下发,使用资源占位实现了配置之间的零耦合下发,即使具有关联关系的配置没有下发,也可以不影响其他关联配置的正常下发,对于配置下发的时间先后顺序没有严格限制,对于具有冲突的配置使用链表形式存储来设置生效优先级,解决了冲突配置之间的下发和共存问题。使用哈希表存储配置相关数据,支持海量配置下发和配置的分布式下发,配置下发性能与配置数量无关,海量配置下发也不影响配置下发性能。本技术解决了控制面为保证配置完整性保证配置下发复杂,下发性能差,配置数量上限低等问题。实现了数据面在配置完整性无保证和配置数量无限制条件下,配置的正确下发。解决了数据面配置下时的原子性及存在配置冲突的问题,实现了配置间零耦合下发。
118.图4为本技术一实施例中配置的下发装置的结构框图。参考图4,该装置包括:
119.解析模块100,用于获取并解析控制面下发的每条第一配置的配置信息,从第一配置的配置信息中获取与第一配置具有关联关系的第二配置的配置路径,其中,第一配置的配置信息包括对应的第一配置的配置路径和配置数据;
120.创建模块200,用于为不存在资源占位的第一配置和第二配置分别创建资源占位,其中,同一个配置的的配置路径与对应创建的资源占位具有第一实体关系;
121.存储更新模块300,用于从配置数据中提取出不为空的配置内容,将配置内容存储为对应的第一配置的实体化数据,或,根据配置内容更新对应的第一配置的历史实体化数据,其中,第一配置的资源占位、第二配置的资源占位、第一配置的实体化数据之间具有第二实体关系,第一配置的资源占位和第一配置的实体化数据之间具有第三实体关系。
122.在一个实施例中,关联关系包括持久引用关系和父子关系;
123.解析模块100具体包括:
124.第一提取模块,用于若为持久引用关系,则从第一配置的配置数据中确定配置引用字段,从配置引用字段所对应的字段值中提取出具有持久引用关系的第二配置的配置路径,
125.第二提取模块,用于若为父子关系,则从第一配置的配置路径中提取出具有父子关系的第二配置的配置路径,其中,第一配置为第二配置的子配置。
126.在一个实施例中,创建模块200具体用于:在第一哈希表中以配置路径作为键为对应的第一配置或第二配置创建资源占位,其中,同一个配置的配置路径与对应的资源占位组成第一键值对;
127.存储更新模块300具体包括存储模块和更新模块,
128.存储更新模块300具体用于:通过存储模块根据配置内容确定对应的键,将配置内容作为对应的第一配置的实体化数据与对应的键组成第二键值对存储于第二哈希表中,或,通过更新模块根据配置内容更新第二哈希表中对应的第一配置的历史实体化数据。
129.在一个实施例中,存储模块包括:
130.冲突检测单元,用于遍历所有第一配置及已存在的历史配置的配置内容,进行冲突检测;
131.链表存储单元,用于根据预设的生效优先级规则,将同一组存在冲突的配置所对应的第二键值对按照生效优先级以级联的方式存储在第二哈希表的同一个地址所连接的链表中。
132.在一个实施例中,该装置还包括:
133.校验模块,用于对第一配置和第二配置进行配置校验;
134.告警模块,用于对存在校验错误的第一配置和第二配置进行错误告警,以指示配置人员更改并重新下发对应的第一配置。
135.在一个实施例中,该装置还包括:
136.第三关系建立模块,用于若在业务处理过程任意一个第一现存配置被其他第一现存配置临时引用,则对产生临时引用关系的第一现存配置和其他第一现存配置的实体化数据之间建立第四实体关系,其中,第一现存配置为现存的已存储有实体化数据的配置。
137.在一个实施例中,该装置还包括:
138.第一删除模块,用于若接收到对任意一条待删除配置的删除指令,则根据待删除配置与其他已有配置之间的第二实体关系和第四实体关系,删除待删除配置的实体化数据或删除待删除配置的资源占位和实体化数据。
139.在一个实施例中,该装置还包括:
140.注销模块,用于对不存在实体化数据且不与任意一条第二现存配置存在任意一种实体关系的孤立配置的资源占位进行注销,其中,第二现存配置为除孤立配置以外且现存的已创建有资源占位的配置。
141.在一个实施例中,创建模块200,具体用于为不存在资源占位的第一配置和第二配置分别创建关联的第一资源占位和第二资源占位,其中,同一个配置的配置路径与对应的第一资源占位组成第一键值对;
142.该装置还包括:
143.记录更新模块,用于在第二资源占位中记录或更新对应的第一配置或第二配置的持久数据,其中,持久数据包括第一配置或第二配置所对应的统计数据。
144.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
145.其中上述模块/单元中的“第一”和“第二”的意义仅在于将不同的模块/单元加以
区分,并不用于限定哪个模块/单元的优先级更高或者其它的限定意义。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块,本技术中所出现的模块的划分,仅仅是一种逻辑上的划分,实际应用中实现时可以有另外的划分方式。
146.关于配置的下发装置的具体限定可以参见上文中对于配置的下发方法的限定,在此不再赘述。上述配置的下发装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
147.图5为本技术一实施例中计算机设备的内部结构框图。该如图5所示,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,该计算机设备的处理器用于提供计算和控制能力。存储器包括存储介质和内存储器。存储介质可以是非易失性存储介质,也可以是易失性存储介质。存储介质存储有操作系统,还可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器实现配置的下发方法。该内存储器为存储介质中的操作系统和计算机可读指令的运行提供环境。该内存储器中也可储存有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行配置的下发方法。该计算机设备的网络接口用于与外部服务器通过网络连接通信。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
148.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机可读指令(例如计算机程序),处理器执行计算机可读指令时实现上述实施例中配置的下发方法的步骤,例如图2所示的步骤s100至步骤s300及该方法的其它扩展和相关步骤的延伸。或者,处理器执行计算机可读指令时实现上述实施例中配置的下发装置的各模块/单元的功能,例如图4所示模块100至模块300的功能。为避免重复,这里不再赘述。
149.处理器可以是中央处理单元(central processing unit,cpu),还可以是其他通用处理器、数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现成可编程门阵列(field-programmable gatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
150.存储器可用于存储计算机可读指令和/或模块,处理器通过运行或执行存储在存储器内的计算机可读指令和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、视频数据等)等。
151.存储器可以集成在处理器中,也可以与处理器分开设置。
152.本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
153.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机可读指令,计算机可读指令被处理器执行时实现上述实施例中配置的下发方法的步骤,例如图2所示的步骤s100至步骤s300及该方法的其它扩展和相关步骤的延伸。或者,计算机可读指令被处理器执行时实现上述实施例中配置的下发装置的各模块/单元的功能,例如图4所示模块100至模块300的功能。为避免重复,这里不再赘述。
154.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机可读指令来指示相关的硬件来完成,所述的计算机可读指令可存储于一计算机可读取存储介质中,该计算机可读指令在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双倍速率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
155.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
156.上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本技术各个实施例所述的方法。
157.以上仅为本技术的优选实施例,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1