服务器系统和在线软件更新方法

文档序号:6556875阅读:199来源:国知局
专利名称:服务器系统和在线软件更新方法
技术领域
本发明涉及由服务器和多个客户端构成的一般服务器系统的软件更新,尤其涉及通过网络更新服务器和客户端两者的软件的在线软件更新方法。
背景技术
对于通过网络连接的多个处理设备的软件更新,已提出了多种技术。例如,日本专利在先公开No.9-62626提出了执行在线测试的系统,日本专利在先公开No.2002-366361提出了通过网络递送来安装程序的系统。
所提出的这些方法使通过网络执行软件安装和软件更新测试成为可能。但是,在安装和测试之后需要重新启动服务器和客户端的机器、OS(操作系统)或服务。这种重新启动是为了将软件更新应用于服务。如上所述,在传统的系统中,存在软件更新需要重新启动机器、OS和服务,而重新启动会中断服务的问题。
此外,在服务器-客户端系统中,客户端和服务器通过根据预定顺序彼此交换预定的消息来执行处理。软件更新中存在的另一个问题涉及诸如消息格式或顺序之类的接口的变化。问题在于不能只对客户端和服务器中的一个执行软件更新。接口失配是由于只为服务器和客户端中的一个进行软件更新而导致的,其中更新涉及接口变化。在这种涉及接口变化的更新中,需要同时为客户端和服务器两者执行软件更新。即采取以下过程。首先,系统管理者或操作者通过同时停止涉及软件更新的服务器和客户端中的程序来暂停服务。接下来,服务器和客户端两者的软件都被更新。最后,通过同时重新启动服务器和客户端两者中的程序来重新启动服务器和客户端两者的服务。在此过程中,如果大量服务和机器都是软件更新的目标,并且如果软件更新操作中的大量步骤都不是自动化的而是由人手动操作的,则问题会变得更加严重,从而服务被长时间暂停。

发明内容
本发明解决了客户端-服务器系统中的上述问题。本发明的目的是在客户端-服务器系统中提供一种服务器系统和在线软件更新方法,其能够在不长时间暂停服务的情况下更新服务器及其相关的客户端机器的软件,并且能够取消更新。
为实现上述目的,服务器通过网络将新软件递送到每个客户端。在递送新软件之后,服务器通过网络向每个客户端发送从旧软件转换到新软件的通知。每个客户端在存储器上加载接收到的新软件。在从服务器接收到通知时,每个客户端将旧软件切换到新软件。客户端处的转换操作是通过在不中断服务的情况下改写存储器上的地址而在短时间内完成的。在取消更新的情况下,以与转换操作类似的方式执行从新软件到旧软件的复原操作。


