软件下载方法及LwM2M系统
技术领域
本发明实施例涉及物联网技术领域,具体涉及一种软件下载方法及LwM2M系统。
背景技术
随着物联网行业的发展,物联网设备的部署和应用呈现爆炸式增长。有效管理庞大的物联网设备成为物联网行业发展的迫切需求。
开放移动联盟(openmobilealliance,OMA)的轻量级设备管理协议(lightweightmachine to machine,LwM2M)成为一个重要的物联网设备管理标准。OMA LwM2M技术规范定义了LwM2M客户端LwM2M client、LwM2M引导服务器LwM2M Bootstrap-Server、以及LwM2M工作服务器LwM2M server之间的交互流程和接口。图1示出了LwM2M系统的结构示意图。在图1中,LwM2M客户端有m个,各LwM2M客户端由LwM2M引导服务器配置完成后,LwM2M客户端的远程软件下载功能和其他所有管理功能均由LwM2M服务器完成。
上述方法在LwM2M client的数量过多时,各LwM2M client分配的LwM2M server是随机的。当同一个LwM2M server同时执行多个LwM2M client的其他管理功能时,造成软件下载功能的执行效率低。
发明内容
鉴于上述问题,本发明实施例提供了一种软件下载方法和LwM2M系统,用于解决现有技术中存在的软件下载功能执行效率低的问题。
根据本发明实施例的一个方面,提供了一种软件下载方法,所述方法应用于LwM2M系统,所述LwM2M系统包括客户端、服务器、引导服务器和软件中心,所述方法包括:
所述服务器获取软件下载指令,所述软件下载指令包含待下载软件的目标客户端和下载软件的软件信息;
所述服务器从任意一个软件中心获取所述软件信息对应的URL,所述URL是所述软件信息对应的软件包上传至各所述软件中心时生成的,各所述软件中心生成的URL相同;
所述服务器将所述URL发送给所述目标客户端,以使所述目标客户端根据所述URL从目标软件中心下载所述软件信息对应的软件包,所述目标软件中心为所述引导服务器为所述目标客户端分配的软件中心。
可选的,在所述服务器将所述URL发送给所述目标客户端之后,所述方法还包括:
所述服务器接收所述目标客户端发送的反馈信息,所述反馈信息用于表征所述目标客户端的软件下载结果;
如果所述反馈信息表征所述目标客户端软件下载失败,则所述服务器重新将所述URL发送给所述目标客户端。
可选的,如果所述服务器有多个,所述服务器获取软件下载指令之后,所述方法还包括:
第一服务器将所述目标客户端与所述第一服务器管理的多个客户端匹配,所述第一服务器为多个服务器中的任意一个服务器;
如果匹配成功,则将所述第一服务器确定为所述引导服务器分配给所述目标客户端的服务器。
可选的,在所述服务器获取软件下载指令之前,所述方法还包括:
所述引导服务器获取各客户端的启动信号,所述启动信号表征客户端开始运行;
所述引导服务器根据所述启动信号向各客户端发送相应的引导信息,所述引导信息包含各客户端对应的服务器,以使各客户端注册至相应的服务器上。
可选的,在所述服务器获取软件下载指令之前,所述方法还包括:
所述引导服务器获取各软件中心的并发下载量;
所述引导服务器接收目标客户端的启动信号,并将接收到所述目标客户端的启动信号时,所述并发下载量最小的软件中心分配给所述目标客户端,所述启动信号表征所述目标客户端开始运行。可选的,在所述引导服务器获取各软件中心的并发下载量之后,所述方法还包括:
所述引导服务器将各软件中心的并发下载量存储在软件中心列表中;
如果所述引导服务器在连续的N个周期内未接收到第一软件中心的并发下载量,则所述引导服务器将所述第一软件中心从所述软件中心列表中删除,所述第一软件中心为所有软件中心中的任一软件中心,所述N为大于1的自然数。
可选的,在所述服务器获取软件下载指令之前,所述方法还包括:
所述软件中心接收用户终端上传的软件包;
所述软件中心根据所述软件包中的软件信息及所述软件包在所述软件中心的存储目录生成URL。
根据本发明实施例的另一方面,提供了一种LwM2M系统,所述系统包括:客户端、服务器、引导服务器和软件中心;
所述服务器与用户终端通信,用于获取用户终端发送的软件下载指令,所述软件下载指令包含待下载的目标客户端和下载软件的软件信息;
所述服务器与所述软件中心通信互联,所述服务器用于从任意一个软件中心获取所述软件信息对应的URL;
所述服务器与所述客户端通信互联,所述服务器用于将所述URL发送给所述目标客户端;
所述目标客户端根据所述URL从目标软件中心下载所述软件信息对应的软件包,所述目标软件中心为所述引导服务器为所述目标客户端分配的软件中心。
可选的,所述引导服务器和所述软件中心通过心跳接口连接,所述引导服务器用于获取各软件中心的并发下载量;所述引导服务器与所述客户端通信互联,所述引导服务器用于为所述客户端分配引导信息,所述引导信息包含所述客户端对应的服务器,以使所述客户端注册至相应的服务器上;所述引导信息还包含所述客户端对应的软件中心,所述引导服务器还用于根据所述并发下载量为所述客户端分配相应的软件中心。
可选的,所述软件中心用于接收所述用户终端上传的软件包,并根据所述软件包中的软件信息及所述软件包在所述软件中心的存储目录生成URL。
在本发明实施例中,服务器根据获取的软件下载指令中的软件信息从软件中心获取软件信息对应的URL,将获取的URL发送给软件下载指令中包含的目标客户端,目标客户端根据接收到的URL从该目标客户端对应的软件中心下载软件信息对应的软件包。本发明实施例将软件下载功能与服务器的其他功能分离,软件下载在软件中心执行,从而提高了软件下载的效率。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
附图仅用于示出实施方式,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了现有技术中LwM2M系统的结构示意图;
图2示出了本发明第一实施例提供的一种软件下载方法的流程图;
图3示出了本发明第二实施例提供的一种软件下载方法的流程图;
图4示出了本发明第三实施例提供的一种软件下载方法的流程图;
图5示出了本发明第四实施例提供的一种软件下载方法的流程图;
图6示出了本发明第五实施例提供的一种LwM2M系统的机构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。
本发明实施例的应用场景是LwM2M系统中客户端软件的下载。客户端软件的下载包括客户端未安装软件的下载和客户端已安装软件的升级。在本发明实施例中,软件从软件中心下载,从而将软件下载功能与服务器中的其他功能分离,提高软件下载效率。下面对本发明实施例中涉及到的名词进行解释。
LwM2M:由开放移动联盟(openmobilealliance,OMA)提出并定义的一种物联网协议。LwM2M的全称是lightweight machine-to-machine。它是物联网设备的一种轻量级物联网管理协议。该协议可用于快速部署物联网中的各个客户端和服务器的物联网业务。LwM2M定义了三个逻辑实体,分别是LwM2M服务器(LwM2M server),在本发明实施例中将其简称为服务器。LwM2M客户端(LwM2M client),在本发明实施例中将其简称为客户端。LwM2M引导服务器(Bootstrap server),在本发明实施例中将其简称为引导服务器。此外,在本发明实施例中,将服务器的软件下载功能分离出来构成软件中心。通过本发明实施例,可以实现高效率的软件下载。下面对本发明实施例涉及到的技术术语进行解释。
服务器:服务器用于实现客户端的管理功能。管理功能包括客户端的故障管理、性能与状态监控、远程控制等。服务器通常运行在非物联网设备上,比如,服务器可以运行在云端基础设施上。
客户端:是物联网系统中的终端设备。在本发明实施例中,客户端可以为机器人、车载设备、车联网中的终端设备、网关等。
引导服务器:引导服务器用于为各客户端提供引导,为各客户端提供引导信息,引导信息包含引导服务器为各客户端分配的服务器标识,以使各客户端注册至相应的服务器上,以便于服务器对注册至该服务器上的客户端进行功能管理。
软件中心:接收用户终端上传的软件包,并为各客户端提供软件包下载。其中,用户终端可以是LwM2M系统的管理终端,各客户端指LwM2M客户端。
下面对本发明的各具体实施例进行说明。
图2示出了本发明第一实施例的一种软件下载方法的流程图,该方法应用于LwM2M系统。该系统包括客户端、服务器、引导服务器和软件中心。如图1所示,该方法包括以下步骤:
步骤110:服务器获取软件下载指令,软件下载指令包含待下载软件的目标客户端和下载软件的软件信息。
其中,软件下载指令的发送主体是用户终端,该用户终端是LwM2M系统的管理终端。在实施过程中,用户通过用户终端的操作界面设置软件下载指令,软件下载指令设置完成后,用户终端将下载指令发送至服务器。例如,在用户终端有一个用户操作界面,用户可以在用户操作界面选定要进行软件下载的客户端以及待下载的软件信息,选定后点击确认按钮即可将软件下载指令发送至服务器。软件信息包含软件名称、版本等软件相关信息。
如果系统中包含多个服务器,则用户终端向每一个服务器均发送软件下载指令。软件下载指令中包含待下载软件的目标客户端和下载软件的软件信息。如果系统中仅包含一个服务器,则该服务器为目标客户端对应的服务器。如果系统中包含多个服务器,则各服务器将目标客户端与自身管理的多个客户端进行匹配,如果目标客户端包含在某一个服务器管理的客户端中,则目标客户端与该服务器匹配成功,匹配成功的服务器即为目标客户端对应的服务器。其中,各客户端对应的服务器是由引导服务器分配的。各客户端启动后,各客户端向引导服务器发送启动信号,引导服务器接收到启动信号后,为各客户端提供引导信息。引导信息包含各客户端对应的服务器信息,以使各客户端根据服务器信息注册至相应的服务器上,从而引导信息完成为各客户端分配服务器。服务器信息包括但不仅限于服务器标识。客户端根据服务器信息向相应的服务器注册。客户端向服务器注册成功后,客户端的信息存储在相应的服务器上。其中,客户端的信息包含客户端标识,服务器根据客户端标识可以匹配目标客户端。
在为客户端分配服务器时,如果系统中仅有一个服务器,则将该服务器分配给客户端,如果存在多个服务器,则根据各服务器管理的客户端的数量为客户端分配服务器。在客户端分配时,以各服务器管理的客户端的数量平均分配为原则。例如,系统中存在三个服务器,各服务器管理的客户端的数量分别为3、4、5个,则将该客户端分配给管理的客户端数量为3个的服务器。
步骤120:服务器从任意一个软件中心获取软件信息对应的URL。
其中,服务器和软件中心通信,从而获取软件信息对应的URL。本发明实施例并不限定服务器和软件中心的通信方式,例如,服务器和软件中心可以通过http协议通信。一个服务器可以与任意一个软件中心进行通信。软件中心中存储的软件信息对应的URL是软件中心接收到软件包时自动生成的。软件包由用户终端传送。在进行软件包传送时,软件包可以传送给其中一个软件中心,然后由接收到该软件包的软件中心将该软件包分发给其他软件中心。软件中心接收到软件包后,根据软件包中包含的软件名称、软件版本等软件信息以及软件包在软件中心中的路径生成URL。即,生成的URL中携带软件信息和软件在软件包中的位置信息。各软件中心存储的软件包的种类以及每一个软件包对应的URL相同。
步骤130:服务器将URL发送给目标客户端,以使目标客户端根据URL从目标软件中心下载软件信息对应的软件包。
服务器在获取到URL后,将URL发送给目标客户端。目标客户端接收到URL后,根据该URL中携带软件信息和软件位置信息从目标软件中心下载软件包。目标软件中心是目标客户端对应的软件中心。各客户端对应的软件中心是客户端运行后引导服务器为目标客户中心分配的软件中心。在客户端启动后,客户端向引导服务器注册。引导服务器为各客户端分配相应的软件中心,以便于各客户端分别通过不同的软件中心进行软件下载,提高软件下载的效率。
在本发明实施例中,服务器根据获取的软件下载指令中的软件信息从软件中心获取软件信息对应的URL,将获取的URL发送给软件下载指令中包含的目标客户端,目标客户端根据接收到的URL从该目标客户端对应的软件中心下载软件信息对应的软件包。本发明实施例将软件下载功能与服务器的其他功能分离,软件下载在软件中心执行,从而提高了软件下载的效率。
图3示出了本发明第二实施例的一种软件下载方法的流程图。如图3所示,本发明实施例包括以下步骤:
步骤210:服务器获取软件下载指令,软件下载指令包含待下载软件的目标客户端和下载软件的软件信息。
步骤220:服务器从任意一个软件中心获取软件信息对应的URL。
步骤230:服务器将URL发送给目标客户端,以使目标客户端根据URL从目标软件中心下载软件信息对应的软件包。
步骤210~步骤230的具体说明与步骤110~步骤130相同,请参阅步骤110~步骤130的说明,在此不做赘述。
步骤240:服务器接收目标客户端发送的反馈信息。
在本步骤中,目标客户端在完成软件包下载后,服务器发送反馈信息。该反馈信息用于表征目标客户端下载软件包的结果。在本发明实施例中,目标客户端下载软件包的结果包括两种:目标客户端下载软件包成功和目标客户端下载软件包失败。在具体实施过程中,反馈信息可以用下载结果标识表示,下载软件包成功对应第一下载结果标识,下载软件包失败对应第二下载结果标识。例如,第一下载结果标识为1,第二下载结果标识为0。
步骤250:如果该反馈信息表征目标客户端软件下载失败,则服务器重新将URL发送给目标客户端。
本发明实施例在目标客户端完成下载后向服务器发送反馈信息,当该反馈信息表征目标客户端软件下载失败时,服务器重新发送URL给目标客户端,以使目标客户端重新进行软件下载,从而保证了软件下载的可靠性。
图4示出了本发明第三实施例的一种软件下载方法的流程图。如图4所示,本发明实施例包括以下步骤:
步骤410:引导服务器周期性获取各软件中心的并发下载量。
在本步骤中,引导服务器和各软件中心均包含心跳接口,引导服务器和各软件中心通过心跳接口通信。引导服务器周期性获取各软件中心的并发下载量,并存储实时获取的各软件中心的并发下载量。
步骤420:引导服务器接收目标客户端的启动信号,并将接收到目标客户端的启动信号时,并发下载量最小的软件中心分配给目标客户端。
在本步骤中,当客户端启动运行后,客户端向引导服务器发送启动信号。该启动信号表征客户端开始运行。引导服务器接收到客户端的启动信号后,向各客户端发送引导信息。引导信息包含各客户端对应的服务器信息,以使各客户端根据服务器信息注册至相应的服务器。引导信息还包含各客户端对应的软件中心信息,各客户端根据各软件中心信息访问软件中心信息对应的软件中心,以下载软件。在引导服务器向各客户端发送引导信息完成后,引导服务器不再与各客户端连接。
引导服务器同一时刻接收一个客户端的启动信号,在接收到该客户端的启动信号时,将接收时刻最近的一个周期的下载量最小的软件中心分配给该客户端,从而实现各软件中心下载量的均衡。
步骤430:服务器获取软件下载指令,软件下载指令包含待下载软件的目标客户端和下载软件的软件信息。
步骤440:服务器从任意一个软件中心获取软件信息对应的URL。
步骤450:服务器将URL发送给目标客户端,以使目标客户端根据URL从目标软件中心下载软件信息对应的软件包。
本发明实施例可以结合第二实施例一起实施。
本发明实施例中引导服务器在为目标客户端分配软件中心时,将并发下载量最小的软件中心分配给目标客户端,从而使各软件中心实现下载量均衡,提高系统中各客户端的下载效率。
在一些实施例中,引导服务器在获取各软件中心的并发下载量之后,将各软件中心的并发下载量存储在软件中心列表中。即软件中心列表中存储有软件中心和并发下载量之间的对应关系。如果引导服务器在连续的N个周期内均未接收到某一个软件中心的并发下载量,说明该软件中心有可能因为心跳接口故障等原因不可用,则将该软件中心从软件列表中删除。其中,N可以为任意一个大于1的自然数。从软件中心列表中删除的软件不会分配给客户端。通过本发明实施例,保证了分配给客户端的软件中心可用,提高了软件下载的可靠性。
图5示出了本发明第四实施例的一种软件下载方法的流程图。如图5所示,本发明实施例包括以下步骤:
步骤510:软件中心接收用户终端上传的软件包。
在本步骤中,用户终端将软件包上传至软件中心。在进行软件包上传时,每一个软件中心均会接收到用户终端上传的软件包。各软件中心接收到的软件包相同,软件包在各软件中心的存储位置也相同。
步骤520:软件中心根据软件包中的软件信息及软件包在软件中心的存储目录生成URL。
在步骤中,软件中心接收到软件包后生成URL。URL包含软件包的软件信息及软件包在软件中心的位置。软件信息包括软件名称及软件版本等信息。
步骤530:服务器获取软件下载指令,软件下载指令包含待下载软件的目标客户端和下载软件的软件信息。
步骤540:服务器从任意一个软件中心获取软件信息对应的URL。
步骤550:服务器将URL发送给目标客户端,以使目标客户端根据URL从目标软件中心下载软件信息对应的软件包。
本发明实施例可以结合第二实施例或第三实施例一起实施。
图6示出了本发明第五实施例的一种LwM2M系统的结构示意图。如图6所示,该系统包括:客户端100、服务器200、引导服务器300和软件中心400。服务器200和用户终端通信,服务器200用于获取用户终端发送的软件下载指令,该软件下载指令包含待下载的目标客户端和下载软件的软件信息。服务器200与软件中心400通信互联,服务器200用于从任意一个软件中心400获取软件信息对应的URL。服务器200与客户端100通信互联,服务器200用于将从软件中心400获取的URL发送给目标客户端。目标客户端根据该URL从目标软件中心下载软件信息对应的软件包,目标软件中心为引导服务器300为目标客户端分配的软件中心。
在本发明实施例提供的系统中,软件下载功能与服务器的其他功能分离,软件下载功能在软件中心执行,从而提高了软件下载的效率。
可选的,引导服务器300和软件中心400通过心跳接口连接,引导服务器300用于获取各软件中心400的并发下载量。引导服务器300与客户端100通信互联,用于向客户端100发送引导信息,引导信息包含客户端的100对应的服务器200。引导服务器300还用于根据各软件中心400的并发下载量为客户端100分配相应的软件中心。通过上述方式,实现了各软件中心下载量均衡,提高了各客户端下载软件的效率。
可选的,软件中心400还用于接收用户终端上传的软件包,并根据软件包中的软件信息及软件包在软件中心400的目录生成URL。通过上述方式,为客户端从软件中心下载软件提供了下载条件。
LwM2M系统和上述的第一实施例至第四实施例相对应。关于LwM2M系统中各部分之间的通信请参阅上述第一实施例至第四实施例,在此不做赘述。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。