CN112965837A - 配置和服务热重载更新方法、装置、计算机设备及存储介质 - Google Patents

配置和服务热重载更新方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN112965837A
CN112965837A CN202110240588.8A CN202110240588A CN112965837A CN 112965837 A CN112965837 A CN 112965837A CN 202110240588 A CN202110240588 A CN 202110240588A CN 112965837 A CN112965837 A CN 112965837A
Authority
CN
China
Prior art keywords
configuration
shared memory
updated
service module
dynamic library
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.)
Granted
Application number
CN202110240588.8A
Other languages
English (en)
Other versions
CN112965837B (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.)
Bank Of Hangzhou
Original Assignee
Bank Of Hangzhou
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 Bank Of Hangzhou filed Critical Bank Of Hangzhou
Priority to CN202110240588.8A priority Critical patent/CN112965837B/zh
Priority claimed from CN202110240588.8A external-priority patent/CN112965837B/zh
Publication of CN112965837A publication Critical patent/CN112965837A/zh
Application granted granted Critical
Publication of CN112965837B publication Critical patent/CN112965837B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

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)
  • Stored Programmes (AREA)

Abstract

本发明涉及配置和服务热重载更新方法、装置、计算机设备及存储介质,该方法包括获取修改的配置,以得到待更新配置;构建新的配置共享内存,并获取配置共享内存关键词;将待更新配置刷入配置共享内存内;将配置共享内存关键词保存至索引共享内存内;获取本地应用的访问请求;获取访问请求所对应的索引共享内存,以得到对应的配置共享内存关键词;判断对应的配置共享内存关键词是否已更新;若对应的配置共享内存关键词已更新,则断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置。本发明实现便于配置的更新以及应用服务集群的运维和更新,操作简单且步骤简单地实现更新应用而不中断服务。

Description