当结合附图理解以下详细描述时,将更清楚地看到本发明的以上和其他目的、特征和优点,附图中图1是示出根据本发明的实施例的整体配置的系统图;图2是示出根据本发明的实施例的顺序流程的框图;图3是示出根据本发明实施例的服务器1和客户端21的模块构成的图;图4是根据本发明的实施例解释客户端中用于在应用更新文件的存储器上进行更新操作的图;图5是根据本发明的实施例解释客户端中用于取消对存储器应用的更新的操作的图;图6是根据本发明的实施例示出在软件转换时以及在软件转换期间发生故障时的操作的流程图;以及图7是根据本发明的实施例示出用于在软件转换之后在已被切换的软件中发生故障时复原软件的操作的流程图。
具体实施例方式
现将参考附图详细描述本发明的实施例。
图1是用于说明该实施例的一个配置示例。图1中所示的系统由服务器1和N个客户端21至2N构成。客户端21至2N经由网络连接到服务器1,并且可以与之通信。
注意,服务器1和客户端21至2N分别示出就本发明的在线软件更新处理而言的服务器和客户端之间的角色关系。服务器1是本发明的在线软件更新处理中的服务器,客户端21至2N是本发明的在线软件更新处理中的客户端。对于图1中的系统所提供的普通服务,服务器1和客户端21至2N中的任何一个都可以扮演服务器或客户端的角色。例如,提供初始服务时可以将客户端21和22作为服务器,并且将服务器1和客户端23至2N作为客户端,这些客户端和服务器通过彼此通信来进行处理。可替换地,本实施例中的角色关系可以与初始服务中的角色关系完全吻合。换言之,初始服务中客户端和服务器之间的关系与本发明的操作中客户端和服务器之间的关系无关。
以下描述涉及本发明的操作,并且客户端21至2N分别具有相同配置。此外,假设适当地作出了通信期间服务器和每个客户端之间的确认响应,包括未描述的那些。
图2示出服务器1和客户端之间的通信,以及软件更新期间它们的处理流程。服务器1通过网络向软件更新的各个目标客户端递送分别与每个客户端相对应的新软件文件(步骤S1)。一旦接收到该文件,客户端就加载包括在文件中的新软件并进入等待状态(步骤S2)。注意要更新的软件可以是整个程序、函数、库、驱动程序、补充或数据。
在软件更新的每个目标客户端都已在每个存储器上加载新软件之后,服务器1向每个目标客户端发送转换通知,以便客户端开始应用新软件(步骤S3)。一旦接收到转换通知,每个客户端就在保持服务运行的同时从存储器上的旧软件切换到存储器上的新软件(步骤S4)。在正确地完成转换处理之后,每个客户端向服务器作出响应,以指示该正确完成(步骤S5)。
如果客户端中的任何一个在被应用的新软件中检测到差错或故障,则客户端向服务器1发出故障报告(步骤6和7)。图2示出客户端22检测到故障的情况。
一旦接收到来自客户端的新软件故障报告,服务器1就判断哪些客户端和程序应当复原。应当复原的客户端和程序例如是这样的客户端和程序已为了软件更新向该客户端和程序应用了相同的文件,并且在该客户端和程序中可能发生相同的问题。又例如,它们可能是这样的程序,这种程序与发生故障的程序之间具有接口,从而可能受该程序影响,等等。服务器1向每个已决定复原的客户端发送复原通知,以便这些客户端中的每一个取消新软件并切换到旧软件(步骤S8)。一旦接收到来自服务器1的复原通知,这些客户端中的每一个就在不暂停服务的情况下从存储器上的新软件复原到旧软件。在正确完成复原处理之后,这些客户端中的每一个向服务器作出完成响应(S10)。
图3示出服务器1和客户端21各自的配置。所有客户端21至2N都具有相同配置。
如图3所示,服务器1包括通信单元11、软件更新控制单元12和软件更新信息管理器单元13。
软件更新信息管理单元13管理要递送到各个客户端21至2N的文件,以及每个客户端21至2N的软件更新状态。在递送与每个客户端相对应的新程序的文件之后,软件更新控制单元12向每个客户端发出转换通知。通信单元11将要递送的文件和软件更新控制单元12发出的通知发送到各自的客户端。
在客户端21中,软件更新控制单元212通过通信单元211接收来自服务器1的新程序的文件。软件更新控制单元212将接收到的文件传送到转换处理单元213。转换处理单元213在存储器上加载该文件,作为新程序。当通信单元211接收到来自服务器1的转换通知时,软件更新控制单元212向转换处理单元213发送转换指令。接收到来自软件更新控制单元212的转换指令,转换处理单元213执行从旧程序转换到新程序的处理。当转换处理被正确完成时,转换处理单元213向软件更新控制单元212作出关于完成的报告。一旦接收到关于转换处理成功的报告,软件更新控制单元212将通过通信单元211向服务器1发送转换完成通知。服务器1的软件更新控制单元12接收来自各个客户端的通知。通过接收通知,软件更新控制单元12确认各客户端中的转换是否已正确完成。软件更新控制单元12将各客户端的转换处理结果通知给软件更新信息管理单元13。软件更新信息管理单元13在其内部记录各客户端的软件更新状态,作为软件更新历史。
软件更新信息管理单元13基于软件更新历史来提供用于判断要更新的软件对软件更新控制单元12的依赖性的信息。例如,软件更新信息管理单元13在特定的时刻向软件更新控制单元12提供信息,该信息已从记录的软件更新历史中提取了被同时更新的客户端和软件。
如果存在涉及多个客户端的软件更新并且这些客户端彼此独立,则它们应当被打包成一个应当被同时执行的软件更新的任务组。软件更新信息管理单元13保存关于哪个软件更新属于哪项任务以及每个任务何时被执行的软件更新历史信息。通过参考软件更新信息管理单元13的信息,软件更新控制单元12易于识别一系列彼此独立的软件和客户端,并在软件更新控制单元12接收到故障报告时判定应当复原哪个软件更新。
在客户端21中,如果已检测到新软件的故障,或者如果转换处理失败,则软件更新控制单元212通过通信单元211向服务器1发出故障报告。一旦接收到故障通知,服务器1就通过参考软件更新信息管理单元13的信息来判断哪个客户端和软件应当被复原以及复原到哪些软件。软件更新信息管理单元13例如根据软件更新信息管理单元13的软件更新历史,以回退方式对软件更新执行复原,以复原到发生故障之前的阶段。软件更新控制单元12通过通信单元11向每个已被判定为需要复原的客户端发送复原通知以及关于要进行复原的旧软件和新软件的信息。在每个接收到复原通知的客户端中,软件更新控制单元212向转换处理单元213提供关于要复原到的软件的信息,并指示执行复原。转换处理单元213根据来自软件更新控制单元212的指令和信息来执行从新软件到旧软件的复原处理。在完成复原之后,转换处理单元213通知软件更新控制单元212已完成。一旦接收到复原完成通知,软件更新控制单元212就向服务器1发送复原完成通知。一旦接收到有关复原完成的通知,服务器1的软件更新控制单元12就向软件更新信息管理单元13发送每个客户端处的复原结果。软件更新信息管理单元13更新其信息,以反映从软件更新控制单元12接收到的信息。
图4和图5是用于说明从旧软件转换到新软件以及从新软件复原到旧软件的操作的图。图4和图5分别示意性地示出了存储器的状态。注意,下面以转换和复原的目标旧软件和新软件是程序(执行代码)的具体例子来给出说明。
图4示出转换处理单元213为从旧程序转换到新程序而在存储器上加载新程序的状态。旧程序被放置在存储器上从地址12345678开始的位置。转换处理单元213在存储器上从地址456789012开始加载新程序。在这里,假设地址456789012和12345678分别是新程序和旧程序排列在存储器中的起始地址,并且也分别是新程序和旧程序的入口点。
转换处理单元213通过改写存储器上的调用部分的程序代码来执行从旧程序到新程序的转换。调用部分的程序代码包括分支指令、跳转指令以及中断向量等等。转换处理单元213将调用部分的程序代码中的目的地地址信息从指示旧程序的地址12345678改写为指示新程序的地址456789012。这样就完成了转换,以便从调用源转移到旧程序的处理流程转移到新程序。
图5是用于说明从新程序到旧程序的复原处理的图。正如图4所示的情况那样,新程序和旧程序被加载在存储器上。转换处理单元213就像转换的情况中那样执行复原。转换处理单元213将跳转指令或中断向量中的地址从指示新程序的地址456789012改写为指示旧程序的地址12345678。这种改写将调用点的分支流从新程序改变为旧程序。
注意,如果作为转换和复原目标的新软件和旧软件不是执行代码而例如是数据,则可以修改为目标数据引用的地址,例如标签或符号,而不是改写被引用为分支目的地的地址。
在转换和复原处理中转换处理单元213需要改写的存储量很可能等于或小于一百个字,虽然根据要切换的程序的执行环境,即根据CPU、OS和加载器的类型会有所不同。因此,转换处理单元213在预定的相当短的时间内完成转换或复原处理,例如最少在几个机器周期内或者最多在多任务处理OS的一个时间片内完成。
由于时间如此之短,因此就可以在只将相关程序和服务的运行暂停转移和复原所需的时间段的同时进行程序转换。
转换之前用于文件递送和在存储器上加载程序或软件的处理所需要的时间根据文件大小以及可用于文件递送的网络宽带而有很大不同。因此,无法确保在预定的时间内完成用于文件递送和在存储器上加载程序或软件的处理。在该实施例中,每个客户端响应于发送自服务器1的通知,仅执行保证在预定时间内完成的转换和复原处理。因此,通过彼此同步地同时切换多个客户端的程序,可实现无需长时间暂停服务的软件更新。
图6示出服务器1和客户端21至2N的转换处理的流程。首先,服务器1向软件更新的每个目标客户端递送新程序的文件。接收到文件的客户端从接收的文件中取得新程序,并在存储器上加载新程序(101)。然后,服务器1向客户端发送转换通知(102)。接收到转换通知的客户端执行转换处理。已正确完成转换的客户端向服务器1发送转换完成通知(103)。未正确完成转换的客户端向服务器1发送故障通知(未示出)。服务器1接收来自每个客户端的转换完成通知或故障报告,并判断每个客户端中的程序更新状态(104)。如果任何客户端还没有成功进行转换,则服务器1向每个目标客户端发送复原通知,以便客户端执行复原(105、106)。
图7示出在客户端发出故障报告的情况下的复原处理的流程。图7示出在客户端21中检测到故障的情况。一旦检测到新软件的故障(201),客户端21就向服务器1发送故障报告(202)。一旦接收到故障报告,服务器1就基于故障报告的内容和软件更新信息管理单元13中的软件更新历史的信息,来识别哪个客户端和软件应当复原。然后,服务器1向每个已识别出的客户端发送复原识别出的软件的通知(203)。每个接收到复原通知的客户端执行所指示的软件复原(201)。
在该实施例中,通过直接改写存储器,使得能够在短时间内执行软件更新。因此,解决了服务因软件更新而被长时间暂停的传统问题。
此外,由于来自服务器1的转换通知,因此可以为所有要求软件更新的客户端同时执行软件更新或复原。因此,也解决了另一个传统问题。该问题发生在多个机器之间改变服务器和客户端之间的接口的软件更新处理中。这是因为在多个机器之间的软件更新中也可能实现短时间的同时转换。还因为即使在转换处理失败,甚至在转换后发生问题时,也同样可能在短时间内进行多个软件和多个客户端的同时转换。根据此实施例,在多个机器之间的软件更新方面也解决了长时间服务暂停的问题。
注意在该实施例中示出了其中服务器指示每个客户端执行软件更新的配置。但是,本发明也可在其他各种实施例中实现。例如,服务器1的诸如文件递送和软件更新信息管理之类的功能可以由多个服务器实现。或者,可采用每个客户端具有服务器1的功能的配置。
此外,在该实施例中示出了一个机器具有一个客户端的配置。但是,本发明不限于此配置。一个机器可以具有多个客户端和多个服务,并且一个客户端中的多个软件可以被同时更新。此外,与该实施例的情况不同,软件更新的单位可以不是一个程序单元。软件更新的单位可以是程序的一部分,例如函数、驱动程序和动态链接库。此外,本发明不限于对服务器-客户端结构的软件更新。本发明例如可应用于只以服务器或客户端为目标的软件更新。或者,本发明还可应用于不按照例如指示服务器和客户端的逻辑关系来区分的多个电子设备的同时软件更新。
虽然已结合某些典型实施例描述了本发明,但是要注意本发明所包含的主题不限于这些特定实施例。相反,本发明的主题想要包括可包括在所附权利要求书的精神和范围内的所有替换、修改和等同物。
此外,发明人希望即使在审查过程中修改了权利要求,也保留要求保护的发明的所有等同物。
权利要求
1.一种软件更新系统,用于通过网络将多个机器的软件从旧软件更新为新软件,所述软件更新系统包括服务器,其通过所述网络将新软件递送到任何其他机器,然后向已被递送给所述新软件的每一个机器发送从所述旧软件到所述新软件的转换通知;以及客户端,其将从所述服务器接收到的新软件加载到存储器中与放置和运行旧软件的区域不同的区域,并在从所述服务器接收到转换指令时在所述存储器上将所述旧软件切换到所述新软件。
2.根据权利要求1所述的软件更新系统,其中所述客户端通过将所述存储器上的程序所引用的地址改写为指示所述新软件的地址,将所述旧软件切换到所述新软件。
3.根据权利要求1所述的软件更新系统,其中所述客户端通过将分支指令的目的地从所述存储器上的程序的执行代码中的所述旧软件的入口地址改写为与所述旧软件相对应的新软件的入口地址,将所述旧软件切换到所述新软件。
4.根据权利要求2所述的软件更新系统,其中当所述服务器被通知在所述客户端中的任何一个处的转换处理发生故障时,所述服务器向所述客户端中的每一个发送复原通知,并且每个接收到所述复原通知的客户端根据从所述服务器接收到的复原通知执行从所述新软件到所述旧软件的转换。
5.根据权利要求4所述的软件更新系统,其中当所述服务器被通知在所述客户端中的任何一个处的转换之后所述新软件中发生故障而不是所述客户端处的转换处理发生故障时,所述服务器向所述客户端中的每一个发送所述复原通知。
6.一种客户端设备,用于通过网络进行从旧软件到新软件的软件更新,所述客户端设备包括转换处理单元,其将通过所述网络从服务器接收到的新软件加载到存储器中与放置和运行所述旧软件的区域不同的区域,并在接收到转换指令时将所述旧软件切换到所述新软件;以及软件更新控制单元,其在从所述服务器接收到转换通知时向所述转换处理单元发送所述转换指令。
7.根据权利要求6所述的客户端设备,其中所述转换处理单元通过将所述存储器上调用所述旧软件的程序所引用的地址改写为指示所述新软件的地址,来将所述旧软件切换到所述新软件。
8.根据权利要求6所述的客户端设备,其中所述转换处理单元通过将所述存储器上调用旧程序的程序的分支指令的目的地从所述程序的执行代码中的所述旧软件的入口地址改写为与所述旧软件相对应的新软件的入口地址,来将所述旧软件切换到所述新软件。
9.根据权利要求6所述的客户端设备,其中当从接收到来自所述服务器的复原通知的所述软件更新控制单元接收到复原指令时,所述转换处理单元将所述新软件切换到所述旧软件。
10.一种服务器设备,用于通过网络将多个客户端的软件从旧软件更新为新软件,所述服务器设备包括软件更新控制单元,其通过所述网络将新软件递送到任何其他客户端,然后通过所述网络向所述客户端中的每一个发送从所述旧软件转换到所述新软件的通知;以及软件更新信息管理单元,其基于从所述客户端发送来的所述客户端的软件更新响应,在其内部记录所述客户端的软件更新历史。
11.根据权利要求10所述的服务器设备,其中所述软件更新控制单元一旦接收到关于所述客户端中任何一个处的软件处理故障或软件处理之后的新软件故障的通知,就基于所述软件更新信息管理单元的软件更新历史来识别要复原的软件和客户端以便客户端进行故障恢复,并向被识别为需要复原的客户端发送复原通知。
12.一种软件更新方法,该方法利用服务器通过网络将多个客户端的软件从旧软件更新为新软件,所述软件更新方法包括将所述新软件的文件从所述服务器递送到所述客户端中的任何一个;在所述客户端处将从所述服务器递送来的新软件加载到存储器中与放置和运行所述旧软件的区域不同的区域;从所述服务器向每个客户端发送指示从所述旧软件转换到所述新软件的转换通知;以及在所述客户端处根据从所述服务器接收到的转换通知从所述旧软件转换到所述新软件。
13.根据权利要求12所述的软件更新方法,还包括在所述客户端处,当在所述转换步骤中或者在所述新软件中检测到故障时,向所述服务器报告故障;基于所述故障报告从所述服务器向所述客户端中的每一个发送复原通知,以便从受检测到的故障影响的新软件转换到所述旧软件;以及在每个客户端处基于从所述服务器接收到的复原通知从所述新软件复原到所述旧软件。
14.根据权利要求12所述的软件更新方法,其中所述转换是将所述存储器上调用所述旧程序的程序所引用的地址从指示所述旧软件的地址改写为指示所述新软件的地址。
15.根据权利要求12所述的软件更新方法,其中所述转换是将所述存储器上调用所述旧程序的程序的执行代码中的分支指令的目的地从所述旧软件的入口地址改写为与所述旧软件相对应的新软件的入口地址。
全文摘要
服务器通过网络将新软件递送到每个客户端。在递送新软件之后,服务器通过网络向每个客户端发送从旧软件转换到新软件的通知。每个客户端在存储器上加载接收到的新软件。在接收到来自服务器的通知时,每个客户端将旧软件切换到新软件。客户端处的转换操作是通过在不中断服务的情况下改写存储器上的地址而在短时间内执行的。在取消更新的情况下,以与转换操作类似的方式执行从新软件到旧软件的复原操作。
文档编号G06F9/445GK1838602SQ20061005857
公开日2006年9月27日 申请日期2006年3月22日 优先权日2005年3月22日
发明者田口広志 申请人:日本电气株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1