一种License控制方法及装置的制作方法

文档序号:7957924阅读:121来源:国知局
专利名称:一种License控制方法及装置的制作方法
技术领域
本发明涉及通信领域,尤其涉及License控制方法及装置。
背景技术
随着个人电脑的普及、大批程序员和软件公司的出现,软件技术得到长足发展,与此同时,软件保护受到了很大的挑战。
以前用户只要拥有了软件就能够运行并使用它,因此软件公司主要通过控制软件复制和软件分发来控制软件的使用。这时出现了许多防止软件被非法复制技术手段,其基本原理通常是将软件和特定的硬件载体捆绑起来,例如软盘、光盘等,但是这种方式过于依赖于硬件从而给软件的推广带来局限性。
随着软件使用量的急剧增长以及软件规模越来越庞大,软件的传播开始脱离硬件载体,此时软件开始能够进行本地化的安装、运行许可,软件公司通常采用先进的加密技术来保护软件的使用权,不同的软件副本需要不同的密码来安装、运行,此时的License相当于一把钥匙,用来开启对应的软件。
随着网络技术的发展,软件系统架构变得越来越复杂,分布式应用的出现使得本地化许可失去了效用,许多软件转而通过服务器来进行安装、运行许可,其组网示例如图1所示。布署专门的License服务器,管理用户所有的License许可,业务模块分布在不同的应用服务器上,每个业务模块直接访问License服务器并申请License资源,License服务器动态的判断剩余的License并返回License许可结果,业务模块根据License许可结果决定业务流程。
其方法流程示例如图2所示S1业务模块收到业务请求,向License服务器申请License资源;
S2License服务器检查当前剩余的License资源,判断是否发放License资源;S3如果还有可以发放的License资源,License服务器进行License许可,将License资源扣除1,并向业务模块返回申请成功的响应消息;S4业务模块收到License许可后,执行业务操作。
本方案将用户所有的License集中交给License服务器管理,因此可以实现License的动态发放,以及提高License使用率。
但是本方案完全依赖License服务器管理和控制License,当应用服务器数量较多,业务模块运行繁忙的时候,因每个业务模块的每次License请求都需要向License服务器申请,License服务器负荷重,同时也会增加网络的流量。
对于获取License的实时性要求严格的业务流程,例如语音会议业务,由于业务模块在得到License服务器的返回结果才能继续进行业务流程,因此业务模块的执行效率很大程度上受制于License服务器的运行效率以及应用服务器和License服务器之间的网络状况,在License服务器和网络负荷重的时候,获取License的实时性会受到严重影响。
如果License服务器业务量过大、系统故障等原因造成业务堵塞甚至崩溃,所有的业务模块都由于无法获得License从而中止运行。另外,如果应用服务器和License服务器之间网络异常,也将给业务模块带来极大的影响。因此对于业务模块和License服务器之间紧耦合的架构以及其方法流程会给License业务带来很大的运行风险,降低了系统的可靠性。

发明内容
本发明提供一种License控制方法、装置及系统,以解决现有技术中License集中管理导致的系统负荷重、实时性和可靠性不好的问题。
本发明提供以下技术方案一种License控制方法,包括步骤
A应用服务器的业务模块向应用服务器的License客户端申请License许可;BLicense客户端根据从License服务器获得的License数据对业务模块进行License许可;C业务模块获得License客户端的许可后执行业务操作。
其中在执行步骤A之前还包括License服务器的数据初始化步骤License服务器读取License总数,获取所有License客户端使用的License数量;License客户端暂停向业务模块提供许可,并向License服务器返回使用的License数量;License服务器汇总各License客户端使用的License数量,更新License全局数据,并向所有的License客户端发送更新后的License数据。
在执行步骤A之前还包括应用服务器的数据初始化步骤License客户端清零本地使用的License数量并向License服务器发送消息;License服务器将所述License客户端使用的License数量清零,更新License全局数据,并向所有的License客户端发送更新后的License数据;License客户端更新本地License数据,并根据更新后的数据向业务模块提供许可。
所述步骤B中License客户端从License服务器获取License数据的步骤具体为License客户端定时向License服务器发送License增量数据,License服务器根据所述License增量数据更新License全局数据,并向所有的License客户端发送更新后的License数据,License客户端更新本地的License数据;或者,License客户端定时向License服务器发送其累计使用的License数量,License服务器根据所述累计使用的License数量更新License全局数据,并向所有的License客户端发送更新后的License数据,License客户端更新本地的License数据。
所述增量数据指单个License客户端在一个更新周期内新占用以及新释放的License数量。
所述License全局数据主要包括License服务器所有License数量、正在使用的License数量和剩余可用的License数量。
所述License许可包括判断是否可以申请新License;或者判断是否可以释放License;或者判断是否可以执行业务操作。
所有License客户端签发的License总数超过License服务器总的License数量。
本发明还提供一种License控制装置,所述装置包括业务模块,向License客户端申请License许可,并在获得许可后执行业务操作;License客户端,根据从License服务器获取的License数据对业务模块进行License许可。
在本发明的实施例中,将License的许可模块直接布署在应用服务器上,每个应用服务器均有单独的License客户端负责License许可,这样原本由License服务器独自承担的许可工作分解给众多的应用服务器,License服务器的并发处理压力将得到很大缓解。同时,当应用服务器上的License客户端运行异常时,业务模块也可以直接向License服务器进行许可,这样的机制提高了系统的运行效率,且有效的解决了License服务器的性能瓶颈。
在本发明的实施例中,应用服务器不再直接向License服务器进行远程许可,而是向本地的License客户端进行许可,应用服务器和License服务器之间是松耦合关系,本地调用比起远程调用来节省了网络传输和消息包编解码的开销;本地调用的效率和可靠性远大于远程调用;此外,License客户端只需要对单个应用服务器提供许可服务,运行压力很小,因此可以支持更复杂、更灵活的Licese策略;由于分布式布署并且独立运行,License服务器的暂时故障不会立刻影响到应用服务器的业务运行,License服务器和应用服务器之间网络发生异常也不会立即影响到业务运行,系统的可靠性大大增强。
在本发明的实施例中,License客户端获取的是前一次刷新的License资源,在下一次数据获得之前,如果遇到业务并发的峰值,多个License客户端签发的资源总数有可能超过总的License资源池,使得业务系统遇到大规模并发的业务高峰时允许License实际签发数量暂时超出业务提供商ASP拥有的License总数,因此本方案很好的支持了ASP的“License重叠”运营模式,但是又不会给软件权利人的合法利益造成损失。


