发明内容
本发明的目的在于提供一种基于分布式文件边缘节点的配置文件方法和装置,通过在不同的边缘节点,同时进行配置文件的分发,以解决不同的服务器、中间件及业务代码在不同的边缘节点上读取配置的多元化适配问题。
第一方面,本发明实施例提供了一种基于分布式文件边缘节点的配置文件方法,分布式文件包括中央节点和边缘节点,所述方法应用于所述边缘节点,所述方法包括:
获取所述中央节点广播的变更事件,其中,所述变更事件为所述中央节点获取目标环境的配置文件修改请求后,根据所述目标环境对应的标签修改目标配置文件,与修改后的新生配置文件同时生成的,所述变更事件包括所述新生配置文件对应的标签、版本号和时间戳;
将所述新生配置文件对应的标签、版本号和时间戳与所述边缘节点的配置进行比对,判断所述新生配置文件的配置是否非法;
若非法,则丢弃所述变更事件;
若合法,则加载所述变更事件,拉取所述新生配置文件,以使客户端在监听到加载所述变更事件,所述边缘节点配置的版本号变化时,将所述新生配置文件拉取到所述客户端的共享内存中,完成所述客户端配置文件的热更新。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,将所述新生配置文件对应的标签、版本号和时间戳与所述边缘节点的配置进行比对,判断所述新生配置文件的配置是否非法的步骤,包括:
将所述新生配置文件对应的标签与所述边缘节点配置的标签进行比对,若两者不一致,则所述新生配置文件的配置非法;
将所述新生配置文件对应的版本号和时间戳与所述边缘节点配置的版本号和时间戳进行比对,若所述边缘节点配置的版本号和时间戳中任意一个大于所述新生配置文件对应的版本号和时间戳,则所述新生配置文件的配置非法。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述方法还包括:
在所述边缘节点的变更事件加载超时的情况下,接收所述中央节点重新下发的新生配置文件。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述方法还包括:
当与客户端保持通信连接时,超过预设时间阈值未收到所述客户端发送的变更事件接收成功反馈,将所述新生配置文件下发到所述客户端的共享内存中。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,拉取所述新生配置文件的步骤,包括:
将所述客户端上报的命名空间同步于所述中央节点,以使所述中央节点根据所述客户端和所述命名空间生成存取关键字,并下发给所述客户端,其中,所述存取关键字用于所述客户端从所述边缘节点申请拉取所述新生配置文件;
将从所述客户端获取的存取关键字转发到所述中央节点,与所述中央节点中的存取关键字比对;
当校验通过后,接收所述中央节点下发的所述新生配置文件。
结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,其中,获取所述中央节点广播的变更事件的步骤之前,还包括:
在所述中央节点验证通过所述边缘节点的证书的情况下,通过所述中央节点发送的证书验证所述中央节点。
结合第一方面,本发明实施例提供了第一方面的第六种可能的实施方式,其中,将所述新生配置文件对应的标签、版本号和时间戳与所述边缘节点的配置进行比对,判断所述新生配置文件的配置是否非法的步骤之前,包括:
在对所述变更事件进行验证后,通过公钥证书和验证后的变更事件对所述新生配置文件解密,其中,所述新生配置文件通过所述中央节点根据私钥证书和所述变更事件进行加密。
第二方面,本发明实施例还提供一种基于分布式文件边缘节点的配置文件装置,分布式文件包括中央节点和边缘节点,所述装置应用于所述边缘节点,所述装置包括:
获取模块,获取所述中央节点广播的变更事件,其中,所述变更事件为所述中央节点获取目标环境的配置文件修改请求后,根据所述目标环境对应的标签修改目标配置文件,与修改后的新生配置文件同时生成的,所述变更事件包括所述新生配置文件对应的标签、版本号和时间戳;
判断模块,将所述新生配置文件对应的标签、版本号和时间戳与所述边缘节点的配置进行比对,判断所述新生配置文件的配置是否非法;
丢弃模块,若非法,则丢弃所述变更事件;
拉取模块,若合法,则加载所述变更事件,拉取所述新生配置文件,以使客户端在监听到加载所述变更事件,所述边缘节点配置的版本号变化时,将所述新生配置文件拉取到所述客户端的共享内存中,完成所述客户端配置文件的热更新。
第三方面,实施例提供一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述前述实施方式任一项所述的方法的步骤。
第四方面,实施例提供一种机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,机器可执行指令促使处理器实现前述实施方式任一项所述的方法的步骤。
本发明实施例带来了一种基于分布式文件边缘节点的配置文件方法和装置,获取中央节点与配置变化同时生成的变更事件,基于变更事件中新生配置文件对应的标签、版本号和时间戳,判断该新生配置文件是否合法,若非法则丢弃,若合法则拉取该新生配置文件到客户端的共享内存中,完成客户端配置文件的热更新。其中,中央节点去甄别不同的线上环境,去匹配不同的api地址,数据库ip地址及账户名、密码等,去处理这种千差万别的环境问题,本发明实施例的配置服务本身提供了多级缓存机制,客户端程序直接连边缘节点配置服务,而避免了跟中央配置服务直连,充分避免中央节点的并发问题。通过在不同的边缘节点,同时进行配置文件的分发,以解决不同的服务器、中间件及业务代码在不同的边缘节点上读取配置的多元化适配问题。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的一种基于分布式文件边缘节点的配置文件方法和装置,可以通过在不同的边缘节点,同时进行配置文件的分发,以解决不同的服务器、中间件及业务代码在不同的边缘节点上读取配置的多元化适配问题。
为便于对本实施例进行理解,首先对本发明实施例所公开的一种基于分布式文件边缘节点的配置文件方法进行详细介绍,分布式文件包括中央节点和边缘节点,该方法应用于所述边缘节点,该配置指服务请求的内容,服务指配置服务的请求端,即客户端。
图1为本发明实施例提供的一种基于分布式文件边缘节点的配置文件方法流程图。
参照图1,该方法包括以下步骤:
步骤S102,获取所述中央节点广播的变更事件,其中,所述变更事件为所述中央节点获取目标环境的配置文件修改请求后,根据所述目标环境对应的标签修改目标配置文件,与修改后的新生配置文件同时生成的,所述变更事件包括所述新生配置文件对应的标签、版本号和时间戳;
其中,中央节点包括配置库,配置库包括每个环境对应的多个配置文件,每个所述配置文件携带有对应环境的唯一标签,每个配置文件包括版本号和时间戳,所述时间戳用于表征生产所述版本号的配置文件的时间点;示例性地,用户可以指定环境变量,通过正则表达式的方式,用不同的标签target在配置库内识别不同的地域对应的配置文件。
这里,每个配置文件修改都有生产的时间和对应的版本号,以保证每次操作/更改都有属于自己的版本号用于回滚分析当配置文件修改的时候,会对应生成修改的变更事件event,并对所有的边缘节点做广播,进行广播的变更事件带有对应的配置文件target标签、该配置文件生成的时间及对应的版本号。
步骤S104,将所述新生配置文件对应的标签、版本号和时间戳与所述边缘节点的配置进行比对,判断所述新生配置文件的配置是否非法;
步骤S106,若非法,则丢弃所述变更事件;
步骤S108,若合法,则加载所述变更事件,拉取所述新生配置文件,以使客户端在监听到加载所述变更事件,所述边缘节点配置的版本号变化时,将所述新生配置文件拉取到所述客户端的共享内存中,完成所述客户端配置文件的热更新。
本发明实施例中配置文件进行配置的目的地,是客户端程序。客户端程序通过sdk,在内存划分一个内存共享空间。然后通过watch实时监察TCP长连接方式,实时监听边缘节点的是事件event的变化。当客户端程序发现,边缘节点的配置出现版本号变化的情况,会拉取配置,到共享内存中,实现配置的热更新,而无需重启服务。
需要说明的是,该客户端服务本身满足tcp/ip传输机制。
作为一种可选的实施例,边缘节点接收中央节点的事件event广播,边缘节点对事件event接收来说,对应相关组件event(事件)、channel(缓存跟限流)、eventtime(事件刷新时间)、consumer(event消费)和filtermanager(过滤规则)等等。
例如,广播消息(event事件)写入时,channel提供write函数调用方法。当channel的内存将近写满时(80%),将触发拥塞限流。同时通知read函数拉取广播消息(event事件)。其中,event time(事件刷新时间),提供计时器功能,周期性的通知read函数拉取广播消息(event事件),防止channel拥塞。其中,read函数拉取广播消息(event事件)会传到consumer(event时间消费)上,consumer 会去关联filter manager(过滤规则),去比对event事件规则。filtermanager(过滤规则)关联事件event的target标签、非法配置的抛弃。本发明实施例中央节点、边缘节点传输机制通过grpc,实现多线程event和配置的下发,充分避免的tcp的拥塞控制。
在实际应用的优选实施例中,获取中央节点与配置变化同时生成的变更事件,基于变更事件中新生配置文件对应的标签、版本号和时间戳,判断该新生配置文件是否合法,若非法则丢弃,若合法则拉取该新生配置文件到客户端的共享内存中,完成客户端配置文件的热更新。其中,中央节点去甄别不同的线上环境,去匹配不同的api地址,数据库ip地址及账户名、密码等,去处理这种千差万别的环境问题,本发明实施例的配置服务本身提供了多级缓存机制,客户端程序直接连边缘节点配置服务,而避免了跟中央配置服务直连,充分避免中央节点的并发问题。通过在不同的边缘节点,同时进行配置文件的分发,以解决不同的服务器、中间件及业务代码在不同的边缘节点上读取配置的多元化适配问题。
在一些实施例中,上述实施例中的步骤S104包括以下步骤:
步骤1.1),将所述新生配置文件对应的标签与所述边缘节点配置的标签进行比对,若两者不一致,则所述新生配置文件的配置非法;
步骤1.2),将所述新生配置文件对应的标签与所述边缘节点配置的标签进行比对,若两者一致,则所述新生配置文件的配置合法;
步骤1.3),将所述新生配置文件对应的版本号和时间戳与所述边缘节点配置的版本号和时间戳进行比对,若所述边缘节点配置的版本号和时间戳中任意一个大于所述新生配置文件对应的版本号和时间戳,则所述新生配置文件的配置非法;
步骤1.4),将所述新生配置文件对应的版本号和时间戳与所述边缘节点配置的版本号和时间戳进行比对,若所述边缘节点配置的版本号和时间戳中均小于所述新生配置文件对应的版本号和时间戳,则所述新生配置文件的配置合法。
在一些可选的实施例中,所述方法还包括以下步骤:
步骤2.1),在所述边缘节点的变更事件加载超时的情况下,接收所述中央节点重新下发的新生配置文件。
在一些可选的实施例中,所述方法还包括以下步骤:
步骤3.1),当与客户端保持通信连接时,超过预设时间阈值未收到所述客户端发送的变更事件接收成功反馈,将所述新生配置文件下发到所述客户端的共享内存中。
示例性地,当客户端tcp长连接,出现网络抖动的时候,超过30s未收到客户端获取接收event事件成功时,边缘节点将客户端的配置,直接下发到客户端的共享内存中。
在一些可选实施例中,步骤S108的拉取所述新生配置文件的步骤,包括:
步骤4.1),将所述客户端上报的命名空间同步于所述中央节点,以使所述中央节点根据所述客户端和所述命名空间生成存取关键字access-key,并下发给所述客户端,其中,所述存取关键字用于所述客户端从所述边缘节点申请拉取所述新生配置文件;
步骤4.2),将从所述客户端获取的存取关键字转发到所述中央节点,与所述中央节点中的存取关键字比对;
步骤4.3),当校验通过后,接收所述中央节点下发的所述新生配置文件。
如图4所示,中央节点将配置文件中配置信息发布在节点配置服务上,客户端服务service申请订阅配置服务,将会将服务service所在的命名空间上报给边缘节点,边缘节点跟中央节点同步消息,配置服务根据服务service名称跟命名空间,生成一个存取关键字access-key,下发给服务service。服务service拿取存取关键字access-key,去边缘节点申请拉取配置config,边缘节点将access-key转发给中央节点比对access-key,当access-key校验通过后,将配置文件下发给边缘节点上。
其中,命名空间是区分不同的项目,和不同环境的标准。对于相同的项目,不同的环境来说,其命名空间不同。对于相同的环境,不同的项目来说,命名空间也是不同的。命名空间是为了区分,项目、环境(研发、测试、预发布、生产)所设立的概念。
如图2所示,配置服务器config server,对于相同的服务service1来说,不同边缘节点IDC A、IDC B,命名空间都为namespace1,命名空间相同,access-key也相同,为access-key1;对于相同边缘节点A,不同的服务service1、service2来说,命名空间也都不同,命名空间分别为namespace1,namespace2,access-key自然也不相同,为access-key1,access-key2。
在一些实施例中,在步骤S102之前,还包括:
步骤5.1),在所述中央节点验证通过所述边缘节点的证书的情况下,通过所述中央节点发送的证书验证所述中央节点。
这里,本发明实施例实现双向数字证书验证,除了中央节点需要验证边缘节点的证书外,边缘节点也要通过中央节点证书验证中央节点的身份。完成双向认证之后,中央节点和边缘节点之后相互授信后,才会完成通信。
作为一种可选的实施例,在步骤S104之前,包括:
步骤6.1),在对所述变更事件进行验证后,通过公钥证书和验证后的变更事件对所述新生配置文件解密,其中,所述新生配置文件通过所述中央节点根据私钥证书和所述变更事件进行加密。
其中,配置文件在中央节点加密存储,在边缘节点解密。作为一种可选的实施例,加密传输通过TLS 令牌环加密认证和传输。
例如,中央节点的配置库存储所有配置文件的配置信息,为了规避安全方面风险,例如脱库,注入的风险,所有配置文件都不会明文存储。当配置文件发现修改时会生成事件event信息。中央节点通过私钥证书和事件event关键信息对配置文件config进行加密。当边缘节点接收到event信息后,并且event信息验证通过后,获取event上的关键字信息,与边缘节点的公钥证书对配置文件config解密。
如图3所示,本发明实施例还提供另一种基于分布式文件边缘节点的配置文件方法流程,包括:
步骤1,客户通过web UI,提交了修改配置文件请求;
步骤2,中央节点的配置库根据A机房、B机房的环境标签,A机房,指向了配置文件A,B机房,指向了配置文件B。
步骤3,当新生配置文件A、新生配置文件B在配置库生成之后,中央节点(CentralConfig Server),生成2个变更事件(eventA、eventB)。
步骤4,当边缘节点(IDC A、IDC B)上的边缘服务(Proxy Config Server )接收到变更事件A、B时。
步骤5,根据环境标签A、B,分别对应边缘节点A获取event A (步骤5-1),边缘节点B获取event B(步骤5-2)。
步骤6,根据event事件,分别IDC A机房服务获取配置文件A(步骤6-1)、 IDC B 机房服务配置文件B (步骤6-2)。
一种实施例中,access-key数据结构设计如图5所示,热更新客户端sdk设计包括:registry(注册器)、configsource(配置文件源)、eventloop(事件环)、mconfig(共享内存配置文件);
registry(注册器):将需要拉取配置的服务都注册到registry(注册器)中。
Configsource(配置文件源):记录了mconfig跟配置文件对映信息。
eventloop(事件环):监听边缘节点,event事件信息,拉取配置文件。
其中,中央节点下发的access-key,每个access-key都是唯一不重复值。边缘节点获取access-key,生成一个平衡二叉树,加载一个双向链表到内存里面。链表一端关联事件event,链表另一端关联配置config文件。当事件event有更新时,通知配置文件config拉取;当服务service启动和加载时,边缘节点文件,对二叉书根节点( access-key )做索引,能快速的定位到配置文件config和事件event。
如图6所示,本发明实施例提供一种基于分布式文件边缘节点的配置文件装置,分布式文件包括中央节点和边缘节点,所述方法应用于所述边缘节点,所述装置包括:
获取模块,获取所述中央节点广播的变更事件,其中,所述变更事件为所述中央节点获取目标环境的配置文件修改请求后,根据所述目标环境对应的标签修改目标配置文件,与修改后的新生配置文件同时生成的,所述变更事件包括所述新生配置文件对应的标签、版本号和时间戳;
判断模块,将所述新生配置文件对应的标签、版本号和时间戳与所述边缘节点的配置进行比对,判断所述新生配置文件的配置是否非法;
丢弃模块,若非法,则丢弃所述变更事件;
拉取模块,若合法,则加载所述变更事件,拉取所述新生配置文件,以使客户端在监听到加载所述变更事件,所述边缘节点配置的版本号变化时,将所述新生配置文件拉取到所述客户端的共享内存中,完成所述客户端配置文件的热更新。
本发明实施例提供的用于实现一种电子设备,本实施例中,所述电子设备可以是,但不限于,个人电脑(Personal Computer,PC)、笔记本电脑、监控设备、服务器等具备分析及处理能力的计算机设备。
作为一种示范性实施例,可参见图7,电子设备110,包括通信接口111、处理器112、存储器113以及总线114,处理器112、通信接口111和存储器113通过总线114连接;上述存储器113用于存储支持处理器112执行上述图像锐化方法的计算机程序,上述处理器112被配置为用于执行该存储器113中存储的程序。
本文中提到的机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
非易失性介质可以是非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、任何类型的存储盘(如光盘、dvd等),或者类似的非易失性存储介质,或者它们的组合。
可以理解的是,本实施例中的各功能模块的具体操作方法可参照上述方法实施例中相应步骤的详细描述,在此不再重复赘述。
本发明实施例所提供计算机可读存储介质,所述可读存储介质中存储有计算机程序,所述计算机程序代码被执行时可实现上述任一实施例所述的基于分布式文件边缘节点的配置文件方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。