具体实施方式
本申请实施例提供了一种业务处理方法和基板管理控制器,用于当BMC软件升级或异常时,不影响业务处理。
下面结合附图,对本申请的实施例进行描述。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
本申请可应用于服务器中。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务以及大数据和人工智能平台等基础云计算服务的云服务器。
服务器可因配置或性能不同而产生比较大的差异,可以包括至少一个中央处理器(central processing units,CPU)(例如,至少一个处理器)和存储器,至少一个存储应用程序或数据的存储介质(例如至少一个海量存储设备)。其中,存储器和存储介质可以是短暂存储或持久存储。存储在存储介质的程序可以包括至少一个模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,CPU可以配置为与存储介质通信,在服务器上执行存储介质中的一系列指令操作。服务器还可以包括至少一个电源,至少一个有线或无线网络接口,至少一个输入输出接口,和/或,至少一个操作系统,例如Windows Server,MacOS X,Unix,Linux,FreeBSD,NetWare等等。在一些可行的实现方式中,服务器还可以为云服务器,此处不做限定。
服务器需要响应服务请求并进行处理,提供可靠的服务,因此一般来说服务器应具备承担服务并且保障服务的能力,该服务器需要具备较强的处理能力、高稳定性、高可靠性、高安全性、可扩展性以及可管理性。在本申请实施例中,所述服务器可以是x86服务器,x86服务器又称复杂指令集(complex instruction set computer,CISC)架构服务器,即通常所讲的个人计算机(personal computer,PC)服务器,它是基于PC机体系结构,使用英特尔(intel)或其它兼容x86指令集的处理器芯片和windows操作系统的服务器。
相比较个人电脑,服务器在稳定性、可靠性、安全性、性能、可管理性等方面的都有更高更严酷的要求,因此需要通过BMC来对服务器实现监控和管理。BMC设置在服务器中的独立组件,可以包括精简指令集计算机(reduced instruction set computer,RISC)微处理器(advanced RISC machine,ARM)芯片、随机存取存储器(random access memory,RAM)、快闪存储器(flash memory)等器件。因此,BMC可以不依赖于基本输入输出系统(basicinput output system,BIOS)或服务器中的操作系统(operating system,OS)等,且BMC可以与BIOS、OS交互消息。例如,在大规模的数据中心,服务器的OS中的软件可以与BMC协同工作实现对服务器的集中监控和管理。
其中,BMC可以通过运行BMC软件对服务器的监控和管理。BMC可以通过ARM芯片运行BMC软件,BMC软件的主要功能包括设备信息管理(记录服务器型号、制造商、日期、各部件生成和技术信息等)、服务器状态监控管理(对服务器各部件的温度、电压等健康状态进行检测,例如中央处理器、内存、硬盘、风扇、机框等)、远程控制管理(服务器的开关机、重启、维护、固件更新、系统安装等)、维护管理(日志管理、用户管理、告警管理等)等等。
需要说明的是,BMC中可以运行实时操作系统(realtime operating system,RTOS),BMC可以通过RTOS可以加载相应的程序文件,并运行该程序文件对应的BMC软件。当前,对于BMC软件的升级,可以采用主备区的升级方法。首先,BMC把新的BMC软件加载到备用分区,然后重启BMC,重启后的BMC从备用分区中启动新的BMC软件,从而达到升级BMC软件的效果。即,当BMC软件进行升级时,需要重启BMC,才能使升级后的BMC软件生效。但是,BMC在重启过程中,BMC软件无法继续对服务器进行管控,造成业务中断。或者,当BMC软件发生异常时,BMC软件同样无法对服务器进行管控,也会造成业务中断。
为此,在本申请中,提供了一种业务处理方法,用于BMC,如图1所示,BMC包括第一BMC软件和第二BMC软件,第一BMC软件和第二BMC软件具有相同的运行代码。第一BMC软件处于主状态,第二BMC软件处于备状态,主状态用于指示接收并处理业务消息,备状态用于指示接收但不处理业务消息。首先,BMC确定第一BMC软件进行升级或发生异常,之后,BMC将第二BMC软件配置为主状态,那么,第二BMC软件可以在第一BMC软件处于升级或异常的过程中接收并处理业务消息,从而避免了BMC软件升级或异常对业务处理的影响。
需要说明的是,第一BMC软件和第二BMC软件均有通信接口,用于实现第一BMC软件和第二BMC软件之间的通信,以及第一BMC软件、第二BMC软件和服务器的操作系统之间的通信。需要说明的是,第一BMC软件和第二BMC软件具有相同的运行代码,即具有相同的数据结构,则第一BMC软件和第二BMC软件之间产生的持久化数据可以共用,且第一BMC软件和第二BMC软件之间可以通过交互消息的方式进行数据同步和校验。
在一些实施方式中,第一BMC软件和第二BMC软件可以互为备份,周期性进行数据同步。并且第一BMC软件和第二BMC软件可以配置为不同的状态,第一BMC软件和第二BMC软件基于自身的状态确定对接收到的业务消息采用的处理方式。示例性的,状态包括主状态和备状态,主状态代表接收并处理业务消息,备状态代表接收但不处理业务消息。
在一些应用场景中,第一BMC软件处于主状态,第二BMC软件处于备状态,当第一BMC软件需要升级时,第一BMC软件先和第二BMC软件进行数据同步,然后第一BMC软件切换为备状态,第二BMC软件切换为主状态。此时,当第一BMC软件接收到业务消息时,由于第一BMC软件处于备状态,则第一BMC软件不处理该业务消息;当第二BMC软件接收到业务消息时,由于第二BMC软件处于主状态,则第二BMC软件处理该业务消息。这样,避免了当第一BMC软件进行升级时无法处理业务消息的问题。
当第一BMC软件升级完成,得到升级后的第一BMC软件之后,第二BMC软件和第一BMC软件进行数据同步。可选的,升级后的第一BMC软件可以重新切换为主状态,并重新接收并处理业务消息,第二BMC软件切换为备状态。从而在不影响业务处理的情况下实现了第一BMC软件的平滑升级。
在另一些应用场景中,第一BMC软件处于主状态,第二BMC软件处于备状态。第二BMC软件可以周期性向第一BMC软件发送保活消息,第一BMC软件向第二BMC软件返回保活响应。当第一BMC软件发生异常时,第一BMC软件无法发送保活消息,当第二BMC软件在预设时间内没有接收到第一BMC软件返回的保活响应,则第二BMC软件可以确定第一BMC发生异常。此时,第二BMC可以切换为主状态,从而第二BMC软件接收并处理业务消息。这样,在第一BMC软件发生异常时也不影响业务处理。
可选的,当第一BMC软件的异常修复后,第一BMC软件可以向第二BMC发送保活响应,第二BMC软件和第一BMC软件进行数据同步后,第一BMC软件可以重新切换为主状态,并重新接收并处理业务消息,第二BMC软件切换为备状态。从而在不影响业务处理的情况下实现了第一BMC软件的异常修复。
示例性的,在本申请中,通过实施例一实现了第一BMC软件的平滑升级,能够在升级过程中不影响业务处理。
请参阅图2所示,本申请的实施例一提供的一种业务处理方法主要包括如下步骤:
201、BMC将第一BMC软件配置为主状态。
在一些可能的实现方式中,第一BMC软件上线后,若第一BMC软件是BMC中第一个上线的BMC软件,则BMC可以将第一BMC软件配置为主状态,处于主状态下的第一BMC软件用于处理业务消息。在一些可能的实现方式中,BMC也可以基于第一BMC软件中的运行代码将第一BMC软件配置为主状态。此处不做限定。
示例性的,第一BMC软件中具有一个状态函数,该状态函数的值表示该第一BMC软件所处的状态。示例性的,该状态函数为Z(),Z()的取值可以为0或1,其中,Z()=1表示主状态,Z()=0表示备状态,即第一BMC软件中初始化的Z()的值为1。那么,第一BMC软件接收到业务消息时,首先查看状态函数Z()的值,若Z()=1,即第一BMC软件为主状态时,第一BMC软件可以接收并处理业务消息。
在一些可能的实现方式中,当第一BMC软件被BMC配置为主状态后,BMC可以接收在第一BMC软件设置的对服务器进行管理的配置数据,则第一BMC软件可以基于配置数据接收并处理业务消息。示例性的,配置数据可以包括服务器的启动模式、网络协议(internetprotocol,IP)地址等等。
202、BMC将第二BMC软件配置为备状态。
在一些可能的实现方式中,第二BMC软件上线后,由于第一BMC软件已经被BMC配置为主状态,则BMC可以将第二BMC软件配置为备状态。在一些可能的实现方式中,BMC也可以基于第二BMC软件中的运行代码将第二BMC软件配置为备状态。此处不做限定。
示例性的,第二BMC软件中具有一个状态函数,该状态函数的值表示该第二BMC软件所处的状态。示例性的,该状态函数为Z(),Z()的取值可以为0或1,其中,Z()=1表示主状态,Z()=0表示备状态,即第二BMC软件中初始化的Z()的值为0。那么,第二BMC软件接收到业务消息时,首先查看状态函数Z()的值,若Z()=0,即第二BMC软件为备状态时,第二BMC软件可以接收但不处理业务消息,即丢弃该业务消息。
203、第二BMC软件向第一BMC软件发送第一注册消息。
在一些可能的实现方式中,第二BMC软件可以向第一BMC软件发送第一注册消息,以向第一BMC软件告知第二BMC软件的版本、状态等信息,使得第一BMC软件感知第二BMC软件的存在和状态。在一些可能的实现方式中,第二BMC软件的状态可以通过状态函数的值表示。示例性的,第一注册消息中的状态函数Z()的值为0,表示第二BMC软件的状态为备状态。那么,第一BMC软件通过第一注册消息可以确定第二BMC软件为第一BMC软件的备用BMC软件。
204、第一BMC软件获取升级指令。
在一些可能的实现方式中,BMC可以在接收针对于所述第一BMC软件的升级指令后,通过操作系统向第一BMC软件发送升级指令。在一些可能的实现方式中,该升级指令是BMC通过操作系统主动向第一BMC软件发送的,也可以由第一BMC软件向BMC的操作系统请求的,此处不做限定。
205、第二BMC软件获取升级指令。
在一些可能的实现方式中,BMC也可以在接收针对于所述第一BMC软件的升级指令后,通过操作系统向第二BMC软件发送升级指令。在一些可能的实现方式中,该升级指令是BMC通过操作系统主动向第二BMC软件发送的,也可以由第二BMC软件向BMC的操作系统请求的,此处不做限定。
在本申请实施例中,第二BMC软件接收到升级指令后,第二BMC软件可以检测到第二BMC软件为备状态,则第二BMC软件暂时不执行该升级指令。示例性的,第二BMC软件中具有状态函数,若该状态函数的值为0,表示第二BMC软件为备状态。
206、第二BMC软件和第一BMC软件进行数据同步。
在一些可能的实现方式中,当第二BMC软件获取到升级指令之后,第二BMC软件可以与第一BMC软件进行数据同步。在一些可能的实现方式中,同步数据包括配置数据,或者,同步数据包括配置数据和实时数据,其中,配置数据包括BMC对服务器进行管理的一个或多个参数的值,实时数据包括BMC从服务器的各个器件上获取的管控数据。
需要说明的是,配置数据为在第一BMC软件对服务器进行管理的各种参数的值。例如,第一BMC软件被配置为每间隔预设时长就获取一次硬盘的温度,配置数据可以包括该预设时长。实时数据可以包括第一BMC软件从服务器的各个器件上获取的管控数据。例如,实时数据包括硬盘的温度。
在一些可能的实现方式中,第一BMC软件可以向第二BMC软件发送第一数据同步指令,该第一数据同步指令包括配置数据,或者,该第一数据同步指令包括配置数据和实时数据。若该第一数据同步指令包括配置数据而不包括实时数据,第二BMC软件可以监控服务器的各个器件,以重新获取实时数据。在一些可能的实现方式中,第一BMC软件可以在获取到升级指令后向第二BMC软件发送第一数据同步指令,第一BMC软件也可以周期性向第二BMC软件发送第一数据同步指令,此处不做限定。
在一些可能的实现方式中,第一BMC软件也可以将配置数据缓存在BMC的内存中,那么,第二BMC软件可以从内存中获取配置数据。在一些可能的实现方式中,第二BMC软件可以在获取第一数据同步指令后从内存中获取配置数据,第二BMC软件也可以周期性地从内存中获取配置数据,此处不做限定。在一些可能的实现方式中,当第二BMC软件获取配置数据后,可以从服务器的各个器件中重新获取实时数据。
在一些可能的实现方式中,第二BMC软件中包括运行代码和状态函数,其中运行代码包括多个函数。其中,第二BMC软件的运行代码和第一BMC软件的运行代码相同,即第二BMC软件的运行代码中的多个函数与第一BMC软件的运行代码中的多个函数相同。当第二BMC软件获取配置数据后,可以基于配置数据的多个函数中各个函数的值赋予第二BMC软件的运行代码中的多个函数中的各个函数,使得第二BMC软件的运行代码中的多个函数中的各个函数的值,与第一BMC软件的运行代码中的多个函数中的各个函数的值相同,则第二BMC软件完成了数据同步。
在一些可能的实现方式中,当第二BMC软件完成数据同步后,可以向第一BMC软件发送第一同步完成消息。
207、第一BMC软件向第二BMC软件发送第一升主指令,第一升主指令用于指示第二BMC软件切换为主状态。
在一些可能的实现方式中,当第一BMC软件接收到第二BMC软件发送的第一同步完成消息之后,第一BMC软件即可向第二BMC软件发送第一升主指令。在一些可能的实现方式中,若第一BMC软件向第二BMC软件发送第一数据同步指令,但是未接收到第二BMC软件发送的第一同步完成消息,第一BMC软件可以继续向第二BMC软件发送第一数据同步指令,直到第一BMC软件接收到第二BMC软件发送的第一同步完成消息为止。
在本申请实施例中,第一升主指令用于指示第二BMC软件将状态切换为主状态。示例性的,第一升主指令用于指示第二BMC软件将状态函数Z()的函数值改为1。
208、第二BMC软件基于第一升主指令切换为主状态。
在本申请实施例中,当第二BMC软件接收到的第一升主指令后,第二BMC软件基于第一升主指令将状态切换为主状态。续上述例子,第二BMC软件的状态函数Z()的值表示第二BMC软件的状态,当第二BMC软件接收到第一升主指令时,若第二BMC软件的状态函数Z()的值为0,则第二BMC软件基于第一升主指令将状态函数Z()的值改为1,实现第二BMC软件从备状态切换为主状态。当第二BMC软件从备状态切换为主状态后,第二BMC软件接收到业务消息时,首先查看第二BMC软件的状态,若第二BMC软件为主状态,第二BMC软件可以处理该业务消息。
209、第二BMC软件向第一BMC软件发送第一升主成功消息。
在一些可能的实现方式中,当第二BMC软件切换为主状态后,可以向第一BMC软件发送第一升主成功消息。
210、第一BMC软件基于第一升主成功消息切换为备状态。
在本申请实施例中,当第一BMC软件接收到的第一升主成功消息后,第一BMC软件可以将状态切换为备状态,并停止处理业务消息。续上述例子,第一BMC软件的状态函数Z()的值表示第一BMC软件的状态,当第一BMC软件接收到第一升主成功消息时,第一BMC软件的状态函数Z()的值为1,则第一BMC软件基于第一升主成功消息将状态函数Z()的值改为0,实现第一BMC软件从主状态切换为备状态。当第一BMC软件从主状态切换为备状态后,第一BMC软件接收到业务消息时,首先查看第一BMC软件的状态,若第一BMC软件为备状态,第一BMC软件可以不处理接收到的业务消息,即丢弃该业务消息。
在一些可能的实现方式中,当第一BMC软件向第二BMC软件发送第一升主指令后,第一BMC软件即切换为备状态。在一些可能的实现方式中,当第一BMC软件接收到第二BMC软件发送的第一升主成功消息后,第一BMC软件即可切换为备状态。在一些可能的实现方式中,若第一BMC软件向第二BMC软件发送第一升主指令,但是未接收到第二BMC软件发送的第一升主成功消息,第一BMC软件可以继续向第二BMC软件发送第一升主指令,直到第一BMC软件接收到第二BMC软件发送的第一同步完成消息为止。
211、第一BMC软件执行升级指令。
在本申请实施例中,当第二BMC软件切换为主状态,且第一BMC软件切换为备状态后,第二BMC软件可以处理业务消息,第一BMC软件不再处理业务消息,则第一BMC软件可以调用并执行升级指令,以对第一BMC软件进行升级。
需要说明的是,升级指令用于指示第一BMC软件升级到升级后的第一BMC软件。在一些可能的实现方式中,升级后的第一BMC软件为相对于第一BMC软件的新版本,以克服第一BMC软件中存在缺陷或错误。在一些可能的实现方式中,升级后的第一BMC软件也可以为与第一BMC软件无关的其他BMC软件,用于完全替代第一BMC软件。此处不做限定。
在一些可能的实现方式中,升级后的第一BMC软件上线后,由于第二BMC软件已经被BMC配置为主状态,则BMC可以将升级后的第一BMC软件配置为备状态。
示例性的,升级后的第一BMC软件中具有一个状态函数,该状态函数的值表示该升级后的第一BMC软件所处的状态。示例性的,该状态函数为Z(),Z()的取值可以为0或1,其中,Z()=1表示主状态,Z()=0表示备状态,即升级后的第一BMC软件中初始化的Z()的值为0。那么,升级后的第一BMC软件接收到业务消息时,首先查看状态函数Z()的值,若Z()=0,即升级后的第一BMC软件为备状态时,升级后的第一BMC软件可以接收但不处理业务消息,即丢弃该业务消息。
212、升级后的第一BMC软件向第二BMC软件发送第二注册消息。
在一些可能的实现方式中,当第一BMC软件完成软件升级得到升级后的第一BMC软件后,升级后的第一BMC软件可以向BMC中的其他BMC软件(包括第二BMC软件)广播第二注册消息,以告知升级后的第一BMC软件的版本、状态等信息,使得其他BMC软件(包括第二BMC软件)感知升级后的第一BMC软件的存在和状态。在一些可能的实现方式中,第二BMC软件的状态可以通过状态函数的值表示。示例性的,第二注册消息中的状态函数Z()的值为0,表示升级后的第一BMC软件的状态为备状态。
213、升级后的第一BMC软件进行数据同步。
在一些可能的实现方式中,当升级后的第一BMC软件上线后,可以与第二BMC软件进行数据同步。在一些可能的实现方式中,升级后的第一BMC软件和第二BMC软件进行数据同步的数据包括配置数据。在一些可能的实现方式中,升级后的第一BMC软件和第二BMC软件进行数据同步的数据包括配置数据和实时数据。
在一些可能的实现方式中,第二BMC软件可以向升级后的第一BMC软件发送第二数据同步指令,该第二数据同步指令包括配置数据,或者,该第二数据同步指令包括配置数据和实时数据。若该第二数据同步指令包括配置数据而不包括实时数据,升级后的第一BMC软件可以监控服务器的各个器件,以重新获取实时数据。在一些可能的实现方式中,第二BMC软件可以在接收到第二注册消息后向升级后的第一BMC软件发送第二数据同步指令,第二BMC软件也可以周期性向升级后的第一BMC软件发送第二数据同步指令,此处不做限定。
在一些可能的实现方式中,第二BMC软件也可以将配置数据缓存在BMC的内存中,那么,升级后的第一BMC软件可以从内存中获取配置数据。在一些可能的实现方式中,升级后的第一BMC软件可以在获取第二数据同步指令后从内存中获取配置数据,升级后的第一BMC软件也可以周期性地从内存中获取配置数据,此处不做限定。在一些可能的实现方式中,当升级后的第一BMC软件获取配置数据后,可以从服务器的各个器件中重新获取实时数据。
在一些可能的实现方式中,升级后的第一BMC软件中包括运行代码和状态函数,其中运行代码包括多个函数。其中,升级后的第一BMC软件的运行代码和第二BMC软件的运行代码相同,即升级后的第一BMC软件的运行代码中的多个函数与第二BMC软件的运行代码中的多个函数相同。当升级后的第一BMC软件获取配置数据后,可以基于配置数据的多个函数中各个函数的值赋予升级后的第一BMC软件的运行代码中的多个函数中的各个函数,使得升级后的第一BMC软件的运行代码中的多个函数中的各个函数的值,与第一BMC软件的运行代码中的多个函数中的各个函数的值相同,则升级后的第一BMC软件完成了数据同步。
在一些可能的实现方式中,当升级后的第一BMC软件完成数据同步后,可以向第二BMC软件发送第二同步完成消息。
214、第二BMC软件向升级后的第一BMC软件发送第二升主指令,第二升主指令用于指示第一BMC软件切换为主状态。
在一些可能的实现方式中,当第二BMC软件向升级后的第一BMC软件发送第二数据同步后,第二BMC软件可以向升级后的第一BMC软件发送第二升主指令,以指示升级后的第一BMC软件切换为主状态。
在一些可能的实现方式中,当第二BMC软件接收到升级后的第一BMC软件发送的第二同步完成消息之后,第二BMC软件即可向升级后的第一BMC软件发送第二升主指令。在一些可能的实现方式中,若第二BMC软件向升级后的第一BMC软件发送第二数据同步指令,但是未接收到升级后的第一BMC软件发送的第二同步完成消息,第二BMC软件可以继续向升级后的第一BMC软件发送第二数据同步指令,直到第二BMC软件接收到升级后的第一BMC软件发送的第二同步完成消息为止。
在本申请实施例中,第二升主指令用于指示升级后的第一BMC软件将状态切换为主状态。示例性的,第二升主指令用于指示升级后的第一BMC软件将状态函数Z()的函数值改为1。
215、升级后的第一BMC软件切换为主状态。
在本申请实施例中,当升级后的第一BMC软件接收到的第二升主指令后,升级后的第一BMC软件基于第二升主指令将状态切换为主状态。续上述例子,升级后的第一BMC软件的状态函数Z()的值表示升级后的第一BMC软件的状态,当升级后的第一BMC软件接收到第二升主指令时,若升级后的第一BMC软件的状态函数Z()的值为0,则升级后的第一BMC软件基于第二升主指令将状态函数Z()的值改为1,实现升级后的第一BMC软件从备状态切换为主状态。当升级后的第一BMC软件从备状态切换为主状态后,升级后的第一BMC软件接收到业务消息时,首先查看升级后的第一BMC软件的状态,若升级后的第一BMC软件为主状态,升级后的第一BMC软件可以处理该业务消息。
216、升级后的第一BMC软件向第二BMC软件发送第二升主成功消息。
在一些可能的实现方式中,当升级后的第一BMC软件切换为主状态后,可以向第二BMC软件发送第二升主成功消息。
217、第二BMC软件基于第二升主成功消息切换为备状态。
在本申请实施例中,当第二BMC软件接收到的第二升主成功消息后,第二BMC软件可以将状态切换为备状态,并停止处理业务消息。续上述例子,第二BMC软件的状态函数Z()的值表示第二BMC软件的状态,当第二BMC软件接收到第二升主成功消息时,第二BMC软件的状态函数Z()的值为1,则第二BMC软件基于第二升主成功消息将状态函数Z()的值改为0,实现第二BMC软件从主状态切换为备状态。当第二BMC软件从主状态切换为备状态后,第二BMC软件接收到业务消息时,首先查看第二BMC软件的状态,若第二BMC软件为备状态,第二BMC软件可以不处理接收到的业务消息,即丢弃该业务消息。
在一些可能的实现方式中,当第二BMC软件向升级后的第一BMC软件发送第二升主指令后,第二BMC软件即切换为备状态。在一些可能的实现方式中,当第二BMC软件接收到升级后的第一BMC软件发送的第二升主成功消息后,第二BMC软件即可切换为备状态。在一些可能的实现方式中,若第二BMC软件向升级后的第一BMC软件发送第二升主指令,但是未接收到升级后的第一BMC软件发送的第二升主成功消息,第二BMC软件可以继续向升级后的第一BMC软件发送第二升主指令,直到第二BMC软件接收到升级后的第一BMC软件发送的第二同步完成消息为止。
218、第二BMC软件执行升级指令,得到升级后的第二BMC软件。
在本申请实施例中,当升级后的第一BMC软件切换为主状态,且第二BMC软件切换为备状态后,升级后的第一BMC软件可以处理业务消息,第二BMC软件不再处理业务消息,则第二BMC软件可以调用并执行升级指令,以对第二BMC软件进行升级。
需要说明的是,升级指令用于指示第二BMC软件升级到升级后的第二BMC软件。在一些可能的实现方式中,升级后的第二BMC软件为相对于第二BMC软件的新版本,以克服第二BMC软件中存在缺陷或错误。在一些可能的实现方式中,升级后的第二BMC软件也可以为与第二BMC软件无关的其他BMC软件,用于完全替代第二BMC软件。此处不做限定。
在一些可能的实现方式中,升级后的第二BMC软件上线后,由于升级后的第二BMC软件已经被BMC配置为主状态,则BMC可以将升级后的第二BMC软件配置为备状态。在一些可能的实现方式中,BMC也可以基于升级后的第二BMC软件中的第二运行代码将升级后的第二BMC软件配置为备状态。此处不做限定。
示例性的,升级后的第二BMC软件中具有一个状态函数,该状态函数的值表示该升级后的第二BMC软件所处的状态。示例性的,该状态函数为Z(),Z()的取值可以为0或1,其中,Z()=1表示主状态,Z()=0表示备状态,即升级后的第二BMC软件中初始化的Z()的值为0。那么,升级后的第二BMC软件接收到业务消息时,首先查看状态函数Z()的值,若Z()=0,即升级后的第二BMC软件为备状态时,升级后的第二BMC软件可以接收但不处理业务消息,即丢弃该业务消息。
219、升级后的第二BMC软件向升级后的第一BMC软件发送第三注册消息。
在一些可能的实现方式中,升级后的第二BMC软件上线后,可以向升级后的第一BMC软件发送第三注册消息,以向升级后的第一BMC软件告知升级后的第二BMC软件的版本、状态等信息,使得升级后的第一BMC软件感知升级后的第二BMC软件的存在和状态。在一些可能的实现方式中,状态通过状态函数的值表示。示例性的,第三注册消息中的状态函数Z()的值为0,表示升级后的第二BMC软件的状态为备状态。那么,升级后的第一BMC软件通过第三注册消息可以确定升级后的第二BMC软件为升级后的第一BMC软件的备用BMC软件。
在本申请中,当第一BMC软件升级时,第一BMC软件可以首先向第二BMC软件发送同步数据,然后第一BMC软件再切换为备状态。接收到同步数据后,第二BMC软件可以切换为主状态。那么,当第一BMC软件接收到业务消息时,可以查询到第一BMC软件的状态,由于第一BMC软件处于备状态,则第一BMC软件则不处理该业务消息。当第二BMC软件接收到业务消息时,可以查询到第二BMC软件的状态,由于第二BMC软件处于主状态,则第一BMC软件则处理该业务消息。
那么,在第一BMC软件升级时,第二BMC软件可以继续基于同步数据接收并处理业务消息,无需重启BMC。当第一BMC软件升级完成,得到升级后的第一BMC软件之后,第二BMC软件可以向升级后的第一BMC软件发送同步数据,然后第二BMC软件切换为备状态。接收到同步数据的第一BMC软件可以重新切换为主状态,并重新接收并处理业务消息,从而实现了第一BMC软件到升级后的第一BMC软件的平滑升级。
在本申请实施例中,通过实施例二实现第一BMC软件发生异常时,通过第二BMC软件对用户请求和带内消息不间断处理。
请参阅图3所示,本申请实施例二提供的业务处理方法主要包括如下步骤:
301、BMC将第一BMC软件配置为主状态。
302、BMC将第二BMC软件配置为备状态。
303、第二BMC软件向第一BMC软件发送第一注册消息。
步骤301-303与步骤201-203相同,此处不做赘述。
304、第二BMC软件向第一BMC软件发送保活消息。
在一些可能的实现方式中,保活消息可以为心跳信号,当第二BMC软件向第一BMC软件发送了保活消息后,第二BMC软件即启动定时器。示例性的,第二BMC软件周期性地向第一BMC软件发送保活消息,该保活消息的载荷可以包括1或多个比特,以1个比特为例,该比特可以为0或1,此处不作限定。
305、第一BMC软件向第二BMC软件发送保活响应。
在一些可能的实现方式中,当第一BMC软件接收到保活消息之后,可以向第二BMC软件返回保活响应,以指示第一BMC软件未发生异常。在一些可能的实现方式中,保活响应包括第二BMC软件和第一BMC软件之间的同步数据。在一些可能的实现方式中,保活响应的载荷为0或1,此处不做限定。
306、第二BMC软件和第一BMC软件进行数据同步。
在一些可能的实现方式中,第二BMC软件和第一BMC软件进行数据同步的数据包括配置数据。在一些可能的实现方式中,第二BMC软件和第一BMC软件进行数据同步的数据包括配置数据和实时数据。
需要说明的是,配置数据为在第一BMC软件对服务器进行管理的各种参数的值。例如,第一BMC软件被设置为每间隔预设时长就获取一次硬盘的温度,配置数据可以包括该预设时长。实时数据可以包括第一BMC软件从服务器的各个器件上获取的管控数据。例如,实时数据包括硬盘的温度。
在一些可能的实现方式中,第一BMC软件可以向第二BMC软件发送第一数据同步指令,该第一数据同步指令包括配置数据,或者,该第一数据同步指令包括配置数据和实时数据。若该第一数据同步指令包括配置数据而不包括实时数据,第二BMC软件可以监控服务器的各个器件,以重新获取实时数据。在一些可能的实现方式中,第一BMC软件也可以周期性向第二BMC软件发送第一数据同步指令,此处不做限定。
在一些可能的实现方式中,第一BMC软件也可以将配置数据缓存在BMC的内存中,那么,第二BMC软件可以从内存中获取配置数据。在一些可能的实现方式中,第二BMC软件可以在获取第一数据同步指令后从内存中获取配置数据,第二BMC软件也可以周期性地从内存中获取配置数据,此处不做限定。在一些可能的实现方式中,当第二BMC软件获取配置数据后,可以从服务器的各个器件中重新获取实时数据。
在一些可能的实现方式中,第一BMC软件向第二BMC软件发送的保活响应携带第二BMC软件和第一BMC软件之间同步数据,那么,第二BMC软件可以基于保活响应进行数据同步。在一些可能的实现方式中,若保活响应包括配置数据而不包括实时数据,当第二BMC软件获取配置数据后,可以从服务器的各个器件中重新获取实时数据。
在一些可能的实现方式中,第二BMC软件中包括运行代码和状态函数,其中运行代码包括多个函数。其中,第二BMC软件的运行代码和第一BMC软件的运行代码相同,即第二BMC软件的运行代码中的多个函数与第一BMC软件的运行代码中的多个函数相同。当第二BMC软件获取配置数据后,可以基于配置数据的多个函数中各个函数的值赋予第二BMC软件的运行代码中的多个函数中的各个函数,使得第二BMC软件的运行代码中的多个函数中的各个函数的值,与第一BMC软件的运行代码中的多个函数中的各个函数的值相同,则第二BMC软件完成了数据同步。
在一些可能的实现方式中,当第二BMC软件完成数据同步后,可以向第一BMC软件发送第一同步完成消息。
需要说明的是,步骤306与步骤304~305并无时序上的关系,即步骤306可以在步骤304~305之前,步骤306也可以在步骤304~305之后,此处不做限定。
307、第二BMC软件切换为主状态。
在一些可能的实现方式中,当第二BMC软件向第一BMC软件发送保活消息之后,启动预设时长的定时器,在该定时器结束之前仍未接收到第一BMC软件回复的保活响应,则第二BMC软件确定第一BMC软件已经发生异常。在一些可能的实现方式中,当第二BMC软件向第一BMC软件连续发送若干个保活消息之后,仍未接收到第一BMC软件回复的保活响应,则第二BMC软件确定第一BMC软件已经发生异常。
在本申请实施例中,当第二BMC软件确定第一BMC软件发生异常后,第二BMC软件可以将状态切换为主状态。续上述例子,状态函数Z()的值表示第二BMC软件的状态。当第二BMC软件确定第一BMC软件发生异常时,第二BMC软件的状态函数Z()的值为0,则第二BMC软件将状态函数Z()的值改为1,实现第二BMC软件从备状态切换为主状态。当第二BMC软件从备状态切换为主状态后,第二BMC软件接收到业务消息时,首先查看状态函数Z()的值,若Z()=1,即第二BMC软件为主状态时,第二BMC软件可以基于配置数据处理业务消息。
308、第二BMC软件发出告警。
在一些可能的实现方式中,当第二BMC软件确定第一BMC软件已经发生异常时,第二BMC软件可以向BMC的操作系统发出告警,该告警指示第一BMC软件已经或疑似发生异常,以使得BMC的操作系统可以获知第一BMC软件可能已经发生异常,并对第一BMC软件可能存在的异常进行处理。
在一些可能的实现方式中,第二BMC软件即使确定第一BMC软件已经发生异常,仍然周期性向第一BMC软件发送保活消息。
需要说明的是,步骤308为可选的步骤。即,在一些可能的实现方式中,步骤308可以执行,也可以不执行,此处不做限定。
309、第二BMC软件向第一BMC软件发送保活消息。
在一些可能的实现方式中,当第二BMC软件切换为主状态或发出告警的过程中或之后,第二BMC软件可以继续向第一BMC软件发送保活消息。在一些可能的实现方式中,当第二BMC软件向第一BMC软件发送了保活消息后,第二BMC软件即启动预设时长的定时器。示例性的,第二BMC软件周期性地向第一BMC软件发送保活消息,该保活消息的载荷可以包括1或多个比特,以1个比特为例,该比特可以为0或1,此处不作限定。
在一些可能的实现方式中,保活响应包括第一BMC软件和第二BMC软件进行数据同步的数据。
310、第一BMC软件向第二BMC软件发送保活响应。
在一些可能的实现方式中,当第一BMC软件接收到保活消息之后,可以向第二BMC软件返回保活响应,以指示第一BMC软件的异常已经修复。在一些可能的实现方式中,保活响应的载荷为0或1,此处不做限定。
在一些可能的实现方式中,当第一BMC软件的异常已经修复,第一BMC软件的状态可以为主状态,则第一BMC软件可以继续接收并处理业务消息。示例性的,当第一BMC软件的异常已经修复,第一BMC软件的状态函数Z()的值为1,第一BMC软件接收到业务消息时,首先查看状态函数Z()的值,若Z()=1,即第一BMC软件为主状态时,第一BMC软件则可以接收并处理业务消息。
311、第一BMC软件和第二BMC软件进行数据同步。
在一些可能的实现方式中,第一BMC软件和第二BMC软件进行数据同步的数据包括配置数据。在一些可能的实现方式中,第一BMC软件和第二BMC软件进行数据同步的数据包括配置数据和实时数据。
在一些可能的实现方式中,第二BMC软件可以向第一BMC软件发送第二数据同步指令,该第二数据同步指令包括配置数据,或者,该第二数据同步指令包括配置数据和实时数据。若该第二数据同步指令包括配置数据而不包括实时数据,第一BMC软件可以监控服务器的各个器件,以重新获取实时数据。在一些可能的实现方式中,处于主状态的第二BMC软件也可以周期性向第一BMC软件发送第二数据同步指令,此处不做限定。
在一些可能的实现方式中,第二BMC软件也可以将配置数据缓存在BMC的内存中,那么,第一BMC软件可以从内存中获取配置数据。在一些可能的实现方式中,第一BMC软件可以在获取第二数据同步指令后从内存中获取配置数据,第一BMC软件也可以周期性地从内存中获取配置数据,此处不做限定。在一些可能的实现方式中,当第一BMC软件获取配置数据后,可以从服务器的各个器件中重新获取实时数据。
在一些可能的实现方式中,第二BMC软件向第一BMC软件发送的保活消息中携带第一BMC软件和第二BMC软件进行数据同步的数据,那么,第一BMC软件可以基于保活消息进行数据同步。在一些可能的实现方式中,若保活消息包括配置数据而不包括实时数据,当第一BMC软件获取配置数据后,可以从服务器的各个器件中重新获取实时数据。
在一些可能的实现方式中,第一BMC软件中包括运行代码和状态函数,其中运行代码包括多个函数。其中,第一BMC软件的运行代码和第二BMC软件的运行代码相同,即第一BMC软件的运行代码中的多个函数与第二BMC软件的运行代码中的多个函数相同。当第一BMC软件获取配置数据后,可以基于配置数据的多个函数中各个函数的值赋予第一BMC软件的运行代码中的多个函数中的各个函数,使得第一BMC软件的运行代码中的多个函数中的各个函数的值,与第二BMC软件的运行代码中的多个函数中的各个函数的值相同,则第一BMC软件完成了数据同步。
在一些可能的实现方式中,当第一BMC软件完成数据同步后,可以向第二BMC软件发送第二同步完成消息。
312、第二BMC软件切换为备状态。
在一些可能的实现方式中,当第二BMC软件接收到第一BMC软件发送的保活响应后,第二BMC软件可以将状态切换为备状态。在一些可能的实现方式中,当第二BMC软件向第一BMC软件发送第二数据同步指令后,第二BMC软件可以切换为备状态。在一些可能的实现方式中,当第二BMC软件接收到第一BMC软件发送的第二同步完成消息后,第二BMC软件即可切换为备状态。续上述例子,状态函数Z()的值表示第二BMC软件的状态。当第二BMC软件确定第一BMC软件发生异常时,第二BMC软件的状态函数Z()的值为1,则第二BMC软件将状态函数Z()的值改为0,实现第二BMC软件从主状态切换为备状态。当第二BMC软件从主状态切换为备状态后,第二BMC软件接收到业务消息时,首先查看状态函数Z()的值,若Z()=0,即第二BMC软件为备状态时,第二BMC软件则不再处理业务消息。
在本申请中,第一BMC软件可以向第二BMC软件发送第一数据同步指令,第二BMC软件可以周期性向第一BMC软件发送保活消息,第一BMC软件向第二BMC软件返回保活响应。当第一BMC软件发生异常时,第二BMC软件则无法接收到第一BMC软件返回的保活响应,则第二BMC软件可以确定第一BMC发生异常,则第二BMC可以切换为主状态,第二BMC软件可以接收并处理业务消息。当第一BMC软件的异常已经修复,第一BMC软件可以向第二BMC发送保活响应,那么第二BMC软件可以切换为备状态,第一BMC软件可以获取第二BMC软件发送的第三数据同步指令,第一BMC软件可以基于第三数据同步指令中的配置数据接收并处理业务消息,避免了业务中断的情况。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
请参阅图4所示,本申请的实施例三提供的一种业务处理方法,用于BMC,BMC包括第一BMC软件和第二BMC软件,第一BMC软件和第二BMC软件具有相同的运行代码,该方法主要包括如下步骤:
401、将第一BMC软件配置为主状态,第二BMC软件配置为备状态,处于主状态下的第一BMC软件用于处理业务消息。
402、在接收到针对于第一BMC软件的升级指令,或者检测到第一BMC软件发生异常的情况下,将第二BMC软件配置为主状态,处于主状态下的第二BMC软件用于处理业务消息。
在一些可能的实现方式中,在检测到第一BMC软件的异常已经修复的情况下,将第二BMC软件配置为备状态。
在一些可能的实现方式中,检测到第一BMC软件发生异常包括:向第一BMC软件发送保活消息;在向第一BMC软件发送保活消息的预设时长之后,仍未接收到第一BMC软件返回的保活响应,则检测到第一BMC软件发生异常。
在一些可能的实现方式中,在接收到针对于第一BMC软件的升级指令之后,方法还包括:将第一BMC软件配置为备状态;在将第一BMC软件配置为备状态之后,基于升级指令对第一BMC软件进行升级,得到升级后的第一BMC软件,升级后的第一BMC软件的状态为备状态;将升级后的第一BMC软件配置为主状态。
在一些可能的实现方式中,将第二BMC软件配置为备状态之后,方法还包括:基于升级指令对第二BMC软件进行升级,得到升级后的第二BMC软件,升级后的第二BMC软件的状态为备状态。
在一些可能的实现方式中,方法还包括:在检测到第一BMC软件发生异常的情况下,向BMC的操作系统发送告警消息,告警消息用于指示第一BMC软件发生异常。
在一些可能的实现方式中,将第二BMC软件配置为主状态之前,方法还包括:通过第二BMC软件获取第一BMC软件和第二BMC软件之间的同步数据。
在一些可能的实现方式中,同步数据包括配置数据,或者,同步数据包括配置数据和实时数据;配置数据包括BMC对服务器进行管理的一个或多个参数的值,实时数据包括BMC从服务器的各个器件上获取的管控数据。
在一些可能的实现方式中,通过第二BMC软件获取第一BMC软件和第二BMC软件之间的数据同步包括:向第二BMC软件发送第一数据同步指令,第一数据同步指令包括第一BMC软件和第二BMC软件之间的数据同步。
为便于更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关装置。
请参阅图5所示,本申请实施例提供的一种BMC 500,包括:存储器501和处理器502,其中,
该存储器501中存储有第一BMC软件和第二BMC软件,该第一BMC软件和该第二BMC软件具有相同的运行代码;
该处理器502用于执行以下步骤:
将该第一BMC软件配置为主状态,该第二BMC软件配置为备状态,处于该主状态下的该第一BMC软件用于处理业务消息;
在接收到针对于该第一BMC软件的升级指令,或者检测到该第一BMC软件发生异常的情况下,将该第二BMC软件配置为主状态,处于该主状态下的该第二BMC软件用于处理业务消息。
在一些可能的实现方式中,该处理器502具体用于执行以下步骤:
在检测到所述第一BMC软件的异常已经修复的情况下,将所述第二BMC软件配置为所述备状态。
在一些可能的实现方式中,该处理器502具体用于执行以下步骤:
向所述第一BMC软件发送保活消息;在向所述第一BMC软件发送所述保活消息的预设时长之后,仍未接收到所述第一BMC软件返回的保活响应,则检测到所述第一BMC软件发生异常。
在一些可能的实现方式中,该处理器502具体用于执行以下步骤:
将所述第一BMC软件配置为所述备状态;在将所述第一BMC软件配置为所述备状态之后,基于所述升级指令对所述第一BMC软件进行升级,得到升级后的第一BMC软件,所述升级后的第一BMC软件的状态为所述备状态;将所述升级后的第一BMC软件配置为所述主状态。
在一些可能的实现方式中,该处理器502具体用于执行以下步骤:基于所述升级指令对所述第二BMC软件进行升级,得到升级后的第二BMC软件,所述升级后的第二BMC软件的状态为所述备状态。
在一些可能的实现方式中,该处理器502具体用于执行以下步骤:在检测到所述第一BMC软件发生异常的情况下,向所述BMC的操作系统发送告警消息,所述告警消息用于指示所述第一BMC软件发生异常。
在一些可能的实现方式中,该处理器502具体用于执行以下步骤:通过所述第二BMC软件获取所述第一BMC软件和所述第二BMC软件之间的同步数据。
在一些可能的实现方式中,所述同步数据包括配置数据,或者,所述同步数据包括配置数据和实时数据;所述配置数据包括所述BMC对服务器进行管理的一个或多个参数的值,所述实时数据包括所述BMC从所述服务器的各个器件上获取的管控数据。
在一些可能的实现方式中,该处理器502具体用于执行以下步骤:向所述第二BMC软件发送第一数据同步指令,所述第一数据同步指令包括所述第一BMC软件和所述第二BMC软件之间的所述数据同步。
需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其带来的技术效果与本申请方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储有程序,该程序执行包括上述方法实施例中记载的部分或全部步骤。
接下来介绍本申请实施例提供的另一种通信装置,请参阅图6所示,通信装置600包括:
接收器601、发射器602、处理器603和存储器604。在本申请的一些实施例中,接收器601、发射器602、处理器603和存储器604可通过总线或其它方式连接,其中,图6中以通过总线连接为例。
存储器604可以包括只读存储器和随机存取存储器,并向处理器603提供指令和数据。存储器604的一部分还可以包括非易失性随机存取存储器(non-volatile randomaccess memory,NVRAM)。存储器604存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可包括各种系统程序,用于实现各种基础业务以及处理基于硬件的任务。
处理器603控制通信装置600的操作,处理器603还可以称为中央处理单元(central processing unit,CPU)。具体的应用中,通信装置600的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
上述本申请实施例揭示的方法可以应用于处理器603中,或者由处理器603实现。处理器603可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器603中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器603可以是通用处理器、数字信号处理器(digital signal processing,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器604,处理器603读取存储器604中的信息,结合其硬件完成上述方法的步骤。
接收器601可用于接收输入的数字或字符信息,以及产生与相关设置以及功能控制有关的信号输入,发射器602可包括显示屏等显示设备,发射器602可用于通过外接接口输出数字或字符信息。
本申请实施例中,处理器603,用于执行前述的业务处理方法。
在另一种可能的设计中,当服务器600为芯片时,包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使该终端内的芯片执行上述第一方面任意一项的无线报告信息的发送方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述终端内的位于所述芯片外部的存储单元,如只读存储器(read-onlymemory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,RAM)等。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述方法的程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。