CN103207789B - 应用服务器常量值动态更新方法及系统 - Google Patents

应用服务器常量值动态更新方法及系统 Download PDF

Info

Publication number
CN103207789B
CN103207789B CN201210011866.3A CN201210011866A CN103207789B CN 103207789 B CN103207789 B CN 103207789B CN 201210011866 A CN201210011866 A CN 201210011866A CN 103207789 B CN103207789 B CN 103207789B
Authority
CN
China
Prior art keywords
constant
value
file
change
constant value
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
CN201210011866.3A
Other languages
English (en)
Other versions
CN103207789A (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201210011866.3A priority Critical patent/CN103207789B/zh
Publication of CN103207789A publication Critical patent/CN103207789A/zh
Application granted granted Critical
Publication of CN103207789B publication Critical patent/CN103207789B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种应用服务器常量值动态更新方法,包括:读取并解析硬盘中的常量文件,将其中的数据按照键值对(key‑value)的方式存储到内存中,key表示常量对象,value表示常量值;扫描硬盘中的常量文件,判断常量文件是否发生变化,若变化,则读取变化后的常量文件;并按照key‑value的格式解析,得到变化后的常量对象和常量值;根据变化后的常量对象在内存中查找所有与变化后的常量对象对应的原始常量值;清理内存中查找到的所有与变化后的常量对象对应的原始常量值,并将变化后的常量值载入内存中替换原始常量值。本申请还提供了一种应用服务器常量值动态更新系统。本申请的应用服务器常量值动态更新方法及系统,能够实时更新应用服务器常量值。

Description

应用服务器常量值动态更新方法及系统
技术领域
本申请涉及计算机数据处理技术领域,特别是涉及一种应用服务器常量值动态更新方法及系统。
背景技术
传统的方法,当应用服务器运行的时候,系统中的常量值是固定不变的,只有在应用服务器中断或者重新启动的情况下,人为的修改配置或者数据库的数据然后重新刷新内存,调用数据读取接口才能得到最新的常量值。此种在常量值发生变化时,必须通过应用服务器重启或者中断的情况下才能更新常量值的方法,会影响应用服务器的正常运行,而如果为了不影响应用服务器的正常运行,则无法实时获取到新的常量值,这就会影响使用对应常量值的模块程序获取到最新的数据,可能会导致错误出现。
此外,当应用服务器用于测试环境中时,因为测试环境中可能需要反复修改常量值来实现不同情形的测试,此时可能需要反复的重启或中断应用服务器,会严重的影响测试效率。
发明内容
本申请提供一种应用服务器常量值动态更新方法及系统,以解决应用服务器常量值无法实时更新的问题。
为了解决上述问题,本申请公开了一种应用服务器常量值动态更新方法,包括以下步骤:
读取并解析硬盘中的常量文件,将所述常量文件中的数据按照键值对(key-value)的方式存储到内存中,key表示常量对象,value表示常量值;
扫描硬盘中的常量文件,判断所述常量文件是否发生变化,若变化,则读取所述变化后的常量文件;
按照key-value的格式解析所述变化后的常量文件,得到变化后的常量对象和常量值;
根据所述变化后的常量对象在内存中查找所有与所述变化后的常量对象对应的原始常量值;
清理内存中查找到的所有与所述变化后的常量对象对应的原始常量值,并将所述变化后的常量值载入内存中替换所述原始常量值。
进一步地,所述扫描硬盘中的常量文件包括以下一种或多种:
根据预定频率定时扫描;
监听对常量文件的操作,若有新的操作产生,监听程序发出触发指令来触发扫描;
常量文件被修改后,人为触发扫描。
进一步地,所述判断所述常量文件是否发生变化包括:
比较两次扫描得到的常量文件中相同的常量对象对应的常量值是否发生变化;或
比较两次扫描得到的常量文件的修改时间是否发生变化。
进一步地,所述读取所述变化后的常量文件之后还包括:
判断常量文件是否存在,若存在,则进行下一步骤,反之,则给出错误提示。
为了解决上述问题,本申请还公开了一种应用服务器常量值动态更新系统,包括:
读取模块,用于读取并解析硬盘中的常量文件,将所述常量文件中的数据按照键值对(key-value)的方式存储到内存中,key表示常量对象,value表示常量值;
扫描模块,用于扫描硬盘中的常量文件,判断所述常量文件是否发生变化,若变化,则读取所述变化后的常量文件;
解析模块,用于按照key-value的格式解析所述变化后的常量文件,得到变化后的常量对象和常量值;
查找模块,用于根据所述变化后的常量对象在内存中查找所有与所述变化后的常量对象对应的原始常量值;和
替换模块,用于清理内存中查找到的所有与所述变化后的常量对象对应的原始常量值,并将所述变化后的常量值载入内存中替换所述原始常量值。
进一步地,所述系统还包括:扫描触发模块,用于触发扫描模块进行扫描,所述触发条件包括以下一种或多种:
根据预定频率定时扫描;
监听对常量文件的操作,若有新的操作产生,监听程序发出触发指令来触发扫描;
常量文件被修改后,人为触发扫描。
进一步地,所述扫描模块包括:
常量值比较单元,用于比较两次扫描得到的常量文件中相同的常量对象对应的常量值是否发生变化;或
修改时间比较单元,用于比较两次扫描得到的常量文件的修改时间是否发生变化。
进一步地,所述系统还包括:
判断模块,用于判断常量文件是否存在,若存在,则触发解析模块进行解析,反之,则给出错误提示。
与现有技术相比,本申请包括以下优点:
本申请的应用服务器常量值动态更新方法及系统通过对常量文件的实时扫描来判断常量文件是否发生变化,并将变化后的常量文件的常量值载入内存,替换原始常量值,应用服务器的模块程序可以实时的从内存中获取到更新后的常量值,无需重新启动或中断应用服务器。因此,此种方式可以支持动态修改常量文件,只需要将修改后的常量文件覆盖原始常量文件即可实现。特别的,对于测试环境中,常量文件中的常量值需要经常修改来满足不同的测试条件时,此种方式可以避免反复重启应用服务器,极大的节省了测试时间。
另外,本申请在进行操作时,只对变化后的常量文件进行读取,当常量文件没有发生变化时,则无需读取,因此可以减少从硬盘中读取操作的次数,从而可以减少I/O操作,节省带宽和服务器资源。
当然,实施本申请的任一产品不一定需要同时达到以上所述的所有优点。
附图说明
图1是本申请的应用服务器常量值动态更新方法实施例一的流程图;
图2是本申请的应用服务器常量值动态更新方法实施例二的流程图;
图3是本申请的应用服务器常量值动态更新系统实施例一的结构示意图。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
本申请的应用服务器常量值动态更新方法及系统用于对应用服务器中的常量值进行实时更新。通过实时扫描硬盘中的常量文件,来监测常量文件是否发生变化,将变化后的常量文件中的常量值引入内存并替换原始的常量值,从而实现常量值的动态更新。
参照图1,其示出本申请的一种应用服务器常量值动态更新方法实施例一,包括以下步骤:
步骤101,读取并解析硬盘中的常量文件,将所述常量文件中的数据按照键值对(key-value)的方式存储到内存中,key表示常量对象,value表示常量值。
常量文件放置于应用服务器的发布目录下,应用服务器在启动时会进行初始化操作,自动读取并解析该常量文件,然后将解析到的所有常量数据采用键值对方式即key-value的方式存储于应用服务器的内存(单例静态实例)中。应用服务器中的所有模块程序都是从内存(单例静态实例)中根据常量对象key来取常量值value。
步骤102,扫描硬盘中的常量文件,判断所述常量文件是否发生变化,若变化,则读取所述变化后的常量文件。
扫描硬盘中的常量文件可以定时扫描,例如,预先设定扫描频率,间隔一段时间便进行一次扫描。也可以设置监听程序,当监听到对常量文件有新的操作,例如修改、删除、保存等等操作,则监听程序发出触发指令来触发扫描。还可以人为触发扫描,例如当使用者修改常量文件后,人为的触发扫描。本申请对此并不限值。其中,定时扫描中的频率可以根据实际情况来设定,频率过高,则可能消耗过多的应用服务器资源,影响应用服务器响应速度,频率过少,则可能无法及时实现动态更新。因此,在具体设定时,可以根据历史数据进行分析,一般常量文件发生变化的频率,然后为此来进行设定扫描频率。
判断常量文件是否发生变化通过如下方式:每次扫描后会记录本次常量文件的相关数据,例如常量文件中的常量值、常量文件的属性信息等等。在下一次扫描完成后,通过比较两次扫描得到的常量文件的相关数据来判断常量文件是否发生变化,例如,相同的常量对象所对应的常量值是否发生变化,有或者其他数据是否发生变化等等。优选地,为了节省判断时间和减少比对所需要的数据量,可以采用更为直观的判断方法,即判断常量文件的修改时间,若本次扫描时得到的常量文件的修改时间相对于上次发生了变化,则认为常量文件发生了变化。
步骤103,按照key-value的格式解析所述变化后的常量文件,得到变化后的常量对象和常量值。
当确定常量文件发生变化后,才对常量文件进行解析,若没有发生变化,则无需进行操作,等待下一次扫描,直到发生变化才进行前述操作。采用此种仅在常量文件发生变化时才读取常量文件的方法,可以减少从硬盘中读取数据的次数,从而可以减少I/O操作,节省带宽和服务器资源。
步骤104,根据所述变化后的常量对象在内存中查找所有与所述变化后的常量对象对应的原始常量值。
查找的具体过程为:首先,将变化后的常量对象与内存中存储的所有原始常量对象进行匹配,查找与变化后的常量对象能够匹配上的原始常量对象,该原始常量对象所对应的常量值即为原始常量值。
当变化后的常量对象有多个时,可以按照前述办法,逐一选取常量对象进行循环查找,直到查找到所有变化后的常量对象所对应的原始常量值。
步骤105,清理内存中查找到的所有与所述变化后的常量对象对应的原始常量值,并将所述变化后的常量值载入内存中替换所述原始常量值。
当将变化后的常量值载入内存后,应用服务器中的所有模块程序便可以实时获取到动态更新后的常量值,保证数据的准确性,而且无需重新启动应用服务器。
优选地,参照图2,其示出本申请的应用服务器常量值动态更新方法实施例二,在读取变化后的常量文件时可能会因为常量文件不存在或者读取失败等原因,而出现并没有成功读取变化后的常量文件,为了保证更新的准确性,本申请在实施例一中的步骤103和步骤104之间还包括以下步骤:
步骤201,判断常量文件是否存在,若存在,则进行下一步骤,反之,则给出错误提示。
通过此种方式,可以便于查找问题所在,从而保证应用服务器的正常运转。
下面结合具体实例对前述方法进行详细的说明,假设将此方法应用于生产环境中。应用服务器原先设定的条件为:对账号A的保证金冻结10000人民币,那么可以将账号A和10000人民币作为常量文件,采用key-value的方式在内存中存储。其中,key为账号A,value为10000。当需要修改冻结的保证金额度时,则可以直接修改常量文件中对应的value值,并上传到应用服务器硬盘中对应的位置,例如,将保证金额度修改为20000。此时,应用服务器常量值动态更新系统通过实时扫描,判断出该常量文件发生了变化,便会读取该常量文件,按照key-value的方式解析出变化后的常量值20000和常量对象账号A。然后将常量对象账号A代入内存中进行匹配,可以查找到原始的常量值10000。此时,则可以用变化后的常量值20000来替换原始的常量值10000。应用服务器中对应的模块程序则可以从内存中实时读取到修改后的常量值20000。从而实现了常量值的动态更新,无需重启应用服务器。
参照图3,其示出本申请的一种应用服务器常量值动态更新系统,包括读取模块10、扫描模块20、解析模块30、查找模块40和替换模块50。
读取模块10,用于读取并解析硬盘中的常量文件,将所述常量文件中的数据按照键值对(key-value)的方式存储到内存中,key表示常量对象,value表示常量值。
扫描模块20,用于扫描硬盘中的常量文件,判断所述常量文件是否发生变化,若变化,则读取所述变化后的常量文件。其中,扫描模块20包括常量值比较单元或修改时间比较单元。常量值比较单元用于比较两次扫描得到的常量文件中相同的常量对象对应的常量值是否发生变化。修改时间比较单元用于比较两次扫描得到的常量文件的修改时间是否发生变化。扫描模块20根据前述的比较单元的比较结果来判断常量文件是否发生变化。
解析模块30,用于按照key-value的格式解析所述变化后的常量文件,得到变化后的常量对象和常量值。
查找模块40,用于根据所述变化后的常量对象在内存中查找所有与所述变化后的常量对象对应的原始常量值。
替换模块50,用于清理内存中查找到的所有与所述变化后的常量对象对应的原始常量值,并将所述变化后的常量值载入内存中替换所述原始常量值。
优选地,该系统还包括扫描触发模块,用于触发扫描模块进行扫描,所述触发条件包括以下一种或多种:根据预定频率定时扫描;监听对常量文件的操作,若有新的操作产生,监听程序发出触发指令来触发扫描;常量文件被修改后,人为触发扫描。
优选地,该系统还包括判断模块,用于判断常量文件是否存在,若存在,则触发解析模块30进行解析,反之,则给出错误提示。
前述的应用服务器常量值动态更新方法及系统通过对常量文件的实时扫描来判断常量文件是否发生变化,并将变化后的常量文件的常量值载入内存,替换原始常量值,应用服务器的模块程序可以实时的从内存中获取到更新后的常量值,无需重新启动应用服务器。因此,此种方式可以支持动态修改常量文件,只需要将修改后的常量文件覆盖原始常量文件即可实现。特别的,对于测试环境中,常量文件中的常量值需要经常修改来满足不同的测试条件时,此种方式可以避免反复重启应用服务器,极大的节省了测试时间。
另外,本申请在进行操作时,只对变化后的常量文件进行读取,当常量文件没有发生变化时,则无需读取,因此可以减少从硬盘中读取操作的次数,从而可以减少I/O操作,节省带宽和服务器资源。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本申请所提供的应用服务器常量值动态更新方法及系统进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (6)

1.一种应用服务器常量值动态更新方法,其特征在于,包括以下步骤:
读取并解析硬盘中的常量文件,将所述常量文件中的数据按照键值对key-value的方式存储到内存中,key表示常量对象,value表示常量值;
监听对常量文件的操作,若有新的操作产生,监听程序发出触发指令来触发扫描;
扫描硬盘中的常量文件,判断所述常量文件是否发生变化,若变化,则读取所述变化后的常量文件;
按照key-value的格式解析所述变化后的常量文件,得到变化后的常量对象和常量值;
根据所述变化后的常量对象在内存中查找所有与所述变化后的常量对象对应的原始常量值;
清理内存中查找到的所有与所述变化后的常量对象对应的原始常量值,并将所述变化后的常量值载入内存中替换所述原始常量值。
2.如权利要求1所述的应用服务器常量值动态更新方法,其特征在于,所述判断所述常量文件是否发生变化包括:
比较两次扫描得到的常量文件中相同的常量对象对应的常量值是否发生变化;或
比较两次扫描得到的常量文件的修改时间是否发生变化。
3.如权利要求1至2任一项所述的应用服务器常量值动态更新方法,其特征在于,所述读取所述变化后的常量文件之后还包括:
判断常量文件是否存在,若存在,则进行下一步骤,反之,则给出错误提示。
4.一种应用服务器常量值动态更新系统,其特征在于,包括:
读取模块,用于读取并解析硬盘中的常量文件,将所述常量文件中的数据按照键值对key-value的方式存储到内存中,key表示常量对象,value表示常量值;
扫描触发模块,用于触发扫描模块进行扫描,所述触发条件包括:监听对常量文件的操作,若有新的操作产生,监听程序发出触发指令来触发扫描;
扫描模块,用于扫描硬盘中的常量文件,判断所述常量文件是否发生变化,若变化,则读取所述变化后的常量文件;
解析模块,用于按照key-value的格式解析所述变化后的常量文件,得到变化后的常量对象和常量值;
查找模块,用于根据所述变化后的常量对象在内存中查找所有与所述变化后的常量对象对应的原始常量值;和
替换模块,用于清理内存中查找到的所有与所述变化后的常量对象对应的原始常量值,并将所述变化后的常量值载入内存中替换所述原始常量值。
5.如权利要求4所述的应用服务器常量值动态更新系统,其特征在于,所述扫描模块包括:
常量值比较单元,用于比较两次扫描得到的常量文件中相同的常量对象对应的常量值是否发生变化;或
修改时间比较单元,用于比较两次扫描得到的常量文件的修改时间是否发生变化。
6.如权利要求4至5任一项所述的应用服务器常量值动态更新系统,其特征在于,所述系统还包括:
判断模块,用于判断常量文件是否存在,若存在,则触发解析模块进行解析,反之,则给出错误提示。
CN201210011866.3A 2012-01-16 2012-01-16 应用服务器常量值动态更新方法及系统 Active CN103207789B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210011866.3A CN103207789B (zh) 2012-01-16 2012-01-16 应用服务器常量值动态更新方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210011866.3A CN103207789B (zh) 2012-01-16 2012-01-16 应用服务器常量值动态更新方法及系统

Publications (2)

Publication Number Publication Date
CN103207789A CN103207789A (zh) 2013-07-17
CN103207789B true CN103207789B (zh) 2016-12-14

Family

ID=48755021

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210011866.3A Active CN103207789B (zh) 2012-01-16 2012-01-16 应用服务器常量值动态更新方法及系统

Country Status (1)

Country Link
CN (1) CN103207789B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103929475B (zh) * 2014-03-27 2017-11-24 华为技术有限公司 一种以太网架构的硬盘存储系统及硬盘数据操作方法
CN107463391B (zh) * 2016-06-03 2020-11-10 阿里巴巴集团控股有限公司 任务处理方法、装置及设备
CN106897415B (zh) * 2017-02-21 2019-11-08 北京焦点新干线信息技术有限公司 一种词库的加载方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101179573A (zh) * 2007-10-24 2008-05-14 中兴通讯股份有限公司 一种在线动态更新服务器软件配置信息的实现方法
US7418488B1 (en) * 2004-10-19 2008-08-26 Sun Microsystems, Inc. Network address assignment server with configuration updating capability
CN102314368A (zh) * 2011-09-26 2012-01-11 贵阳朗玛信息技术股份有限公司 更新服务器程序的配置数据的方法及设备

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418488B1 (en) * 2004-10-19 2008-08-26 Sun Microsystems, Inc. Network address assignment server with configuration updating capability
CN101179573A (zh) * 2007-10-24 2008-05-14 中兴通讯股份有限公司 一种在线动态更新服务器软件配置信息的实现方法
CN102314368A (zh) * 2011-09-26 2012-01-11 贵阳朗玛信息技术股份有限公司 更新服务器程序的配置数据的方法及设备

Also Published As

Publication number Publication date
CN103207789A (zh) 2013-07-17

Similar Documents

Publication Publication Date Title
CN107133234B (zh) 缓存数据更新的方法、装置及系统
EP3396555B1 (en) Method and system for automated enterprise testing system
CN102291416A (zh) 一种客户端与服务器端双向同步的方法及系统
CN103164247B (zh) 系统应用自动修复的方法及装置
CN110737682A (zh) 一种缓存操作方法、装置、存储介质和电子设备
CN112612853A (zh) 基于数据库集群的数据处理方法、装置及电子设备
CN104881454A (zh) 参数的更新方法及系统
CN103207789B (zh) 应用服务器常量值动态更新方法及系统
CN102508892A (zh) 一种快速图片预览系统和方法
CN113064625A (zh) 一种带外升级bios的方法、装置、设备及介质
US10387887B2 (en) Bloom filter driven data synchronization
US10686879B2 (en) Replication with adjustable consistency levels
CN113064919B (zh) 数据处理方法、数据存储系统、计算机设备及存储介质
CN115344610A (zh) 两级缓存数据获取方法及装置
CN104104701A (zh) 在线服务的配置更新的方法和系统
CN111385613B (zh) 一种电视系统修复方法、存储介质及应用服务器
CN115858101B (zh) 容器资源视图隔离的方法、装置以及电子设备
US11714898B2 (en) Security scanning of image for virtual machine creation
CN109586994A (zh) 一种整机柜服务器老化测试监控方法及系统
US8805955B2 (en) Proactive caching of remote actions
CN113127443B (zh) 一种更新缓存数据的方法和装置
CN107302605B (zh) 电视代理服务器的配置方法及装置、电视及存储介质
CN103177079A (zh) 一种主题更新的检测方法、终端和服务器
CN111078736A (zh) 一种数据聚合处理方法、装置、终端及存储介质
US11989180B2 (en) Proactive query plan compilation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1183537

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1183537

Country of ref document: HK