配置和服务热重载更新方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机,更具体地说是指配置和服务热重载更新方法、装置、计算机设备及存储介质。
背景技术
Spring Cloud是微服务***架构的一站式解决方案,Spring Cloud需要启用Spring Config以及第三方MQ(消息队列,Message Queue)产品配合实现配置热更新,选型较重,且没有加密功能,不能设置变更时间点,比如配置下发和生效往往有时间点要求,比如一笔交易处理期间忌讳变更配置,而且Spring Cloud应用服务运行实例里无法做到变更不停服务,只能做到整体冷更应用。
目前为解决这个问题,主流方案是从架构层面通过前置负载均衡器滚动切换实现更新应用而不中断服务,但此方案的自动化要求高、操作复杂、步骤繁多、容易出错,而且Spring Cloud应用打包为一体,无法在运行层次上模块化分解,也就无法单独更新变化的服务模块,缺乏模块化迭代灵活性,尤其当服务程序文件体积庞大时劣势突出。
因此,有必要设计一种新的方法,实现便于配置的更新以及应用服务集群的运维和更新,操作简单且步骤简单地实现更新应用而不中断服务。
发明内容
本发明的目的在于克服现有技术的缺陷,提供配置和服务热重载更新方法、装置、计算机设备及存储介质。
为实现上述目的,本发明采用以下技术方案:配置和服务热重载更新方法,包括:
获取修改的配置,以得到待更新配置;
构建新的配置共享内存,并获取配置共享内存键;
将所述待更新配置刷入所述配置共享内存内;
将所述配置共享内存键保存至索引共享内存内;
获取本地应用的访问请求;
获取所述访问请求所对应的索引共享内存,以得到对应的配置共享内存键;
判断对应的配置共享内存键是否已更新;
若对应的配置共享内存键已更新,则断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置。
其进一步技术方案为:所述将所述待更新配置刷入所述配置共享内存内之前,还包括:
判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致;
若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值不一致,则联动请求注册节点的远程文件传输代理,以获取服务模块动态库对应的文件;
对所述服务模块动态库对应的文件进行文件名的设置,并执行所述将所述待更新配置刷入所述配置共享内存内。
其进一步技术方案为:所述判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致之后,还包括:
若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值一致,则执行所述将所述待更新配置刷入所述配置共享内存内。
其进一步技术方案为:所述断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置之后,还包括:
获取API交易请求;
根据所述API交易请求从配置共享内存内查询交易码对应服务模块动态库;
执行所述服务模块动态库内的业务处理逻辑;
缓存服务模块动态库的打开句柄,以供下次相同的API交易请求时使用。
其进一步技术方案为:所述缓存服务模块动态库的打开句柄之后,还包括:
设定变动事件;
判断所述变动事件是否被触发;
若所述变动事件被触发,则清除所述服务模块动态库的打开句柄。
其进一步技术方案为:所述判断对应的配置共享内存键是否已更新之后,还包括:
若对应的配置共享内存键未更新,则保持本地应用当前连接的配置共享内存,以使本地应用使用对应的配置。
本发明还提供了配置和服务热重载更新装置,包括:
待更新配置获取单元,用于获取修改的配置,以得到待更新配置;
新内存构建单元,用于构建新的配置共享内存,并获取配置共享内存键;
刷入单元,用于将所述待更新配置刷入所述配置共享内存内;
保存单元,用于将所述配置共享内存键保存至索引共享内存内;
访问请求获取单元,用于获取本地应用的访问请求;
键获取单元,用于获取所述访问请求所对应的索引共享内存,以得到对应的配置共享内存键;
判断单元,用于判断对应的配置共享内存键是否已更新;
内存处理单元,用于若对应的配置共享内存键已更新,则断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置。
其进一步技术方案为:还包括:
签名值判断单元,用于判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致;
文件获取单元,用于若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值不一致,则联动请求注册节点的远程文件传输代理,以获取服务模块动态库对应的文件;
文件名设置单元,用于对所述服务模块动态库对应的文件进行文件名的设置,并执行所述将所述待更新配置刷入所述配置共享内存内。
本发明还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法。
本发明还提供了一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现上述的方法。
本发明与现有技术相比的有益效果是:本发明通过构建索引共享内存和配置共享内存的二级结构,将修改的配置同步更新至索引共享内存和配置共享内存内,在本地应用需要使用到修改后的配置时,切换本地应用与配置共享内存的连接关系,无需中断本地应用的服务,实现便于配置的更新以及应用服务集群的运维和更新,操作简单且步骤简单地实现更新应用而不中断服务。
下面结合附图和具体实施例对本发明作进一步描述。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的配置和服务热重载更新方法的应用场景示意图;
图2为本发明实施例提供的配置和服务热重载更新方法的流程示意图;
图3为本发明另一实施例提供的配置和服务热重载更新方法的流程示意图;
图4为本发明另一实施例提供的配置和服务热重载更新方法的流程示意图;
图5为本发明另一实施例提供的配置和服务热重载更新方法的流程示意图;
图6为本发明实施例提供的配置和服务热重载更新装置的示意性框图;
图7为本发明另一实施例提供的配置和服务热重载更新装置的示意性框图;
图8为本发明另一实施例提供的配置和服务热重载更新装置的示意性框图;
图9为本发明另一实施例提供的配置和服务热重载更新装置的示意性框图;
图10为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1和图2,图1为本发明实施例提供的配置和服务热重载更新方法的应用场景示意图。图2为本发明实施例提供的配置和服务热重载更新方法的示意性流程图。该配置和服务热重载更新方法应用于服务器中。该服务器内设置有注册节点、日志节点组成和服务节点,注册节点的注册中心负责统一管理配置,服务节点里的注册代理作为注册中心在服务节点端的代理,启动后向注册中心索要配置。该服务器采用松耦合原则设计,即任何一个节点运行实例挂掉或僵死都不会影响后续正常交易处理,另外,该服务器还与终端进行数据交互,终端内携带有本地应用;另外,该服务器还可以与其他服务进行数据交互。
图2是本发明实施例提供的配置和服务热重载更新方法的流程示意图。如图2所示,该方法包括以下步骤S110至S190。
S110、获取修改的配置,以得到待更新配置。
在本实施例中,配置包括本节点信息、节点中主机信息、交易码信息、服务端节点-客户端节点群-交易码关系信息、应用自定义参数等,还包含有交易往来关系的节点等用于ACL控制的信息。
在最开始时,首先会获取到配置,并构建随机唯一键的配置共享内存,并将获取到的配置刷入到配置共享内存中,构建对外公开键的索引共享内存,并在索引共享内保存配置共享内存键,本地应用通过API(应用程序接口,Application Programming Interface)先打开索引共享内存,得到配置共享内存键,打开配置共享内存,访问其中配置,此过程是需要本地应用连接到对应的配置共享内存,才可以访问其中的配置,并使用该配置。
通过1个索引共享内存和n个配置共享内存的二级构造算法,建立配置的热重载机制,热转连和查询配置逻辑封装在API库提供给本地应用使用。
当注册中心修改了配置后,由于注册代理和注册中心保持心跳长连接,以订阅未来的配置变更事件,注册中心触发批量配置下发到所有相关服务节点的注册代理,由注册代理可以获取到修改的配置,以进行配置的更新。
在本实施例中,待更新配置是指已修改当未更新至配置共享内存以及索引共享内存内的配置。
S120、构建新的配置共享内存,并获取配置共享内存键。
在本实施例中,当存在修改后的配置时,需要针对着该配置构建一个新的配置共享内存,用于供待更新的配置刷入。
S130、将所述待更新配置刷入所述配置共享内存内;
S140、将所述配置共享内存键保存至索引共享内存内。
在本实施例中,每次获取到的配置共享内存键都需要保存至索引共享内存内,索引共享内存是为了本地应用在发起访问请求是可以起到索引的作用,以便于快速查找到对应的配置。
S150、获取本地应用的访问请求。
在本实施例中,访问请求是指本地应用需要访问的配置的请求。
S160、获取所述访问请求所对应的索引共享内存,以得到对应的配置共享内存键。
S170、判断对应的配置共享内存键是否已更新;
S180、若对应的配置共享内存键已更新,则断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置。
在本实施例中,本地应用通过注册代理API使用配置时,注册代理比较索引共享内存中的配置共享内存键是否和上一次获取到的配置共享内存键是否一致,此步骤为了判断本地应用此次所访问的配置是否是待更新配置,如果索引共享内存中的配置共享内存键是否和上一次获取到的配置共享内存键不一致,即访问请求所对应的配置共享关键词发生变化,则说明索引共享内存指向了新的配置共享内存,也就是需要更换当前本地应用所实用的配置,即断开老的配置共享内存,连接新的配置共享内存,使用新配置。
首先借助配置共享内存和索引共享内存构建的二级结构,实现配置的更新,在本地应用所发起的访问请求不涉及到修改的配置时,保持原有的配置共享内存连接关系,当本地应用所发起的访问请求涉及到修改的配置时,则切换配置共享内存的连接,并不需要对本地应用进行中断式更新,采用切换连接的方式实现配置更新至本地应用,实现操作简单且步骤简单地实现更新应用而不中断服务。
S190、若对应的配置共享内存键未更新,则保持本地应用当前连接的配置共享内存,以使本地应用使用对应的配置。
通过1个索引共享内存和n个配置共享内存的二级构造算法,建立配置的热重载机制,热转连和查询配置逻辑封装在注册代理API库提供给应用使用,配置和服务模块的热重载机制优化了分布式框架对内部关键资源的维护管理和下发落地,且在线变更和无感刷新,无需重启应用,极大方便了应用服务集群的运维和更新。
在一实施例中,上述的配置中有一块是应用自定义参数,结构为K-V,由注册中心统一管理和下发给应用使用,可以替代应用本地配置文件管理方式。对于该应用自定义参数有两种维护方式,一是注册中心统一增删改,集群下发;而是服务节点的应用通过注册代理API远程增删改注册中心应用自定义参数,再远程调用注册中心下发指令做集群下发,应用自定义参数还支持对敏感信息的加密处理。应用自定义参数可以由服务节点应用发起变更和触发集群下发,符合有些应用周期性重置密钥需求等场景。
上述的配置和服务热重载更新方法,通过构建索引共享内存和配置共享内存的二级结构,将修改的配置同步更新至索引共享内存和配置共享内存内,在本地应用需要使用到修改后的配置时,切换本地应用与配置共享内存的连接关系,无需中断本地应用的服务,实现便于配置的更新以及应用服务集群的运维和更新,操作简单且步骤简单地实现更新应用而不中断服务。
图3是本发明另一实施例提供的一种配置和服务热重载更新方法的流程示意图。如图3所示,本实施例的配置和服务热重载更新方法包括步骤S210-S320。其中步骤S210-S220与上述实施例中的步骤S110-S120类似,步骤S260-S320与上述实施例中的步骤S130-S190类似,在此不再赘述。下面详细说明本实施例中所增加的步骤S230-S250。
S230、判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致。
在本实施例中,每个服务模块程序文件是一个动态库程序文件,服务节点的通讯服务端平台挂接动态实现不同交易处理,注册代理刷入配置到配置共享内存前,检查配置中的交易码列表的服务模块动态库签名值是否与本地的签名值一致,此处,本地的签名值是指服务模块动态库对应的签名值所在的文件或者服务模块动态库对应的签名值;另外,本实施例中,服务模块动态库签名值采用的是取自于Linux ELF格式的可执行程序文件中的元数据BuildId,该值在构建时由链接器散列出来,可以用来指认程序代码版本,即ElfBuildId值;通过比较服务模块动态库签名值,检查和下发服务模块。服务模块动态库的签名算法由MD5改取Elf BuildId值,性能提高一个数量级。
在本实施例中,服务模块动态库是指各种应用服务所集成的存储库。
S240、若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值不一致,则联动请求注册节点的远程文件传输代理,以获取服务模块动态库对应的文件。
在本实施例中,服务模块动态库对应的文件是指记录有服务模块动态库的签名值的文件。
S250、对所述服务模块动态库对应的文件进行文件名的设置,并执行所述步骤S260。
在本实施例中,如果本地没有记录有服务模块动态库的签名值的文件或者服务模块动态库的签名值不一致,联动请求注册节点的远程文件传输代理索要该文件,并将对应的文件落地成文件名“服务模块名.so.tmp”,最后改名为“服务模块名.so”。
若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值一致,则执行所述步骤S260。
图4是本发明另一实施例提供的一种配置和服务热重载更新方法的流程示意图。如图4所示,本实施例的配置和服务热重载更新方法包括步骤S410-S570。其中步骤S410-S520与上述实施例中的步骤S210-S320类似,在此不再赘述。下面详细说明本实施例中所增加的步骤S530-S560。
S530、获取API交易请求。
在本实施例中,API交易请求是指其它服务节点的通讯客户端API的交易请求。
S540、根据所述API交易请求从配置共享内存内查询交易码对应服务模块动态库。
S550、执行所述服务模块动态库内的业务处理逻辑。
在本实施例中,业务处理逻辑是指业务处理的流程。
S560、缓存服务模块动态库的打开句柄,以供下次相同的API交易请求时使用。
在本实施例中,打开句柄是指打开服务模块动态库的相关指令。
具体地,从配置共享内存中查询交易码对应服务模块动态库,按文件名“服务模块名.so”->“服务模块名.so.tmp”->“服务模块名.so”,最多尝试三次打开,执行里面的业务处理逻辑,处理完后缓存动态库打开句柄,下次相同交易直接使用缓存中的动态库打开句柄,无需再次挂接。
服务模块被注册代理下发落地和通讯服务端平台挂接策略的深度配合,保证程序更新窗口期不出现挂接服务模块动态库失败。服务模块动态库打开句柄缓存大大降低了单笔交易延迟,提高处理性能。
图5是本发明另一实施例提供的一种配置和服务热重载更新方法的流程示意图。如图5所示,本实施例的配置和服务热重载更新方法包括步骤S610-S800。其中步骤S610-S770与上述实施例中的步骤S410-S570类似,在此不再赘述。下面详细说明本实施例中所增加的步骤S530-S570。
S780、设定变动事件。
在本实施例中,变动事件是指关于服务模块动态库文件的写入、改名、删除等事件,主要用于作为清除服务模块动态库的打开句柄的触发条件。
S790、判断所述变动事件是否被触发;
S800、若所述变动事件被触发,则清除所述服务模块动态库的打开句柄。
若所述变动事件没被触发,则执行所述步骤S790。
注册文件***INOTIFY该动态库文件的写、改名、删除等变动事件,一旦事件发生,清除动态库打开句柄缓存,下次挂接调用的就是新版服务模块,INOTIFY是一个Linux特性,它监控文件***操作,比如读取、写入和创建。INOTIFY反应灵敏,用法非常简单,并且比cron任务的繁忙轮询高效得多。通过文件***INOTIFY事件清除缓存,实时变更服务模块。
图6是本发明实施例提供的一种配置和服务热重载更新装置300的示意性框图。如图6所示,对应于以上配置和服务热重载更新方法,本发明还提供一种配置和服务热重载更新装置300。该配置和服务热重载更新装置300包括用于执行上述配置和服务热重载更新方法的单元,该装置可以被配置于服务器中。具体地,请参阅图6,该配置和服务热重载更新装置300包括待更新配置获取单元301、新内存构建单元302、刷入单元306、保存单元307、访问请求获取单元308、键获取单元309、判断单元310以及内存处理单元311。
待更新配置获取单元301,用于获取修改的配置,以得到待更新配置;新内存构建单元302,用于构建新的配置共享内存,并获取配置共享内存键;刷入单元306,用于将所述待更新配置刷入所述配置共享内存内;保存单元307,用于将所述配置共享内存键保存至索引共享内存内;访问请求获取单元308,用于获取本地应用的访问请求;键获取单元309,用于获取所述访问请求所对应的索引共享内存,以得到对应的配置共享内存键;判断单元310,用于判断对应的配置共享内存键是否已更新;内存处理单元311,用于若对应的配置共享内存键已更新,则断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置。
在一实施例中,如图6所示,上述的配置和服务热重载更新装置300还包括保持单元312。
保持单元312,用于若对应的配置共享内存键未更新,则保持本地应用当前连接的配置共享内存,以使本地应用使用对应的配置。
图7是本发明另一实施例提供的一种配置和服务热重载更新装置300的示意性框图。如图7所示,本实施例的配置和服务热重载更新装置300是上述实施例的基础上增加了签名值判断单元303、文件获取单元304以及文件名设置单元305。
签名值判断单元303,用于判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致;若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值一致,则执行所述将所述待更新配置刷入所述配置共享内存内。文件获取单元304,用于若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值不一致,则联动请求注册节点的远程文件传输代理,以获取服务模块动态库对应的文件;文件名设置单元305,用于对所述服务模块动态库对应的文件进行文件名的设置,并执行所述将所述待更新配置刷入所述配置共享内存内。
图8是本发明另一实施例提供的一种配置和服务热重载更新装置300的示意性框图。如图8所示,本实施例的配置和服务热重载更新装置300是上述实施例的基础上增加了交易请求获取单元313、查询单元314、逻辑执行单元315以及缓存单元316。
交易请求获取单元313,用于获取API交易请求;查询单元314,用于根据所述API交易请求从配置共享内存内查询交易码对应服务模块动态库;逻辑执行单元315,用于执行所述服务模块动态库内的业务处理逻辑;缓存单元316,用于缓存服务模块动态库的打开句柄,以供下次相同的API交易请求时使用。
图9是本发明另一实施例提供的一种配置和服务热重载更新装置300的示意性框图。如图9所示,本实施例的配置和服务热重载更新装置300是上述实施例的基础上增加了事件设定单元317、触发判断单元318以及清除单元319。
事件设定单元317,用于设定变动事件;触发判断单元318,用于判断所述变动事件是否被触发;清除单元319,用于若所述变动事件被触发,则清除所述服务模块动态库的打开句柄。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述配置和服务热重载更新装置300和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述配置和服务热重载更新装置300可以实现为一种计算机程序的形式,该计算机程序可以在如图10所示的计算机设备上运行。
请参阅图10,图10是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是服务器,其中,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图10,该计算机设备500包括通过***总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作***5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种配置和服务热重载更新方法。
该处理器502用于提供计算和控制能力,以支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种配置和服务热重载更新方法。
该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下步骤:
获取修改的配置,以得到待更新配置;构建新的配置共享内存,并获取配置共享内存键;将所述待更新配置刷入所述配置共享内存内;将所述配置共享内存键保存至索引共享内存内;获取本地应用的访问请求;获取所述访问请求所对应的索引共享内存,以得到对应的配置共享内存键;判断对应的配置共享内存键是否已更新;若对应的配置共享内存键已更新,则断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置。
在一实施例中,处理器502在实现所述将所述待更新配置刷入所述配置共享内存内步骤之前,还实现如下步骤:
判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致;若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值不一致,则联动请求注册节点的远程文件传输代理,以获取服务模块动态库对应的文件;对所述服务模块动态库对应的文件进行文件名的设置,并执行所述将所述待更新配置刷入所述配置共享内存内。
在一实施例中,处理器502在实现所述判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致步骤之后,还实现如下步骤:
若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值一致,则执行所述将所述待更新配置刷入所述配置共享内存内。
在一实施例中,处理器502在实现所述断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置步骤之后,还实现如下步骤:
获取API交易请求;根据所述API交易请求从配置共享内存内查询交易码对应服务模块动态库;执行所述服务模块动态库内的业务处理逻辑;缓存服务模块动态库的打开句柄,以供下次相同的API交易请求时使用。
在一实施例中,处理器502在实现所述缓存服务模块动态库的打开句柄步骤之后,还实现如下步骤:
设定变动事件;判断所述变动事件是否被触发;若所述变动事件被触发,则清除所述服务模块动态库的打开句柄。
在一实施例中,处理器502在实现所述判断对应的配置共享内存键是否已更新步骤之后,还实现如下步骤:
若对应的配置共享内存键未更新,则保持本地应用当前连接的配置共享内存,以使本地应用使用对应的配置。
应当理解,在本申请实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机***中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。该存储介质存储有计算机程序,其中该计算机程序被处理器执行时使处理器执行如下步骤:
获取修改的配置,以得到待更新配置;构建新的配置共享内存,并获取配置共享内存键;将所述待更新配置刷入所述配置共享内存内;将所述配置共享内存键保存至索引共享内存内;获取本地应用的访问请求;获取所述访问请求所对应的索引共享内存,以得到对应的配置共享内存键;判断对应的配置共享内存键是否已更新;若对应的配置共享内存键已更新,则断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置。
在一实施例中,所述处理器在执行所述计算机程序而实现所述将所述待更新配置刷入所述配置共享内存内步骤之前,还实现如下步骤:
判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致;若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值不一致,则联动请求注册节点的远程文件传输代理,以获取服务模块动态库对应的文件;对所述服务模块动态库对应的文件进行文件名的设置,并执行所述将所述待更新配置刷入所述配置共享内存内。
在一实施例中,所述处理器在执行所述计算机程序而实现所述判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致步骤之后,还实现如下步骤:
若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值一致,则执行所述将所述待更新配置刷入所述配置共享内存内。
在一实施例中,所述处理器在执行所述计算机程序而实现所述断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置步骤之后,还实现如下步骤:
获取API交易请求;根据所述API交易请求从配置共享内存内查询交易码对应服务模块动态库;执行所述服务模块动态库内的业务处理逻辑;缓存服务模块动态库的打开句柄,以供下次相同的API交易请求时使用。
在一实施例中,所述处理器在执行所述计算机程序而实现所述缓存服务模块动态库的打开句柄步骤之后,还实现如下步骤:
设定变动事件;判断所述变动事件是否被触发;若所述变动事件被触发,则清除所述服务模块动态库的打开句柄。
在一实施例中,所述处理器在执行所述计算机程序而实现所述判断对应的配置共享内存键是否已更新步骤之后,还实现如下步骤:
若对应的配置共享内存键未更新,则保持本地应用当前连接的配置共享内存,以使本地应用使用对应的配置。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.配置和服务热重载更新方法,其特征在于,包括:
获取修改的配置,以得到待更新配置;
构建新的配置共享内存,并获取配置共享内存键;
将所述待更新配置刷入所述配置共享内存内;
将所述配置共享内存键保存至索引共享内存内;
获取本地应用的访问请求;
获取所述访问请求所对应的索引共享内存,以得到对应的配置共享内存键;
判断对应的配置共享内存键是否已更新;
若对应的配置共享内存键已更新,则断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置。
2.根据权利要求1所述的配置和服务热重载更新方法,其特征在于,所述将所述待更新配置刷入所述配置共享内存内之前,还包括:
判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致;
若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值不一致,则联动请求注册节点的远程文件传输代理,以获取服务模块动态库对应的文件;
对所述服务模块动态库对应的文件进行文件名的设置,并执行所述将所述待更新配置刷入所述配置共享内存内。
3.根据权利要求2所述的配置和服务热重载更新方法,其特征在于,所述判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致之后,还包括:
若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值一致,则执行所述将所述待更新配置刷入所述配置共享内存内。
4.根据权利要求1至3任一项所述的配置和服务热重载更新方法,其特征在于,所述断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置之后,还包括:
获取API交易请求;
根据所述API交易请求从配置共享内存内查询交易码对应服务模块动态库;
执行所述服务模块动态库内的业务处理逻辑;
缓存服务模块动态库的打开句柄,以供下次相同的API交易请求时使用。
5.根据权利要求4所述的配置和服务热重载更新方法,其特征在于,所述缓存服务模块动态库的打开句柄之后,还包括:
设定变动事件;
判断所述变动事件是否被触发;
若所述变动事件被触发,则清除所述服务模块动态库的打开句柄。
6.根据权利要求1所述的配置和服务热重载更新方法,其特征在于,所述判断对应的配置共享内存键是否已更新之后,还包括:
若对应的配置共享内存键未更新,则保持本地应用当前连接的配置共享内存,以使本地应用使用对应的配置。
7.配置和服务热重载更新装置,其特征在于,包括:
待更新配置获取单元,用于获取修改的配置,以得到待更新配置;
新内存构建单元,用于构建新的配置共享内存,并获取配置共享内存键;
刷入单元,用于将所述待更新配置刷入所述配置共享内存内;
保存单元,用于将所述配置共享内存键保存至索引共享内存内;
访问请求获取单元,用于获取本地应用的访问请求;
键获取单元,用于获取所述访问请求所对应的索引共享内存,以得到对应的配置共享内存键;
判断单元,用于判断对应的配置共享内存键是否已更新;
内存处理单元,用于若对应的配置共享内存键已更新,则断开本地应用当前连接的配置共享内存,并驱使本地应用连接新的配置共享内存,以使本地应用使用对应的配置。
8.根据权利要求7所述的配置和服务热重载更新装置,其特征在于,还包括:
签名值判断单元,用于判断所述待更新配置内的交易码列表的服务模块动态库签名值是否与本地的签名值一致;
文件获取单元,用于若所述待更新配置内的交易码列表的服务模块动态库签名值与本地的签名值不一致,则联动请求注册节点的远程文件传输代理,以获取服务模块动态库对应的文件;
文件名设置单元,用于对所述服务模块动态库对应的文件进行文件名的设置,并执行所述将所述待更新配置刷入所述配置共享内存内。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的方法。
10.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如权利要求1至6中任一项所述的方法。
CN202110240588.8A 2021-03-04 配置和服务热重载更新方法、装置、计算机设备及存储介质 Active CN112965837B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110240588.8A CN112965837B (zh) 2021-03-04 配置和服务热重载更新方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110240588.8A CN112965837B (zh) 2021-03-04 配置和服务热重载更新方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN112965837A true CN112965837A (zh) 2021-06-15
CN112965837B CN112965837B (zh) 2024-08-02