图1为现有技术的License控制系统的组网示例;图2为现有技术的License控制方法;图3为本发明实施例的License控制系统的组网示例;图4为本发明实施例的License控制方法流程图;图5为本发明实施例的License服务器的初始化流程;图6为本发明实施例的应用服务器的初始化流程;图7为本发明实施例的License服务器从应用服务器获取数据的过程。
具体实施例方式
为使本发明的目的、技术方案及优点更加清楚明白,下面参照附图并举实施例,对本发明作进一步详细说明。
请参阅图3,License服务器管理整个License资源,在系统启动时将License全局数据同步给所有的应用服务器,并根据应用服务器的请求定时将最新的License数据发送给应用服务器。其中,License全局数据主要包括License服务器所有License数量、正在使用的License数量、剩余可用的License数量。
每个应用服务器包括至少一个License客户端和至少一个业务模块。所述业务模块向本端应用服务器的License客户端请求License许可,在获得License客户端的许可后进行业务操作。所述License客户端根据从License服务器获得的License数据对业务模块进行License许可,并向业务模块发送许可响应消息。所述License客户端还定时将License数据发送给License服务器,并根据License服务器的响应消息更新本地的License数据。其中,License客户端发送给License服务器的License数据为License增量数据或License累计数据,所述增量数据指单个License客户端在一个刷新周期内新占用以及新释放的License数量,所述License累计数据是指单个应用服务器从启动开始累计占用以及释放的License数量。
根据图3描述可知,License服务器存放的数据主要包括各License客户端使用的License数量以及最新License全局数据。在第一实施例中,即License服务器和License客户端交互增量数据时,License客户端存放的是增量数据和本地可用的License数据。在第二实施例中,即License服务器和License客户端交互其累计使用的License数量时,License客户端存放的是其累计使用的License数量和本地可用的License数据。与此相应,License客户端中存放的数据主要包括License增量数据或累计使用的License数量,以及可用的License数量其中。其中License客户端中的数据还可存放在其他的模块或装置中。
请参阅图4,是本实施例的一种License控制方法的流程图,包括如下步骤A应用服务器的业务模块向本应用服务器的License客户端请求License许可;
BLicense客户端根据从License服务器获取的License数据对业务模块进行License许可;C业务模块在获得License客户端的许可后执行业务操作。
因License服务器和License客户端是分布式的架构,两者的运行状态以及两者存放的数据并不是时刻同步的,当License服务器启动或重新启动时,需要对License服务器上的数据进行初始化操作。请参阅图5,是License服务器的数据初始化步骤为License服务器读取License总数,向所有应用服务器的License客户端获取其使用的License数量;License客户端暂停向业务模块提供许可,并向License服务器返回其使用的License数量;License服务器汇总各应用服务器使用的License数量,生成License全局数据,并向所有的License客户端提供更新后的License数据;License客户端更新本地可用的License数据,并恢复向业务模块提供许可。
应用服务器有可能会异常终止,在应用服务器终止之后License服务器会认为该License许可仍然占用着License资源。因此当应用服务器启动或重新启动时,需要向License服务器发消息,让License服务器初始化该License客户端的License数据,即需要对应用服务器的数据进行初始化,请参阅图6,为应用服务器的初始化步骤License客户端清零本地使用的License数量并向License服务器发送消息;License服务器将所述License客户端使用的License数量清零,更新License全局数据,并向所有License客户端发送更新后的License数据;License客户端更新本地可用的License数据,并根据更新后的本地License数据向业务模块提供许可。
请参阅图7,是应用服务器从License服务器获取License数据的步骤License客户端定时向License服务器上报本端的License数据;
License服务器根据上报的License数据更新License全局数据,并向所有License客户端发送更新后的License数据,其中所述更新后的License数据至少包括可用的License数据;License客户端更新本地的License数据。
在具体实施例中,所述License客户端定时向License服务器上报本端的增量数据或累计使用的License数量。若上报的为增量数据,则License客户端更新本地的License数据时将增量数据清零。
可选地,License客户端从上报License数据至更新本地的License数据期间,暂停提供License许可。
业务模块直接访问本地的License客户端进行License许可,主要有三种许可操作判断是否可以执行业务或申请新的License或释放License。
在申请新的License时,如果许可操作为申请新的License,则License客户端根据本地的License全局数据判断剩余的可用License数量是否足够,如果License数量不够则拒绝业务模块的申请,如果足够则向业务模块提供许可成功响应消息,并将本地的可用的License数据数量减1。
如果许可操作为释放License,则将本地可用的License数据数量加1。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种License控制方法,其特征在于,包括步骤A应用服务器的业务模块向应用服务器的License客户端申请License许可;BLicense客户端根据从License服务器获得的License数据对业务模块进行License许可;C业务模块获得License客户端的许可后执行业务操作。
2.根据权利要求1所述的方法,其特征在于,在执行步骤A之前还包括License服务器的数据初始化步骤License服务器读取License总数,获取所有License客户端使用的License数量;License客户端暂停向业务模块提供许可,并向License服务器返回使用的License数量;License服务器汇总各License客户端使用的License数量,更新License全局数据,并向所有的License客户端发送更新后的License数据。
3.根据权利要求1所述的方法,其特征在于,在执行步骤A之前还包括应用服务器的数据初始化步骤License客户端清零本地使用的License数量并向License服务器发送消息;License服务器将所述License客户端使用的License数量清零,更新License全局数据,并向所有的License客户端发送更新后的License数据;License客户端更新本地License数据,并根据更新后的数据向业务模块提供许可。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述步骤B中License客户端从License服务器获取License数据的步骤具体为License客户端定时向License服务器发送License增量数据,License服务器根据所述License增量数据更新License全局数据,并向所有的License客户端发送更新后的License数据,License客户端更新本地的License数据;或者,License客户端定时向License服务器发送其累计使用的License数量,License服务器根据所述累计使用的License数量更新License全局数据,并向所有的License客户端发送更新后的License数据,License客户端更新本地的License数据。
5.根据权利要求4所述的方法,其特征在于,所述增量数据指单个License客户端在一个更新周期内新占用以及新释放的License数量。
6.根据权利要求1至3任一项所述的方法,其特征在于,所述License全局数据主要包括License服务器所有License数量、正在使用的License数量和剩余可用的License数量。
7.根据权利要求1至3任一项所述的方法,其特征在于,所述License许可包括判断是否可以申请新License;或者判断是否可以释放License;或者判断是否可以执行业务操作。
8.根据权利要求1至3任一项所述的方法,其特征在于,所有License客户端签发的License总数超过License服务器总的License数量。
9.一种License控制装置,其特征在于,所述装置包括业务模块,向License客户端申请License许可,并在获得许可后执行业务操作;License客户端,根据从License服务器获取的License数据对业务模块进行License许可。
10.根据权利要求9所述的装置,其特征在于,License客户端定时向License服务器发送License增量数据,并根据License服务器响应更新本地的License数据;或者,License客户端定时向License服务器发送其累计使用的License数量,并根据License服务器响应更新本地的License数据。
11.根据权利要求10所述的装置,其特征在于,所述增量数据指单个License客户端在一个更新周期内新占用以及新释放的License数量。
12.根据权利要求9至11任一项所述的装置,其特征在于,所有License客户端签发的License总数超过License服务器总的License数量。
全文摘要
本发明公开一种License控制方法,该方法包括步骤A应用服务器的业务模块向应用服务器的License客户端申请License许可;BLicense客户端根据从License服务器获得的License数据对业务模块进行License许可;C业务模块获得License客户端的许可后执行业务操作。本发明利用各应用服务器的License客户端提供License许可,从而提高了License许可的实时性,降低了系统的负荷,增强了License许可的可靠性。
文档编号H04L29/06GK1996332SQ20061006300
公开日2007年7月11日 申请日期2006年9月30日 优先权日2006年9月30日
发明者吕涛, 胡云 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1