CN113656098B - 配置获取方法及系统 - Google Patents

配置获取方法及系统 Download PDF

Info

Publication number
CN113656098B
CN113656098B CN202110931388.7A CN202110931388A CN113656098B CN 113656098 B CN113656098 B CN 113656098B CN 202110931388 A CN202110931388 A CN 202110931388A CN 113656098 B CN113656098 B CN 113656098B
Authority
CN
China
Prior art keywords
configuration
changed
content
client
keywords
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
Application number
CN202110931388.7A
Other languages
English (en)
Other versions
CN113656098A (zh
Inventor
韩志华
陈天宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202110931388.7A priority Critical patent/CN113656098B/zh
Publication of CN113656098A publication Critical patent/CN113656098A/zh
Application granted granted Critical
Publication of CN113656098B publication Critical patent/CN113656098B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请公开了一种配置获取方法,该方法包括:配置中心管理端接收用户设置的关键字和配置内容,并更新至数据库,发布更新提醒至服务端;服务端基于更新提醒中的关键字从数据库中获取对应的配置内容,并更新至本地文件中;接收客户端发出的配置更新获取请求;从本地文件中查询所述请求中关键字对应的配置内容是否发生变化;当有配置内容发生变化时,将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。本申请还公开了一种配置中心系统、配置获取系统、电子装置和计算机可读存储介质。由此,能够通过一次请求就获取到发生变化的配置的关键字和变化后的具体配置内容,减少客户端与服务端交互的请求次数,提高配置更新的效率。

Description

配置获取方法及系统
技术领域
本申请涉及分布式配置中心技术领域,尤其涉及一种配置获取方法、系统、电子装置、配置中心系统及计算机可读存储介质。
背景技术
在分布式微服务的开发中,很多项目都需要对其中的服务启动配置、业务逻辑配置和灰度配置等进行统一的管理,从而引入了分布式配置中心系统。开发者能够通过配置中心对其开发的项目进行快速的配置修改以及热更新,在不修改代码和发布项目的前提下对其业务逻辑以及灰度力度进行实时修改。
目前分布式配置中心的原理是业界常用的SDK(Software Development Kit,软件开发工具包)嵌入微服务的模式,通过SDK对配置中心服务端检测微服务所关心的配置,当配置信息发生变化时,通过与服务端之间的多次请求交互感知到配置的具体更新情况。但是,这种交互方式比较耗时。并且,如果服务端返回给SDK的配置详细内容重复度比较高,配置内容比较大,对于返回请求的传输效率会很低。另外,当前交互模式只能保证数据的最终一致性,在多次请求交互的同步过程中可能有短暂的数据不一致情况。
需要说明的是,上述内容并不用于限制申请保护范围。
发明内容
本申请的主要目的在于提出一种配置获取方法、系统、电子装置及计算机可读存储介质,旨在解决如何减少客户端从配置中心服务端获取配置过程的耗时、提高传输效率并兼顾数据一致性的问题。
为实现上述目的,本申请实施例提供了一种配置获取方法,所述方法包括:
配置中心管理端接收用户在配置中心管理页面设置的关键字和配置内容,并更新至数据库;
所述管理端发布更新提醒至服务端;
所述服务端基于所述更新提醒中的所述关键字从所述数据库中获取对应的所述配置内容,并更新至本地文件中;
接收客户端发出的配置更新获取请求,所述请求中包括所述配置的所述关键字和所述配置内容;
从所述本地文件中查询所述关键字对应的配置内容是否发生变化;及
当有配置内容发生变化时,将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
可选地,所述方法在有配置内容发生变化时还包括:
判断所述变化后的配置内容的大小是否大于等于预设阈值;
当所述变化后的配置内容的大小大于或等于所述预设阈值时,将所述变化后的配置内容进行压缩;
将发生变化的配置对应的所述关键字和压缩后的配置内容同时返回给所述客户端。
可选地,所述方法还包括:
当所述变化后的配置内容的大小小于所述预设阈值时,直接将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
可选地,所述请求中包括所述客户端微服务所有订阅配置的关键字列表和每个所述关键字对应的配置MD5信息,所述从本地文件中查询所述关键字对应的配置内容是否发生变化包括:从所述本地文件中查询所述关键字列表
中每个所述关键字对应的配置MD5信息,判断所查询到的所述配置MD5信息
与所述请求中的所述配置MD5信息是否一致,当有不一致的配置MD5信息时,判断有配置内容发生变化。
可选地,所述接收客户端发出的配置更新获取请求包括:
接收所述客户端通过服务器负载均衡SLB网关采用长轮训机制对所述服务端发出的所述请求。
此外,为实现上述目的,本申请实施例还提供一种配置中心系统,所述系统包括:
管理端,用于接收用户在配置中心管理页面设置的关键字和配置内容,并更新至数据库,发布更新提醒至服务端;
所述数据库,用于保存各个配置的所述关键字和所述配置内容;
所述服务端,用于基于所述更新提醒中的所述关键字从所述数据库中获取对应的所述配置内容,并更新至本地文件中;
接收客户端发出的配置更新获取请求,所述请求中包括所述配置的所述关键字和所述配置内容;
从所述本地文件中查询所述关键字对应的配置内容是否发生变化;及
当有配置内容发生变化时,将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
为实现上述目的,本申请实施例还提供一种配置获取方法,应用于配置中心服务端,所述方法包括:
接收客户端针对所有订阅配置发出的配置更新获取请求,所述请求中包括所述配置的关键字和配置内容;
从本地文件中查询所述关键字对应的配置内容是否发生变化;及
当有配置内容发生变化时,将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
可选地,所述方法在有配置内容发生变化时还包括:
判断所述变化后的配置内容的大小是否大于等于预设阈值;
当所述变化后的配置内容的大小大于或等于所述预设阈值时,将所述变化后的配置内容进行压缩;
将发生变化的配置对应的所述关键字和压缩后的配置内容同时返回给所述客户端。
可选地,所述方法还包括:
当所述变化后的配置内容的大小小于所述预设阈值时,直接将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
可选地,所述方法在接收客户端针对所有订阅配置发出的配置更新获取请求之前还包括:
从配置中心数据库中查询各个配置的关键字和配置内容;
将查询到的所述配置的关键字和配置内容保存至所述本地文件中。
可选地,所述方法还包括:
当接收到配置中心管理端发出的更新提醒后,重新从所述配置中心数据库中查询所述更新提醒中包括的关键字对应的配置内容;
比较查询到的所述配置内容与所述本地文件中保存的所述关键字对应的配置内容是否一致;
当两者不一致时,按照查询到的所述配置内容更新所述本地文件。
可选地,所述请求中包括所述客户端微服务所有订阅配置的关键字列表和每个所述关键字对应的配置MD5信息,所述从本地文件中查询所述关键字对应的配置内容是否发生变化包括:从所述本地文件中查询所述关键字列表
中每个所述关键字对应的配置MD5信息,判断所查询到的所述配置MD5信息
与所述请求中的所述配置MD5信息是否一致,当有不一致的配置MD5信息时,判断有配置内容发生变化。
为实现上述目的,本申请实施例还提供一种配置获取系统,所述系统包括:
接收模块,用于接收客户端针对所有订阅配置发出的配置更新获取请求,所述请求中包括所述配置的关键字和配置内容;
查询模块,用于从本地文件中查询所述关键字对应的配置内容是否发生变化;
返回模块,用于当有配置内容发生变化时,将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
为实现上述目的,本申请实施例还提供一种电子装置,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的配置获取程序,所述配置获取程序被所述处理器执行时实现如上述的配置获取方法。
为实现上述目的,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有配置获取程序,所述配置获取程序被处理器执行时实现如上述的配置获取方法。
本申请实施例提出的配置获取方法、系统、电子装置及计算机可读存储介质,能够将客户端对服务端的比较请求和查询请求合二为一,通过一次请求就获取到发生变化的配置的关键字和变化后的具体配置内容,减少客户端与服务端交互的请求次数,提高配置更新的效率,降低客户端从服务端获取配置更新的成本,也避免了现有技术方案中多次请求可能转发到两台不同的服务器上而导致的数据不一致问题。
附图说明
图1为本申请第一实施例提出的一种配置中心系统的应用环境架构图;
图2为本申请第二实施例提出的一种配置获取方法的流程图;
图3为本申请第三实施例提出的一种配置获取方法的流程图;
图4为本申请第四实施例提出的一种配置获取方法的流程图;
图5为本申请第四实施例提出的所述配置获取方法的另一种形式的流程图;
图6为本申请第五实施例提出的一种电子装置的硬件架构示意图;
图7为本申请第六实施例提出的一种配置获取系统的模块示意图;
图8为本申请第七实施例提出的一种配置获取系统的模块示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
实施例一
请参阅图1,图1为本申请第一实施例提出的一种配置中心系统的应用环境架构图。本申请可应用于包括,但不仅限于客户端2、服务端4、配置中心数据库6、配置中心管理端8的应用环境中。其中,所述配置中心系统包括所述服务端4、配置中心数据库6和配置中心管理端8。
其中,所述客户端2为SDK客户端,用于通过长轮训的方式来向服务端4获取配置的更新情况。所述客户端2可以为PC(Personal Computer,个人电脑)、手机、平板电脑、便携计算机、可穿戴设备等终端设备,也可以是所述配置中心外的其他服务器。
所述服务端4为配置中心服务器,用于为所述客户端2提供更新的配置信息和具体配置内容。一般一个所述配置中心可以包括多个服务器。所述服务端4可以是机架式服务器、刀片式服务器、塔式服务器或机柜式服务器等计算设备,可以是独立的服务器,也可以是多个服务器所组成的服务器集群。
所述配置中心管理端8用于向用户提供配置中心管理页面,用户登录所述配置中心管理页面后,可以设置各个配置的关键字(Key)及配置内容(Value),以及更新Value的值。所述Value可以是所述配置的MD5信息。当用户新建Key或Value或者更新Value之后,所述配置中心管理端8会将所述Key或Value更新到所述配置中心数据库6(Mysql数据库)中。所述配置中心数据库6用于保存各个配置的Key和Value。
当用户在所述配置中心管理页面对新建的Key或Value或者更新的Value进行“发布”操作后,所述配置中心管理端8会向所述配置中心的所有服务端4发出更新提醒,以通知所述服务端4某个Key(对应的Value)发生了变化。
所述服务端4基于所述更新提醒中的所述Key从所述数据库中获取对应的Value,并更新至本地文件中。所述服务端4还用于接收所述客户端2发出的配置更新获取请求,所述请求中包括所述配置的Key和Value。所述服务端4从所述本地文件中查询所述Key对应的Value是否发生变化。当有Value发生变化时,将发生变化的配置对应的所述Key和变化后的Value同时返回给所述客户端2。
所述配置中心数据库6、配置中心管理端8、服务端4和客户端2之间通过有线或无线网络进行通信连接,以进行数据传输和交互。
实施例二
如图2所示,为本申请第二实施例提出的一种配置获取方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。
该方法包括以下步骤:
S100,配置中心管理端接收用户在配置中心管理页面设置的关键字和配置内容,并更新至数据库。
所述配置中心管理端向用户提供配置中心管理页面,用户登录所述配置中心管理页面后,可以设置各个配置的关键字(Key)及配置内容(Value),以及更新Value的值。所述配置内容可以是所述配置的MD5信息。当用户新建Key或Value或者更新Value之后,所述配置中心管理端会将所述Key或Value更新到配置中心数据库中。
S102,所述管理端发布更新提醒至服务端。
当用户在所述配置中心管理页面对新建的Key或Value或者更新的Value进行“发布”操作后,所述配置中心管理端会向所述配置中心的所有服务端发出更新提醒,以通知所述服务端某个Key(对应的Value)发生了变化。所述更新提醒中包括发生更新的配置的关键字。
S104,所述服务端基于所述更新提醒中的所述关键字从所述数据库中获取对应的所述配置内容,并更新至本地文件中。
所述服务端接收到配置中心管理端发出的所述更新提醒后,从所述配置中心数据库中查询所述更新提醒中包括的关键字对应的配置内容。然后比较查询到的所述配置内容与所述本地文件中保存的所述关键字对应的配置内容是否一致。当两者不一致时,按照查询到的所述配置内容更新所述本地文件,以保证所述本地文件中保存的是最新内容。
S106,接收客户端发出的配置更新获取请求。
在本实施例中,所述客户端通过SLB(Server Load Balancer,服务器负载均衡)网关采用长轮训机制对所述服务端发出的所述请求。所述请求中包括所述配置的关键字和配置内容。
例如,所述客户端采用30秒长轮训机制,向服务端发送包含微服务所有配置的Key列表和对应配置MD5信息的请求。
S108,从所述本地文件中查询所述关键字对应的配置内容是否发生变化。
服务端接收到所述请求后,根据所述请求中的关键字,从本地文件中查询所述关键字和对应的配置内容,然后比较所述请求中的所述关键字对应的配置内容与所述本地文件中所述关键字对应的配置内容是否一致。当不一致时,则表示该关键字对应的配置内容发生了变化,需要返回给客户端。
例如,服务端收到所述请求中的所述Key列表和对应配置MD5信息后,针对所述Key列表从所述本地文件中进行检查,并和所述本地文件中对应的MD5信息进行对比,找出哪些Key(对应的MD5信息)是发生过变化的。
S110,当有配置内容发生变化时,将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
当服务端通过比较判断出所述请求中有一个或多个关键字对应的配置内容发生变化时,从所述本地文件中获取变化后的配置内容,并将发生变化的配置的所述关键字和变化后的内容同时返回给所述客户端。
也就是说,本实施例是直接一次将发生变化的关键字和对应的具体配置内容全部返回给客户端,而不是第一次只返回发生变化的关键字,在收到第二次请求时再返回变化后的具体配置内容。
另外,当所述请求中没有配置内容发生变化时,所述服务端返回空值(NULL)给所述客户端。
在优选实施例中,当有配置内容发生变化时,还可以判断变化后的配置内容的大小是否大于等于预设阈值。当所述变化后的配置内容的大小大于或等于所述预设阈值时,将所述变化后的配置内容进行压缩。
当所述变化后的配置内容的大小大于或等于所述预设阈值时,表示所述变化后的配置内容过大,需要进行压缩才能保证传输效率。在本实施例中,可以采用任意可行的压缩方式对所述变化后的配置内容进行压缩,在此不再赘述。
在压缩完成后,所述服务端将发生变化的配置对应的所述关键字和压缩后的配置内容同时返回给所述客户端。所述客户端通过相应的解压缩操作后,即可得到发生变化的配置的具体配置内容。
当所述变化后的配置内容的大小小于所述预设阈值时,直接将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
本实施例提出的配置获取方法,可以将客户端对服务端的比较请求和查询请求合二为一,通过一次请求就获取到发生变化的配置的关键字和变化后的具体配置内容,减少客户端与服务端交互的请求次数,提高配置更新的效率,降低客户端从服务端获取配置更新的成本,也避免了现有技术方案中两次请求可能转发到两台不同的服务端服务器上而导致的数据不一致问题。另外,如果服务端有大量数据需要返回(变化后的配置内容过大),则对数据进行压缩后再返回,提高配置内容的传输效率。
实施例三
如图3所示,为本申请第三实施例提出的一种配置获取方法的流程图。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。下面以所述服务端4作为执行主体对该方法进行说明。
该方法包括以下步骤:
S200,接收客户端针对所有订阅配置发出的配置更新获取请求。
在本实施例中,所述客户端通过SLB网关采用长轮训机制对所述服务端发出的所述请求。所述请求中包括所述配置的关键字和配置内容。
例如,所述客户端采用30秒长轮训机制,向服务端发送包含微服务所有配置的Key列表和对应配置MD5信息的请求。
S202,从本地文件中查询所述关键字对应的配置内容是否发生变化。
服务端接收到所述请求后,根据所述请求中的关键字,从本地文件中查询所述关键字和对应的配置内容,然后比较所述请求中的所述关键字对应的配置内容与所述本地文件中所述关键字对应的配置内容是否一致。当不一致时,则表示该关键字对应的配置内容发生了变化,需要返回给客户端。
例如,服务端收到所述请求中的所述Key列表和对应配置MD5信息后,针对所述Key列表从所述本地文件中进行检查,并和所述本地文件中对应的MD5信息进行对比,找出哪些Key(对应的MD5信息)是发生过变化的。
值得注意的是,所述服务端每次从配置中心数据库中查询各个配置的关键字和配置内容后,将查询到的所述配置的关键字和配置内容保存至所述本地文件中,以供所述服务端进行对比。
并且当用户在配置中心管理端的配置中心管理页面发布了配置更新时,配置中心管理端会向所述配置中心的各个服务端发出更新提醒,所述更新提醒中包括发生更新的配置的关键字。所述服务端接收到配置中心管理端发出的所述更新提醒后,重新从所述配置中心数据库中查询所述更新提醒中包括的关键字对应的配置内容。然后比较查询到的所述配置内容与所述本地文件中保存的所述关键字对应的配置内容是否一致。当两者不一致时,按照查询到的所述配置内容更新所述本地文件,以保证所述本地文件中保存的是最新内容。
S204,当有配置内容发生变化时,将发生变化的配置的所述关键字和变化后的内容同时返回给所述客户端。
当服务端通过比较判断出所述请求中有一个或多个关键字对应的配置内容发生变化时,从所述本地文件中获取变化后的配置内容,并将发生变化的配置的所述关键字和变化后的内容同时返回给所述客户端。
也就是说,本实施例是直接一次将发生变化的关键字和对应的具体配置内容全部返回给客户端,而不是第一次只返回发生变化的关键字,在收到第二次请求时再返回变化后的具体配置内容。
另外,当所述请求中没有配置内容发生变化时,所述服务端返回空值(NULL)给所述客户端。
本实施例提出的配置获取方法,可以将客户端对服务端的比较请求和查询请求合二为一,通过一次请求就获取到发生变化的配置的关键字和变化后的具体配置内容,减少客户端与服务端交互的请求次数,提高配置更新的效率,降低客户端从服务端获取配置更新的成本,也避免了现有技术方案中两次请求可能转发到两台不同的服务端服务器上而导致的数据不一致问题。
实施例四
如图4所示,为本申请第四实施例提出的一种配置获取方法的流程图。在第四实施例中,所述配置获取方法在上述第三实施例的基础上,还包括步骤S304-S310。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。根据需要,还可以对该流程图中的部分步骤进行添加或删减。
该方法包括以下步骤:
S300,接收客户端针对所有订阅配置发出的配置更新获取请求。
在本实施例中,所述客户端通过SLB网关采用长轮训机制对所述服务端发出的所述请求。所述请求中包括所述配置的关键字和配置内容。
例如,所述客户端采用30秒长轮训机制,向服务端发送包含微服务所有配置的Key列表和对应配置MD5信息的请求。
S302,从本地文件中查询所述关键字对应的配置内容是否发生变化。
服务端接收到所述请求后,根据所述请求中的关键字,从本地文件中查询所述关键字和对应的配置内容,然后比较所述请求中的所述关键字对应的配置内容与所述本地文件中所述关键字对应的配置内容是否一致。当不一致时,则表示该关键字对应的配置内容发生了变化,需要返回给客户端。
例如,服务端收到所述请求中的所述Key列表和对应配置MD5信息后,针对所述Key列表从所述本地文件中进行检查,并和所述本地文件中对应的MD5信息进行对比,找出哪些Key(对应的MD5信息)是发生过变化的。
值得注意的是,所述服务端每次从配置中心数据库中查询各个配置的关键字和配置内容后,将查询到的所述配置的关键字和配置内容保存至所述本地文件中,以供所述服务端进行对比。
并且当用户在配置中心管理端的配置中心管理页面发布了配置更新时,配置中心管理端会向所述配置中心的各个服务端发出更新提醒,所述更新提醒中包括发生更新的配置的关键字。所述服务端接收到配置中心管理端发出的所述更新提醒后,重新从所述配置中心数据库中查询所述更新提醒中包括的关键字对应的配置内容。然后比较查询到的所述配置内容与所述本地文件中保存的所述关键字对应的配置内容是否一致。当两者不一致时,按照查询到的所述配置内容更新所述本地文件,以保证所述本地文件中保存的是最新内容。
S304,当有配置内容发生变化时,判断变化后的配置内容的大小是否大于等于预设阈值。当所述变化后的配置内容的大小大于或等于所述预设阈值时,执行步骤S306-S308。当所述变化后的配置内容的大小小于所述预设阈值时,执行步骤S310。
当服务端通过比较判断出所述请求中有一个或多个关键字对应的配置内容发生变化时,从所述本地文件中获取变化后的配置内容,然后将所述变化后的配置内容的大小与预设阈值进行比较。
S306,将所述变化后的配置内容进行压缩。
当所述变化后的配置内容的大小大于或等于所述预设阈值时,表示所述变化后的配置内容过大,需要进行压缩才能保证传输效率。在本实施例中,可以采用任意可行的压缩方式对所述变化后的配置内容进行压缩,在此不再赘述。
S308,将发生变化的配置对应的所述关键字和压缩后的配置内容同时返回给所述客户端。
在压缩完成后,所述服务端将发生变化的配置对应的所述关键字和压缩后的配置内容同时返回给所述客户端。所述客户端通过相应的解压缩操作后,即可得到发生变化的配置的具体配置内容。
S310,直接将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
当所述变化后的配置内容的大小小于所述预设阈值时,则不需要压缩即可直接返回,也就是将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
另外,当所述请求中没有配置内容发生变化时,所述服务端返回空值(NULL)给所述客户端。
如图5所示,为本实施例提出的所述配置获取方法的另一种形式的流程图。图5中的流程步骤与图4对应的具体内容相类似,在此不再赘述。
本实施例提出的配置获取方法,可以将客户端对服务端的比较请求和查询请求合二为一,通过一次请求就获取到发生变化的配置的关键字和变化后的具体配置内容,减少客户端与服务端交互的请求次数,提高配置更新的效率,降低客户端从服务端获取配置更新的成本,也避免了现有技术方案中两次请求可能转发到两台不同的服务端服务器上而导致的数据不一致问题。另外,如果服务端有大量数据需要返回(变化后的配置内容过大),则对数据进行压缩后再返回,提高配置内容的传输效率。
实施例五
如图6所示,为本申请第五实施例提出一种电子装置20的硬件架构示意图。本实施例中,所述电子装置20可包括,但不仅限于,可通过系统总线相互通信连接的存储器21、处理器22、网络接口23。需要指出的是,图6仅示出了具有组件21-23的电子装置20,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。在本实施例中,所述电子装置20可以是所述服务端4。
所述存储器21至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器21可以是所述电子装置20的内部存储单元,例如该电子装置20的硬盘或内存。在另一些实施例中,所述存储器21也可以是所述电子装置20的外部存储设备,例如该电子装置20上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器21还可以既包括所述电子装置20的内部存储单元也包括其外部存储设备。本实施例中,所述存储器21通常用于存储安装于所述电子装置20的操作系统和各类应用软件,例如配置获取系统60的程序代码等。此外,所述存储器21还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器22在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器22通常用于控制所述电子装置20的总体操作。本实施例中,所述处理器22用于运行所述存储器21中存储的程序代码或者处理数据,例如运行所述配置获取系统60等。
所述网络接口23可包括无线网络接口或有线网络接口,该网络接口23通常用于在所述电子装置20与其他电子设备之间建立通信连接。
实施例六
如图7所示,为本申请第六实施例提出一种配置获取系统60的模块示意图。所述配置获取系统60可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施例各程序模块的功能。
在本实施例中,所述配置获取系统60包括:
接收模块600,用于接收客户端针对所有订阅配置发出的配置更新获取请求。
在本实施例中,所述客户端通过SLB网关采用长轮训机制对所述服务端发出的所述请求。所述请求中包括所述配置的关键字和配置内容。
例如,所述客户端采用30秒长轮训机制,向服务端发送包含微服务所有配置的Key列表和对应配置MD5信息的请求。
查询模块602,用于从本地文件中查询所述关键字对应的配置内容是否发生变化。
接收模块600接收到所述请求后,查询模块602根据所述请求中的关键字,从本地文件中查询所述关键字和对应的配置内容,然后比较所述请求中的所述关键字对应的配置内容与所述本地文件中所述关键字对应的配置内容是否一致。当不一致时,则表示该关键字对应的配置内容发生了变化,需要返回给客户端。
例如,接收模块600收到所述请求中的所述Key列表和对应配置MD5信息后,查询模块602针对所述Key列表从所述本地文件中进行检查,并和所述本地文件中对应的MD5信息进行对比,找出哪些Key(对应的MD5信息)是发生过变化的。
返回模块604,用于当有配置内容发生变化时,将发生变化的配置的所述关键字和变化后的内容同时返回给所述客户端。
当查询模块602通过比较判断出所述请求中有一个或多个关键字对应的配置内容发生变化时,从所述本地文件中获取变化后的配置内容,返回模块604将发生变化的配置的所述关键字和变化后的内容同时返回给所述客户端。
也就是说,本实施例是直接一次将发生变化的关键字和对应的具体配置内容全部返回给客户端,而不是第一次只返回发生变化的关键字,在收到第二次请求时再返回变化后的具体配置内容。
另外,当所述请求中没有配置内容发生变化时,返回模块604返回空值(NULL)给所述客户端。
本实施例提出的配置获取系统,可以将客户端对服务端的比较请求和查询请求合二为一,通过一次请求就获取到发生变化的配置的关键字和变化后的具体配置内容,减少客户端与服务端交互的请求次数,提高配置更新的效率,降低客户端从服务端获取配置更新的成本,也避免了现有技术方案中两次请求可能转发到两台不同的服务端服务器上而导致的数据不一致问题。
实施例七
如图8所示,为本申请第七实施例提出一种配置获取系统60的模块示意图。在本实施例中,所述配置获取系统60除了包括第六实施例中的所述接收模块600、查询模块602、返回模块604之外,还包括判断模块606、压缩模块608。
所述判断模块606,用于当有配置内容发生变化时,判断变化后的配置内容的大小是否大于等于预设阈值。
当查询模块602通过比较判断出所述请求中有一个或多个关键字对应的配置内容发生变化时,从所述本地文件中获取变化后的配置内容,判断模块606将所述变化后的配置内容的大小与预设阈值进行比较。
所述压缩模块608,用于当所述变化后的配置内容的大小大于或等于所述预设阈值时,将所述变化后的配置内容进行压缩。
当所述变化后的配置内容的大小大于或等于所述预设阈值时,表示所述变化后的配置内容过大,需要进行压缩才能保证传输效率。在本实施例中,可以采用任意可行的压缩方式对所述变化后的配置内容进行压缩,在此不再赘述。
所述返回模块604,还用于将发生变化的配置对应的所述关键字和压缩后的配置内容同时返回给所述客户端。
在压缩完成后,所述返回模块604将发生变化的配置对应的所述关键字和压缩后的配置内容同时返回给所述客户端。所述客户端通过相应的解压缩操作后,即可得到发生变化的配置的具体配置内容。
所述返回模块604,还用于当所述变化后的配置内容的大小小于所述预设阈值时,直接将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
当所述变化后的配置内容的大小小于所述预设阈值时,则不需要压缩即可直接返回,也就是将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
本实施例提出的配置获取系统,可以在服务端有大量数据需要返回(变化后的配置内容过大)时,对数据进行压缩后再返回,提高配置内容的传输效率。
实施例八
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有配置获取程序,所述配置获取程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的配置获取方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请实施例的优选实施例,并非因此限制本申请实施例的专利范围,凡是利用本申请实施例说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请实施例的专利保护范围内。

Claims (15)

1.一种配置获取方法,其特征在于,所述方法应用于分布式配置中心系统,所述方法包括:
配置中心管理端接收用户在配置中心管理页面设置的关键字和配置内容,并更新至数据库;
所述管理端发布更新提醒至服务端;
所述服务端基于所述更新提醒中的所述关键字从所述数据库中获取对应的所述配置内容,并更新至本地文件中;
接收客户端发出的配置更新获取请求,所述请求中包括所述配置的所述关键字和所述配置内容;
从所述本地文件中查询所述关键字对应的配置内容是否发生变化;及
当有配置内容发生变化时,将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
2.根据权利要求1所述的配置获取方法,其特征在于,所述方法在有配置内容发生变化时还包括:
判断所述变化后的配置内容的大小是否大于等于预设阈值;
当所述变化后的配置内容的大小大于或等于所述预设阈值时,将所述变化后的配置内容进行压缩;
将发生变化的配置对应的所述关键字和压缩后的配置内容同时返回给所述客户端。
3.根据权利要求2所述的配置获取方法,其特征在于,所述方法还包括:
当所述变化后的配置内容的大小小于所述预设阈值时,直接将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
4.根据权利要求1至3任一项所述的配置获取方法,其特征在于,所述请求中包括所述客户端微服务所有订阅配置的关键字列表和每个所述关键字对应的配置MD5信息,所述从所述本地文件中查询所述关键字对应的配置内容是否发生变化包括:从所述本地文件中查询所述关键字列表中每个所述关键字对应的配置MD5信息,判断所查询到的所述配置MD5信息与所述请求中的所述配置MD5信息是否一致,当有不一致的配置MD5信息时,判断有配置内容发生变化。
5.根据权利要求1至3任一项所述的配置获取方法,其特征在于,所述接收客户端发出的配置更新获取请求包括:
接收所述客户端通过服务器负载均衡SLB网关采用长轮训机制对所述服务端发出的所述请求。
6.一种配置中心系统,其特征在于,所述系统包括:
管理端,用于接收用户在配置中心管理页面设置的关键字和配置内容,并更新至数据库,发布更新提醒至服务端;
所述数据库,用于保存各个配置的所述关键字和所述配置内容;
所述服务端,用于基于所述更新提醒中的所述关键字从所述数据库中获取对应的所述配置内容,并更新至本地文件中;
接收客户端发出的配置更新获取请求,所述请求中包括所述配置的所述关键字和所述配置内容;
从所述本地文件中查询所述关键字对应的配置内容是否发生变化;及
当有配置内容发生变化时,将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
7.一种配置获取方法,应用于配置中心服务端,其特征在于,所述方法包括:
接收客户端针对所有订阅配置发出的配置更新获取请求,所述请求中包括所述配置的关键字和配置内容;
从本地文件中查询所述关键字对应的配置内容是否发生变化;及
当有配置内容发生变化时,将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
8.根据权利要求7所述的配置获取方法,其特征在于,所述方法在有配置内容发生变化时还包括:
判断所述变化后的配置内容的大小是否大于等于预设阈值;
当所述变化后的配置内容的大小大于或等于所述预设阈值时,将所述变化后的配置内容进行压缩;
将发生变化的配置对应的所述关键字和压缩后的配置内容同时返回给所述客户端。
9.根据权利要求8所述的配置获取方法,其特征在于,所述方法还包括:
当所述变化后的配置内容的大小小于所述预设阈值时,直接将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
10.根据权利要求7至9任一项所述的配置获取方法,其特征在于,所述方法在接收客户端针对所有订阅配置发出的配置更新获取请求之前还包括:
从配置中心数据库中查询各个配置的关键字和配置内容;
将查询到的所述配置的关键字和配置内容保存至所述本地文件中。
11.根据权利要求10所述的配置获取方法,其特征在于,所述方法还包括:
当接收到配置中心管理端发出的更新提醒后,重新从所述配置中心数据库中查询所述更新提醒中包括的关键字对应的配置内容;
比较查询到的所述配置内容与所述本地文件中保存的所述关键字对应的配置内容是否一致;
当两者不一致时,按照查询到的所述配置内容更新所述本地文件。
12.根据权利要求7至9任一项所述的配置获取方法,其特征在于,所述请求中包括所述客户端微服务所有订阅配置的关键字列表和每个所述关键字对应的配置MD5信息,所述从本地文件中查询所述关键字对应的配置内容是否发生变化包括:从所述本地文件中查询所述关键字列表中每个所述关键字对应的配置MD5信息,判断所查询到的所述配置MD5信息与所述请求中的所述配置MD5信息是否一致,当有不一致的配置MD5信息时,判断有配置内容发生变化。
13.一种配置获取系统,其特征在于,所述系统包括:
接收模块,用于接收客户端针对所有订阅配置发出的配置更新获取请求,所述请求中包括所述配置的关键字和配置内容;
查询模块,用于从本地文件中查询所述关键字对应的配置内容是否发生变化;
返回模块,用于当有配置内容发生变化时,将发生变化的配置对应的所述关键字和变化后的配置内容同时返回给所述客户端。
14.一种电子装置,其特征在于,所述电子装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的配置获取程序,所述配置获取程序被所述处理器执行时实现如权利要求7至12中任一项所述的配置获取方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有配置获取程序,所述配置获取程序被处理器执行时实现如权利要求1至5或7至12中任一项所述的配置获取方法。
CN202110931388.7A 2021-08-13 2021-08-13 配置获取方法及系统 Active CN113656098B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110931388.7A CN113656098B (zh) 2021-08-13 2021-08-13 配置获取方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110931388.7A CN113656098B (zh) 2021-08-13 2021-08-13 配置获取方法及系统

Publications (2)

Publication Number Publication Date
CN113656098A CN113656098A (zh) 2021-11-16
CN113656098B true CN113656098B (zh) 2024-02-06

Family

ID=78479815

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110931388.7A Active CN113656098B (zh) 2021-08-13 2021-08-13 配置获取方法及系统

Country Status (1)

Country Link
CN (1) CN113656098B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114153526A (zh) * 2021-12-01 2022-03-08 北京百度网讯科技有限公司 基于代理的灰度配置方法、装置、电子设备和介质
CN115348174A (zh) * 2022-08-15 2022-11-15 中国工商银行股份有限公司 热刷新方法、装置、系统、设备、介质和程序产品

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104022894A (zh) * 2014-05-12 2014-09-03 东软熙康健康科技有限公司 集中管理应用配置参数的方法、配置应用参数的方法
CN105069074A (zh) * 2015-07-30 2015-11-18 江苏天联信息科技发展有限公司 策略配置文件处理方法、装置和系统
CN106598633A (zh) * 2015-10-19 2017-04-26 北京国双科技有限公司 配置文件的更新方法、客户端及服务器
CN106990979A (zh) * 2017-01-22 2017-07-28 阿里巴巴集团控股有限公司 一种配置信息更新方法、系统、客户端及服务器
CN109582381A (zh) * 2018-10-12 2019-04-05 中国建设银行股份有限公司 文件型配置信息同步系统、方法及存储介质
CN111045745A (zh) * 2018-10-10 2020-04-21 北京京东金融科技控股有限公司 管理配置信息的方法和系统
CN112883261A (zh) * 2021-01-28 2021-06-01 北京百度网讯科技有限公司 配置数据的推送方法、装置、电子设备和介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104022894A (zh) * 2014-05-12 2014-09-03 东软熙康健康科技有限公司 集中管理应用配置参数的方法、配置应用参数的方法
CN105069074A (zh) * 2015-07-30 2015-11-18 江苏天联信息科技发展有限公司 策略配置文件处理方法、装置和系统
CN106598633A (zh) * 2015-10-19 2017-04-26 北京国双科技有限公司 配置文件的更新方法、客户端及服务器
CN106990979A (zh) * 2017-01-22 2017-07-28 阿里巴巴集团控股有限公司 一种配置信息更新方法、系统、客户端及服务器
CN111045745A (zh) * 2018-10-10 2020-04-21 北京京东金融科技控股有限公司 管理配置信息的方法和系统
CN109582381A (zh) * 2018-10-12 2019-04-05 中国建设银行股份有限公司 文件型配置信息同步系统、方法及存储介质
CN112883261A (zh) * 2021-01-28 2021-06-01 北京百度网讯科技有限公司 配置数据的推送方法、装置、电子设备和介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
中公教育优就业研究院编著.中公教育数字视觉与虚拟交互自学指南:Unity3D从理论到实战.《陕西科学技术出版社》,2020,第367页. *
张亮.数字经济创新驱动与技术赋能丛书 中台落地手记 业务服务化与数据资产化.《机械工业出版社》,2021,第34页. *
李锐,董少英主编.UEP Cloud实训教程.《华南理工大学出版社》,2019,第15页. *

Also Published As

Publication number Publication date
CN113656098A (zh) 2021-11-16

Similar Documents

Publication Publication Date Title
CN108427705B (zh) 电子装置、分布式系统日志查询方法及存储介质
CN110457363B (zh) 基于分布式数据库的查询方法、装置及存储介质
CN113656098B (zh) 配置获取方法及系统
CN110162529B (zh) 一种数据处理方法、业务服务器及数据处理系统
CN108415925B (zh) 电子装置、数据调用日志生成及查询方法及存储介质
CN107682426B (zh) 接口代理方法及应用服务器
CN111291083B (zh) 网页源码数据处理方法、装置及计算机设备
CN101673217B (zh) 一种实现远端程序调用的方法和系统
CN114519082A (zh) 一种数据处理方法和相关装置
CN112052144B (zh) 信息管理方法、装置、电子设备及存储介质
CN107690057B (zh) 会议视频数据交互方法及装置
CN111291207B (zh) 图片存储方法、装置及服务器
CN110377665B (zh) 数据同步方法、装置、电子设备及存储介质
CN115665137A (zh) 一种数据处理方法及装置
CN111680014B (zh) 共享文件的获取方法、装置、电子设备及存储介质
CN111475306B (zh) 微服务节点、异步任务处理方法、系统和存储介质
CN114661762A (zh) 嵌入式数据库的查询方法、装置、存储介质及设备
CN109582680B (zh) 基于新产品开发的业务处理方法、电子装置及可读存储介质
CN110781182A (zh) 校验逻辑的自动编码方法、装置以及计算机设备
CN115543970B (zh) 数据页处理方法、数据页处理装置、电子设备及存储介质
CN112115020B (zh) 一种数据库连接池异常监测方法、装置及计算机设备
CN113778423B (zh) 接口文档生成方法及系统
CN111162988B (zh) 消息分发方法与系统
CN113900959B (zh) 软件测试方法、装置、设备及存储介质
CN113609165B (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