一种服务器的控制方法、服务器及计算机存储介质
文献发布时间:2023-06-19 18:49:33
技术领域
本申请涉及计算机技术领域,特别是涉及一种服务器的控制方法、服务器及计算机存储介质。
背景技术
为了保证生产质量,在新版代码投产时出问题,能及时恢复原版代码(旧版代码或老版代码)的运行。现有技术中恢复原版代码的方法包括:配置中心配置回滚开关,并在运行代码中增加开关判断,例如通过if开关判断,进而判断运行代码是新版代码还是原版代码,进而保证在新版代码出现问题时能及切换执行原版代码。但现有技术中需要多个if开关判断,可读性差,难以维护。
发明内容
本申请提供一种服务器的控制方法、服务器及计算机存储介质,以解决现有技术中存在可读性差和代码难以维护的问题。
为了解决上述技术问题,本申请还提供了一种服务器的控制方法,包括:
接收请求信息,所述请求信息包括版本信息和服务名信息;
判断到所述版本信息与预设的版本信息匹配,则判断所述服务名信息是否包括预设的服务名;
判断到所述服务名信息包括所述服务名,则获取与所述版本信息对应的版本号,基于所述版本号和所述服务名查找预设的服务列表,得到与所述版本号和所述服务名对应的实例;
调用并执行与所述实例对应的逻辑代码。
其中,获取与所述版本信息对应的版本号的步骤包括:
判断所述服务器的缓冲存储器是否具有所述版本号;
判断到所述缓冲存储器具有所述版本号,则所述版本信息对应的版本号等于所述缓冲存储器中的版本号。
其中,判断所述服务器的缓冲存储器是否具有所述版本号的步骤包括:
判断到所述缓冲存储器未具有所述版本号,则获取所述版本号的配置信息,基于所述版本号的配置信息得到所述版本号,所述版本号的配置信息包括第一版本号、第二版本号和版本号的白名单。
其中,所述版本信息包括预设版本号,基于所述版本号的配置信息得到所述版本号的步骤包括:
判断所述预设版本号是否为空;
判断到所述预设版本号为空,则将所述第一版本号作为所述版本号。
其中,判断所述版本号是否为空的步骤包括:
判断到所述预设版本号未为空,则判断所述预设版本号是否大于或等于所述第一版本号;
判断到所述预设版本号大于或等于所述第一版本号,则判断所述版本号的白名单是否包括所述预设版本号;
判断到所述版本号的白名单包括所述预设版本号,则将所述预设版本号作为所述版本号。
其中,判断所述版本号的白名单是否包括所述预设版本号的步骤包括:
判断到所述版本号的白名单未包括所述预设版本号,则将所述第一版本号作为所述版本号。
其中,判断所述预设版本号是否大于或等于所述第一版本号的步骤包括:
判断到所述预设版本号小于所述第一版本号,则判断所述预设版本号是否小于所述第二版本号;
判断到所述预设版本号大于或等于所述第二版本号,则将所述预设版本号作为所述版本号。
其中,判断所述预设版本号是否小于所述第二版本号的步骤包括:
判断到所述预设版本号小于所述第二版本号,则判断所述版本号的白名单是否包括所述预设版本号;
判断到所述版本号的白名单未包括所述预设版本号,则将所述第二版本号作为所述版本号。
其中,在基于所述版本号的配置信息得到所述版本号的步骤之后,所述控制方法包括:
在预设的时间内将所述版本号写入所述缓冲存储器。
其中,在基于所述版本号和所述服务名查找预设的服务列表的步骤之前,所述控制方法还包括:
创建所述实例并进行初始化;
将初始化后的所述实例存储至所述服务列表,所述服务列表包括与所述实例对应的所述版本号和所述服务名。
为了解决上述技术问题,本申请还提供了一种服务器,包括相互耦接的存储器和处理器,处理器用于执行存储器中存储的程序指令,以实现上述的控制方法。
为了解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有程序指令,程序指令被处理器执行时实现上述的控制方法。
与现有技术相比,本申请的有益效果是:接收请求信息,判断到请求信息中的版本信息与预设的版本信息匹配,则接着判断请求信息中的服务名信息是否包括预设的服务名,当上述判断都符合时才接着判断版本信息对应的版本号,并基于版本号和服务名查找预设的服务列表,得到与版本号和服务名对应的实例,调用并执行与实例对应的逻辑代码。通过在接收请求信息后先对请求信息的版本信息与服务名信息进行初步判断,能够去除误接收的请求信息,减少服务器的工作量,同时提高服务器的工作效率;同时本申请并不是在运行代码中增加判断开关,而是提供一种控制方法,直接接收请求信息对其进行判断,若运行代码出现问题,则将其进行更换,避免了因过多的判断开关而导致运行代码可读性差,同时也减少了对运行代码的维护难度。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1是本申请提供的控制方法第一实施例的流程示意图;
图2是图1所示的控制方法步骤S4一实施例的具体流程示意图;
图3是图2所示的控制方法步骤S43一实施例的具体流程示意图;
图4是本申请提供的控制方法第二实施例的流程示意图;
图5是本申请提供的服务器的结构示意图;
图6是本申请提供的计算机可读存储介质的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例,例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,图1是本申请提供的控制方法第一实施例的流程示意图。如图1所示,本实施例的控制方法应用于服务器,例如银行服务器,银行服务器提供一应用程序安装于用户端,用户可通过该应用程序向服务器发送请求信息,以判断当前运行的代码是否有问题;具体包括以下步骤:
S1:接收请求信息。
具体的,请求信息可为用户端的应用程序发送的请求信息,也可以是服务器本身发送的请求信息,本申请对此不作限制。请求信息包括版本信息和服务名信息,例如,版本信息可以包括当前应用程序正在运行的代码的版本类型,如代码的版本类型可以为N,可以理解的是,代码的版本类型还可为A、B等;服务器接收该请求信息并对其进行判断,以便决定继续运行代码或是更换其他运行代码。
S2:判断版本信息与预设的版本信息是否匹配。
其中,服务器设置有预设的版本信息,例如预设的版本信息为代码的版本类型为版本类型N。具体的,在接收到请求信息后,服务器会先对接收到的请求信息中的代码的版本类型进行判断。
例如,在服务器接收的请求信息时,服务器判断请求信息的版本信息与预设的版本信息是否匹配,例如服务器判断到版本信息中的代码的版本类型为版本类型N,即请求信息的版本信息与预设的版本信息匹配,则进入步骤S3。若服务器判断到版本信息中的代码的版本类型不是版本信息N,则结束流程。
其中,由于服务器中具有多组对代码的版本类型进行判断的程序,从而实现同时处理多个请求信息;且预设的版本信息为用户提前设置,故每个对代码的版本类型判断的程序对应的版本类型是可由用户进行设置,用户可以将服务器中所有判断的程序都设置为判断同一个版本类型,对相同的代码的版本类型进行判断;也可以将不同判断的程序设置为判断不同的代码的版本类型,实现同时对多种代码的版本类型进行判断;本申请对此不做限制。
通过上述方法,服务器能实现对不同代码的版本类型进行判断,实现了版本类型判断的统一及判断路口的控制,能够减少服务器的误接收率,提高服务器的判断效率。
S3:判断到服务名信息包括预设的服务名。
具体的,服务器对请求信息中的服务名信息进行判断,例如,当请求信息为用户端的应用程序发出时,预设的服务名可以为服务器的第一IP地址,服务器对服务名信息中的第二IP地址进行判断;当判断到第二IP地址与服务器的第一IP地址一致,即,请求信息由服务器所提供的应用程序发出,则进入步骤S4;当判断到第二IP地址与服务器的第一IP地址不一致时,则说明该请求信息为服务器误接收的,则服务器将该请求信息删除,结束流程。通过上述方法,能进一步提高服务器工作效率。在其他实施例中,预设的服务名可以为其他服务器信息,例如预设的服务名为服务器的ID信息。
S4:获取与版本信息对应的版本号,基于版本号与服务名查找预设的服务列表,得到对应的实例。
其中,从请求信息获取与版本信息对应的版本号,即可以从请求信息得到版本号和服务名。服务器基于版本号与服务名查找预设的服务列表,得到对应的实例。
其中,实例为位于服务器和应用程序之间的一层数据管理软件,是服务器访问代码库并调用代码库中代码的通道。
服务列表包括一一对应的版本号与服务名,服务器通过从请求信息中获取的版本号和服务名,基于版本号和服务名从服务列表中查找到与其对应的实例。
S5:调用并执行与实例对应的逻辑代码。
具体的,在步骤S4对请求信息的版本号进行确定,并基于版本号与服务名查找预设的服务列表得到与请求信息对应的实例后,服务器基于该实例,调用与该实例对应的逻辑代码并执行,即寻找到某个应用程序的代码,并决定要运行该应用程序的某一版的代码。
当请求信息的当前的运行代码没问题时,经过步骤S4的版本号判断,寻找到的实例对应的逻辑代码与当前的运行代码一致,替换执行新的逻辑代码与执行当前的运行代码一致,也即判断到当前的运行代码未出现问题,应用程序继续执行当前的运行代码;当请求信息的当前的运行代码出现问题时,在经过步骤S4的版本号判断后,获得版本号与当前的运行代码的版本号不同,即寻找到的实例对应的逻辑代码与当前的运行代码不同,服务器调用并执行寻找到的新的逻辑代码,从而实现运行代码出问题时,及时察觉并对运行代码进行更换。通过上述方法,能有效实现服务器直接接收请求信息对其进行判断,若运行代码出现问题,则将其进行更换,避免了运行代码因设置过多的判断开关而导致可读性差,同时也减少了对运行代码的维护难度。
请参见图2所示,图2是图1所示的控制方法步骤S4一实施例的具体流程示意图。步骤S4中获取与版本信息对应的版本号具体包括以下步骤:
S41:判断服务器的缓冲存储器是否具有对应的版本号。
具体的,服务器根据请求信息中的版本信息查看服务器的缓冲存储器中是否存在对应的版本号,若存在,则进行步骤S42;若不存在,则进行步骤S43。可以理解的是,服务器的缓冲存储器中预先存储有多个能被服务器接受的版本号。
S42:版本信息对应的版本号等于缓冲存储器中的版本号。
服务器判断到缓冲存储器中具有与版本信息对应的版本号,则将缓冲存储器中与版本信息对应的版本号设置为请求信息中的版本号,并根据请求信息的服务名与版本号于服务列表中寻找实例,进入步骤S5。
S43:获取版本号的配置信息,基于版本号的配置信息得到版本号。
具体的,服务器判断到缓冲存储器中不具有与请求信息的版本信息对应的版本号,则需给请求信息赋予一个版本号,此时服务器获取用户预设的版本号配置信息,并基于版本号的配置信息得到版本号。其中,版本号的配置信息包括第一版本号、第二版本号和版本号的白名单。例如,第一版本号可以为最高版本号,设置为N-0;第二版本号可以为最低版本号,设置为N-9;版本号的白名单则是除了最高版本号和最低版本号之外能够被服务器接受的其他版本号,实际可由用户设置,本申请对此不作限定。
请参见图3所示,图3是图2所示的控制方法步骤S43一实施例的具体流程示意图。具体包括以下步骤:
S431:判断预设版本号是否为空。
请求信息中的版本信息可包括预设版本号,服务器可根据预设版本号与版本号的配置信息确定请求信息中的版本号。具体包括以下步骤:
当判断到预设版本号为空时,服务器执行步骤S432。
S432:版本号等于第一版本号。
当判断到预设版本号为空时,服务器便不再进行判断,直接将第一版本号赋予请求信息中的版本号。
当判断到预设版本号不为空时,服务器便执行步骤S433。
S433:判断预设版本号是否大于或等于第一版本号。
判断预设版本号是否大于或等于第一版本号,当判断到预设版本号大于或等于第一版本号,则服务器进入步骤S434。
S434:判断版本号的白名单是否包括预设版本号。
具体的,当判断到版本号的白名单中不包括预设版本号,即说明预设版本号等于第一版本号或大于第一版本号但超出服务器所接受的版本号范围,此时返回步骤S432,将第一版本号赋予请求信息中的版本号;当判断到版本号的白名单包括预设版本号,则说明请求信息中的预设版本号能被服务器所接受,故直接将请求信息中的预设版本号确定为请求信息中的版本号,进入步骤S435:将预设版本号作为请求信息的版本号。
可选的,服务器在步骤S433的判断中,若判断到预设版本号小于第一版本号,则进行步骤S437。
S437:判断预设版本号是否小于第二版本号。
当判断到预设版本号大于或等于第二版本号,则进入步骤S435:版本号等于预设版本号,将请求信息中的预设版本号确定为请求信息中的版本号;当判断到预设版本小于第二版本号时,则服务器进入步骤S438。
S438:判断版本号的白名单是否包括预设版本号。
具体的,当判断到版本号的白名单没有包括预设版本号,即预设版本号小于第二版本号但超出服务器所接受的版本号范围,则进入步骤S439,将第二版本号赋予请求信息的版本号;当判断到版本号的白名单中包括预设版本号,则说明请求信息携带的预设版本号能被服务器所接受,故直接将请求信息中的预设版本号定为请求信息中的版本号,返回步骤S435:将预设版本号作为请求信息的版本号。
完成对请求信息的版本号确认后,进入步骤S436。
S436:在预设的时间内将版本号写入缓冲存储器。
具体的,在预设时间内将版本号写缓冲存储器中,例如在五分钟内将上述步骤判断得到的版本号写入缓冲存储器中,根据请求信息的服务名与版本号于服务列表中寻找实例,进入步骤S5,使得应用程序运行寻找到的逻辑代码;并在五分钟后将该版本号于缓冲存储器中删除,重新接收请求信息并对请求信息中的版本号进行判断。通过上述方法,实现在预设时间间隔对版本号的循环判断,能对运行代码进行实时监控,在运行代码出问题时能及时做出应对,切换到其他运行代码,提高应用程序运行的稳定性。
图4是本申请提供的控制方法第二实施例的流程示意图。如图4所示,在基于版本号和服务名查找预设的服务列表的步骤之前,还包括以下步骤:
S51:创建实例并进行初始化。
可选的,服务器通过数据源工厂获取实例,并将实例初始化,即实例一经获取便可由对应的版本号与服务名找出,且通过实例可找到对应的逻辑代码,即找到服务器判断到的某个应用程序的某个版本的代码。
S52:将初始化的实例存储至服务列表中。
具体的,服务器将初始化后的实例放入缓冲存储器中,形成服务列表,其中,服务列表包括初始化后的实例,还可包括与实例对应的版本号和服务名,能够实现当服务器提供版本号和服务名时,便可在服务列表中提取到对应的实例。将版本号与服务名共同作为实例的提取证明,能够有效减少误提取,保证服务器的稳定性。
其中,实例为服务器访问代码库的通道,服务器可根据版本号和服务名于服务列表中调用对应的实例,并通过该实例访问代码库,提取并执行与该实例对应的逻辑代码。
通过上述步骤,在服务器接收到请求信息时,判断该请求信息是否为符合服务器判断条件,并将不符合判断条件的请求信息删除,能减少服务器的工作量,同时提高服务器的工作效率;获取该请求信息中的服务名,并对该请求信息的版本号进行判断,实现对当前的运行代码有无出现问题进行判断,在运行代码出问题时能有效进行更换,提高服务器的稳定性,并且能有效减少开关的设置,避免了因过多的判断开关而导致代码可读性差,同时也减少了对运行代码的维护难度;且预设时间间隔接收请求信息并再次进行判断,能够实现对运行代码的实时监控。同时,在接收到请求信息后,请求信息的版本类型可由用户进行设置,能够实现对多种不同的版本类型的请求信息进行判断,实现本控制方法的通用性。
为了实现上述的控制方法,本申请还提供了一种服务器,请查阅图5,图5是本申请提供的服务器的结构示意图。
本申请提供的服务器50包括存储器51和处理器52。
具体的,存储器51与处理器52相互耦接,存储器51中存储有程序指令,处理器52用于执行存储器51中的程序指令以实现上述实施例所述的控制方法。
在本申请实施例中,处理器52还可以称为CPU(Central Processing Unit,中央处理单元)。处理器52可能是一种集成电路芯片,具有信号的处理能力。处理器52还可以是通用处理器、数字信号处理器(DSP,Digital Signal Process)、专用集成电路(ASIC,Application Specific Integrated Circuit)、现场可编程门阵列(FPGA,FieldProgrammable Gate Array)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器52也可以是任何常规的处理器等。
本申请还提供了一种计算机可读存储介质,请继续查阅图6,图6是本申请提供的计算机可读存储介质的结构示意图。该计算机可读存储介质60中存储有程序指令61,该程序指令61在被处理器52执行时,用以实现上述实施例的控制方法。
本申请的实施例以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
- 一种数据存储方法、计算机可读存储介质及服务器
- Linux服务器的提示方法、Linux服务器及计算机可读存储介质
- 服务器启动方法、装置、服务器及计算机可读存储介质
- 业务控制方法、业务控制系统、服务器及计算机存储介质
- 一种加密数据共享方法、服务器及计算机可读存储介质
- 终端、服务提供装置和优惠券服务器、具有终端、服务提供装置和优惠券服务器的电子钱包系统、其控制方法、以及记录有计算机程序的非暂态计算机可读存储介质
- 一种数据读取方法、服务器控制设备、服务器及计算机可读存储介质