Family

ID=

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114466026A (zh) * 2022-01-05 2022-05-10 杭州网易云音乐科技有限公司 应用程序接口的更新方法、装置、存储介质和计算设备
CN116991452A (zh) * 2023-07-26 2023-11-03 上海合芯数字科技有限公司 在OpenPower架构热更新OPAL功能固件代码的方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139894B1 (en) * 2003-09-12 2006-11-21 Microsoft Corporation System and methods for sharing configuration information with multiple processes via shared memory
CN109343979A (zh) * 2018-09-28 2019-02-15 珠海沙盒网络科技有限公司 一种配置管理方法及***
CN109542635A (zh) * 2018-10-17 2019-03-29 深圳壹账通智能科技有限公司 配置信息更新方法、装置、计算机设备和存储介质
CN109842651A (zh) * 2017-11-27 2019-06-04 ***通信集团上海有限公司 一种业务不间断的负载均衡方法和***

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139894B1 (en) * 2003-09-12 2006-11-21 Microsoft Corporation System and methods for sharing configuration information with multiple processes via shared memory
CN109842651A (zh) * 2017-11-27 2019-06-04 ***通信集团上海有限公司 一种业务不间断的负载均衡方法和***
CN109343979A (zh) * 2018-09-28 2019-02-15 珠海沙盒网络科技有限公司 一种配置管理方法及***
CN109542635A (zh) * 2018-10-17 2019-03-29 深圳壹账通智能科技有限公司 配置信息更新方法、装置、计算机设备和存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114466026A (zh) * 2022-01-05 2022-05-10 杭州网易云音乐科技有限公司 应用程序接口的更新方法、装置、存储介质和计算设备
CN114466026B (zh) * 2022-01-05 2024-05-14 杭州网易云音乐科技有限公司 应用程序接口的更新方法、装置、存储介质和计算设备
CN116991452A (zh) * 2023-07-26 2023-11-03 上海合芯数字科技有限公司 在OpenPower架构热更新OPAL功能固件代码的方法及装置

Similar Documents

Publication Publication Date Title
US11836135B1 (en) Method and system for transparent database query caching
US9971823B2 (en) Dynamic replica failure detection and healing
US9253265B2 (en) Hot pluggable extensions for access management system
US7653913B2 (en) Method and apparatus for creating templates
US8185499B2 (en) System and method for transactional session management
CN101243445B (zh) 数据变更通告
US11442961B2 (en) Active transaction list synchronization method and apparatus
KR20210071942A (ko) 트랜잭션 처리 방법, 장치 및 기기, 그리고 컴퓨터 저장 매체
CN110968603B (zh) 一种数据访问方法及装置
CN112671827B (zh) 一种分布式事务最终一致性方法
CN112751847A (zh) 接口调用请求的处理方法、装置、电子设备及存储介质
US7275250B1 (en) Method and apparatus for correlating events
JP2012146083A (ja) セッション管理システム、セッション管理装置、サーバ装置およびセッション管理方法
CN112965837A (zh) 配置和服务热重载更新方法、装置、计算机设备及存储介质
CN112965837B (zh) 配置和服务热重载更新方法、装置、计算机设备及存储介质
CN113783921A (zh) 创建缓存组件的方法和装置
CN111813501A (zh) 一种数据删除方法、装置、设备及存储介质
CN110765160A (zh) 基于zookeeper的分布式数据缓存方法和***
US20190090120A1 (en) Highly scalable home subscriber server
US7185314B2 (en) Adaptive mechanism for optimally accessing data based upon data access characteristics
US20240146526A1 (en) Management of tenant-specific encryption keys
US20240195617A1 (en) Handling of database encryption key revocation
US12007954B1 (en) Selective forwarding for multi-statement database transactions
US20240106907A1 (en) Entity for implementing a service in a network, application device, and method for executing an operation of a service
Guo et al. Cornus: Atomic Commit for a Cloud DBMS with Storage Disaggregation (Extended Version)

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