发明内容
本申请实施例的目的在于提供一种许可资源调度方法、装置、电子设备和存储介质,用以改善现有技术中由于对许可证的固定预留而导致难以提升许可资源利用率的问题。
第一方面,本申请实施例提供一种许可资源调度方法,所述方法包括:
在接收到第一用户对于第一软件模块的许可请求时,获取所述第一软件模块的当前许可数据;
根据所述第一用户的身份、所述第一用户对于所述第一软件模块的历史使用数据以及所述第一软件模块的当前许可数据,判断所述第一用户当前是否满足所述第一软件模块的许可使用条件;
在确定所述第一用户当前满足所述第一软件模块的许可使用条件时,为所述第一用户分配所述第一软件模块的许可资源。
在上述方法中,综合考虑了第一用户这一请求方的用户身份、第一用户对于第一软件模块的历史使用情况,以及该第一软件模块的当前许可数据,结合了多方面因素对请求方的本次许可请求进行判断,从而确定该请求方当前是否具备使用第一软件模块的许可使用条件,在满足条件时才为该第一用户分配许可资源。上述方法不再是为固定的部分用户预留固定的许可资源,有利于使第一软件模块有机会被不同身份的用户使用,提升了对于有限许可资源的利用率。
在可选的实施方式中,所述根据所述第一用户的身份、所述第一用户对于所述第一软件模块的历史使用数据以及所述第一软件模块的当前许可数据,判断所述第一用户当前是否满足所述第一软件模块的许可使用条件,包括:在所述第一用户为非目标级别的用户,且在所述第一软件模块当前存在空闲的许可资源时,基于所述第一用户对于所述第一软件模块的历史使用数据,计算所述第一用户本次对于所述第一软件模块的预测使用时长;计算未使用所述第一软件模块的第二用户在所述预测使用时长内对于所述第一软件模块的预测许可需求量,所述第二用户为目标级别的用户;根据所述当前许可数据确定所述第一软件模块当前空闲的许可资源数量;当所述第一软件模块当前空闲的许可资源数量大于所述预测许可需求量时,确定所述第一用户当前满足所述第一软件模块的许可使用条件。
通过上述实现方式,可以为目标级别的第二用户进行短期地、动态地预留许可资源。相较于为目标级别的用户固定预留大量许可资源的方式,由于是在第一软件模块当前空闲的许可资源数量大于预测许可需求量时,才判定第一用户当前满足第一软件模块的许可使用条件,这能够让非目标级别的第一用户也有机会使用第一软件模块,并且可以降低第一用户对第二用户的优先使用造成干扰的几率。
在可选的实施方式中,所述基于所述第一用户对于所述第一软件模块的历史使用数据,计算所述第一用户本次对于所述第一软件模块的预测使用时长,包括:获取所述第一用户对于所述第一软件模块的历史使用数据;根据所述第一用户对于所述第一软件模块的历史使用数据,提取所述第一用户使用所述第一软件模块的时间长度特征;基于所述时间长度特征,预测计算所述第一用户本次对于所述第一软件模块的预测使用时长。
通过上述实现方式,可以基于第一用户这一请求方的历史使用数据,结合请求方的使用习惯预测本次请求可能使用第一软件模块的时间,从而结合预测出的预测使用时长前瞻性地进行许可资源调度。
在可选的实施方式中,所述计算未使用所述第一软件模块的第二用户在所述预测使用时长内对于所述第一软件模块的预测许可需求量,包括:
获取未使用所述第一软件模块的第二用户对于所述第一软件模块的历史使用数据;根据所述第二用户对于所述第一软件模块的历史使用数据,提取所述第二用户使用所述第一软件模块的时间点特征,和/或,时间间隔特征;根据所述第二用户使用所述第一软件模块的时间点特征,和/或,时间间隔特征,计算所述第二用户在所述预测使用时长内对于所述第一软件模块的预测许可需求量。
通过上述实现方式,可以根据用户对于第一软件模块的历史使用数据,基于用户的使用习惯从时间点特征和/或时间间隔特征的角度计算预测许可需求量,从而为当前未使用第一软件模块的第二用户群体短期预留一部分许可资源,避免目标级别的第二用户无资源可用。
在可选的实施方式中,所述根据所述第二用户使用所述第一软件模块的时间点特征,和/或,时间间隔特征,计算所述第二用户在所述预测使用时长内对于所述第一软件模块的预测许可需求量,包括:
根据所述第二用户使用所述第一软件模块的时间点特征,计算所述第二用户在所述预测使用时长内使用所述第一软件模块的第一概率;和/或,根据所述第二用户使用所述第一软件模块的时间间隔特征,计算所述第二用户在所述预测使用时长内使用所述第一软件模块的第二概率;根据所述第一概率和/或所述第二概率,确定所述第二用户在所述预测使用时长内对于所述第一软件模块的预测许可需求量。
通过上述实现方式,既可以基于用户的使用习惯从时间点特征的角度计算第一概率以得到预测许可需求量,也可以基于用户的使用习惯从时间间隔特征的角度计算第二概率以得到预测许可需求量,还可以基于第一概率和第二概率,结合时间点特征和时间间隔特征综合计算预测许可需求量,从而为当前未使用第一软件模块的第二用户短期预留一部分许可资源。
在可选的实施方式中,所述根据所述第一用户的身份、所述第一用户对于所述第一软件模块的历史使用数据以及所述第一软件模块的当前许可数据,判断所述第一用户当前是否满足所述第一软件模块的许可使用条件,包括:
在所述第一用户为目标级别的用户,且在所述第一软件模块当前不存在空闲的许可资源时,根据所述当前许可数据确定是否存在当前占用所述第一软件模块的第三用户,所述第三用户为非目标级别的用户;当确定存在至少一个所述第三用户时,确定所述第一用户当前满足所述第一软件模块的许可使用条件;
所述在确定所述第一用户当前满足所述第一软件模块的许可使用条件时,为所述第一用户分配所述第一软件模块的许可资源,包括:基于所述至少一个第三用户对于所述第一软件模块的历史使用数据,从所述至少一个第三用户中确定目标用户;对所述目标用户在使用的许可资源进行许可释放;将释放得到的许可资源分配给所述第一用户。
通过上述实现方式,可以保障在请求方为目标级别的用户时,请求方优先使用该第一软件模块。在高优先级用户申请许可资源的情况下,若许可资源不足,通过分析当前占用许可资源的普通用户(第三用户)的用户级别和使用状态,对目标用户进行许可资源的强制释放,可保障目标级别用户的优先使用权利。
在可选的实施方式中,所述基于所述至少一个第三用户对于所述第一软件模块的历史使用数据,从所述至少一个第三用户中确定目标用户,包括:
根据所述至少一个第三用户中,每个第三用户对于所述第一软件模块的历史使用数据,计算每个第三用户对于所述第一软件模块的预测使用时长、当前已用时长、闲置时长;
基于每个第三用户对于所述第一软件模块的预测使用时长、当前已用时长、闲置时长,从所述至少一个第三用户中确定目标用户。
通过上述实现方式,结合了第一软件模块当前的被使用的情况,综合考虑了第三用户对于第一软件模块的预测使用时长、当前已用时长、闲置时长,从而确定出需要进行许可资源释放的目标用户,从而保障目标级别的用户随时有许可资源可用。
在可选的实施方式中,所述基于每个第三用户对于所述第一软件模块的预测使用时长、当前已用时长、闲置时长,从所述至少一个第三用户中确定目标用户,包括:
基于每个第三用户对于所述第一软件模块的预测使用时长、当前已用时长、闲置时长,计算所述至少一个第三用户中每个用户的释放概率;
根据每个所述第三用户的释放概率,从所述至少一个第三用户中确定目标用户。
通过上述实现方式,可以基于计算出的释放概率,对当前正占用许可资源的非目标级别的用户进行许可资源的动态释放,以供目标级别的用户优先使用许可资源,提升许可资源的有效使用率。
第二方面,实施例提供一种许可资源调度装置,所述装置包括:
获取模块,用于获取第一用户对于第一软件模块的许可请求,以及所述第一软件模块的当前许可数据;
判断模块,用于根据所述第一用户的身份、所述第一用户对于所述第一软件模块的历史使用数据以及所述第一软件模块的当前许可数据,判断所述第一用户当前是否满足所述第一软件模块的许可使用条件;
分配模块,用于在确定所述第一用户当前满足所述第一软件模块的许可使用条件时,为所述第一用户分配所述第一软件模块的许可资源。
通过上述装置可以执行前述第一方面提供的方法,能够在软件许可资源有限的情况下,提升软件许可资源的利用率。
第三方面,实施例提供一种电子设备,包括:
存储器;
处理器;
所述存储器上存储有所述处理器可执行的计算机程序,所述计算机程序被所述处理器执行时执行前述第一方面所述的方法。
第四方面,实施例提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时执行前述第一方面所述的方法。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
下面将对本申请实施例中的一些概念和原理进行解释,以便理解方案。
软件保护:强调的是利用以加密为主的技术手段保护软件不被破解,若一种保护技术的安全强度达到了让破解者需要付出比购买该软件还要高的成本,这样的保护技术就是成功的。
软件授权:是软件保护概念的延伸与发展,软件授权的目的是让软件用户按照购买许可资源的方式来使用软件,许可资源可以许可证的形式呈现。随着软件的功能及功能模块越来越多,软件开发商逐渐根据软件的功能模块、使用时长、使用次数等条件来实现对于软件的销售。
现有技术中对于许可资源进行固定预留的方式,虽然有利于在一定程度上保障部分用户的优先使用权,例如高级研发人员、管理员等高优先级用户的许可使用权利,但是难以兼顾对于许可证的使用优先权维护以及许可证的使用效率。
例如,当为个别高优先级用户单独、定期预留许可资源时,会导致该许可资源在限定期间内即使处于闲置状态,也不能被其他经过授权的用户使用,造成该许可资源在闲置时间段的资源浪费,许可资源的有效使用率低。
而如果是为多个高优先级用户预留较少的许可资源,依然会存在有部分高优先级用户不能及时使用软件资源的可能性,难以保障所有高优先级用户对于许可资源的优先使用权,从而带来不良后果。
有鉴于此,在不违背软件保护、软件授权思想的基础上,发明人提出了以下实施例以改善上述缺陷,相较于传统的许可资源调度方式,本申请实施例提供的方案通过分析用户使用各软件功能模块的历史使用数据,根据用户的使用习惯预测了用户在不同时间使用相应模块的可能性,进而前瞻性地为许可资源进行短期调度,将许可资源的有效使用率最大化,兼顾部分用户对于许可资源的优先使用权和软件许可资源的使用效率。相较于传统方案,取消了固定预留许可的模式,所有的许可资源在不同的时间都有机会被不同级别的用户使用,此外,还将传统的定期、长期(按年或按月)许可预留方式,转变为仅在一些特殊场景下为即将使用许可资源的用户进行短期(例如按小时或按天)预留,从而缩短许可资源的闲置时间,提升许可资源的有效利用率。
请参阅图1,图1为本申请实施例提供的一种许可资源调度方法的流程图。该方法可以用于对有限的许可资源进行调度,实现对于许可资源的充分利用。
例如,在一个软件A具有多个软件模块的情况下,对于其中的第一软件模块a1,有限的许可资源为20份,但这20份许可资源可能需要供给经过授权的100个用户使用,而该100个用户中仅有少量用户具有优先使用权利用户,大多数普通用户不具备优先使用权利。通过本申请实施例的方法可以让具有优先使用权利的用户能够优先使用第一软件模块a1,还能够提升其他普通用户对于许可资源的利用率。可以理解的是,本申请实施例提供的方案还可应用于对具有多种用户级别的用户进行许可资源的动态分配。
如图1所示,该许可资源调度方法包括步骤S11-S13。
S11:在接收到第一用户对于第一软件模块的许可请求时,获取第一软件模块的当前许可数据。
S12:根据第一用户的身份、第一用户对于第一软件模块的历史使用数据以及第一软件模块的当前许可数据,判断第一用户当前是否满足第一软件模块的许可使用条件。
S13:在确定第一用户当前满足第一软件模块的许可使用条件时,为第一用户分配第一软件模块的许可资源。
其中,第一用户作为请求方,可以是目标级别的用户,也可以是非目标级别的用户。目标级别的用户对于该第一软件模块的使用权利高于非目标级别的用户对于该第一软件模块的使用权利。在实际应用中,目标级别的用户可能是资深研发人员,也可能是管理员,还可能是以高价买下许可资源的第三方用户。
对于同一个软件,可能具有多个软件模块,不同的软件模块可以对应不同的许可资源。当获取到第一用户p对于软件A的软件模块a1的许可请求时,软件模块a1作为第一软件模块,获取该第一软件模块的当前许可数据。
当前许可数据可以包括该第一软件模块的当前许可占用量,还可包括当前使用该第一软件模块的所有用户的数据,当前使用该第一软件模块的用户可以包括目标级别的用户,也可以包括非目标级别的用户。
在S12中,通过分析第一用户的身份、第一用户对于该第一软件模块的历史使用数据以及该第一软件模块的当前许可数据,可以判断该第一用户当前是否满足该第一软件模块的许可使用条件。由于考虑到了请求方的身份以及该第一软件模块的当前许可数据,有利于在许可资源紧缺的情况下为目标级别的请求用户提供优先使用权,由于考虑到了第一用户对于该第一软件模块的历史使用数据,有利于根据历史使用数据预测该第一用户未来对于该第一软件模块的使用情况,从而对许可资源进行前瞻性的短期调度。
在S13中,当确定第一用户当前满足第一软件模块的许可使用条件时,为该第一用户分配第一软件模块的许可资源。
在本申请实施例中,对于不同级别的第一用户,有不同的许可资源分配方式。
在上述方法中,当获取到第一用户对于第一软件模块的许可请求时,结合了第一用户的身份、该第一用户对于第一软件模块的历史使用情况以及该第一软件模块的当前许可数据,综合考虑多方面因素以对请求方的本次许可请求进行判断,从而确定该第一用户当前是否具备使用第一软件模块的许可使用条件,在满足条件时才为该第一用户分配许可资源。上述方法不再是为固定的部分用户预留固定的许可资源,有利于使得第一软件模块有机会被不同身份的用户使用,提升了对于有限许可资源的利用率。
下面将分别针对不同身份的第一用户,结合四种应用场景对本申请实施例的上述方法作详细介绍。
其中,在接收到许可请求后,可以判断第一用户是否为目标级别的用户,以及判断第一软件模块当前是否存在空闲的许可资源,以此得到的四种判断结果可以得到四种应用场景下的处理方式。
第一种应用场景和第二种应用场景是针对第一用户为非目标级别的用户的情况进行介绍的,第三种应用场景和第四种应用场景是针对第一用户为目标级别的用户的情况进行介绍的。
第一种应用场景:
请参阅图2,当获取到第一用户关于第一软件模块的许可请求时,根据第一软件模块的当前许可数据得知第一软件模块此时已经不再有空闲的许可资源。
这种情况下,由于此时的第一软件模块不存在空闲的许可资源能够提供给普通用户使用,且根据第一用户的身份得知该第一用户不具备优先使用该第一软件模块的权利,因此,判定该第一用户当前不满足该第一软件模块的许可使用条件,拒绝该第一用户使用该第一软件模块。
第二种应用场景:
请继续参阅图2,当获取到第一用户关于第一软件模块的许可请求时,根据第一软件模块的当前许可数据得知该第一软件模块此时还存在空闲的许可资源。
在该第二种应用场景下,作为上述S12的一种实现方式,上述S12可以包括步骤S21-S24。
S21:在第一用户为非目标级别的用户,且在第一软件模块当前存在空闲的许可资源时,基于第一用户对于第一软件模块的历史使用数据,计算第一用户本次对于第一软件模块的预测使用时长。
预测使用时长用于表示该第一用户未来可能使用该第一软件模块多久,该预测使用时长是通过分析第一用户对于第一软件模块的历史使用数据,基于该第一用户的使用习惯所计算得到的。
S22:计算未使用第一软件模块的第二用户在预测使用时长内对于第一软件模块的预测许可需求量,第二用户为目标级别的用户。
其中,在接收到第一用户的许可请求时,未使用第一软件模块的第二用户可以有一个或多个。虽然该部分第二用户当前没有使用该第一软件模块,但由于第二用户是目标级别的用户,为了保障第二用户在未来的很短一段时间内(例如几个小时或几天)内能够优先使用该第一软件模块,因此计算第二用户在前述预测使用时长内对于第一软件模块的预测许可需求量,以此避免因同意第一用户的许可请求而导致使用权利更高的第二用户没有许可资源可用的情况,以此可以保障第二用户的短期优先使用权。由于预测许可需求量是基于第一用户的预测使用时长动态计算的,而不是设置的固定需求量,不仅可以避免许可资源的长期闲置,还可以避免固定需求量不够第二用户使用的情况。
S23:根据当前许可数据确定第一软件模块当前空闲的许可资源数量。
其中,第一软件模块当前空闲的许可资源数量是指,该第一软件模块的许可总量sum与该第一软件模块的当前许可占用量n之差:sum-n。
S24:当第一软件模块当前空闲的许可资源数量大于预测许可需求量时,确定第一用户当前满足第一软件模块的许可使用条件。
当通过S24确定出第一用户当前满足第一软件模块的许可使用条件时,执行S13,为该第一用户分配该第一软件模块的空闲的许可资源。
在一个实例中,基于非目标级别的第一用户p关于第一软件模块a1的历史使用数据,计算出的预测使用时长为tk。在接收到该第一用户p的许可请求时,存在5个未使用第一软件模块a1且为目标级别的第二用户。基于该5个第二用户对于第一软件模块a1的历史使用数据,计算这5个第二用户在预测使用时长tk内对于第一软件模块a1的预测许可需求量k。
将第一软件模块a1当前空闲的许可资源数量sum-n与预测许可需求量k进行比较,若空闲的许可资源数量sum-n大于预测许可需求量k,则确定第一用户p当前满足第一软件模块a1的许可使用条件,同意该第一用户p本次对于第一软件模块a1的许可请求。
而若是空闲的许可资源数量sum-n小于预测许可需求量k,则确定第一用户p当前不满足第一软件模块a1的许可使用条件,即使当前的第一软件模块a1仍然存在剩余的许可资源,为了保障第二用户在预测使用时长内的优先使用权利,不会将剩余的许可资源分配给该第一用户p,拒绝该第一用户使用该第一软件模块。
需要说明的是,在该第一用户p下一次发起对于第一软件模块a1的许可请求时,会重新计算该第一用户p的预测使用时长以及第二用户的预测许可需求量,这使得即使第一用户p此时被拒绝使用第一软件模块a1,下一次请求也是有机会使用第一软件模块a1的。
在其他实施例中,可以将第一用户在发起许可请求时提交的预计使用时长作为前述的预测使用时长。
通过上述S21-S24的实现方式,可以为目标级别的(高优先级别)第二用户进行短期预留许可。当某一时刻有普通用户(即,非目标级别的第一用户)申请使用第一软件模块时,结合该用户关于第一软件模块的历史使用习惯预测该普通用户本次使用该第一软件模块的时长(预测使用时长),再根据所有高优先级用户(目标级别的第二用户)过去使用该第一软件模块的历史使用习惯,预测当前未占用该第一软件模块的每个高优先级用户未来使用该第一软件模块的可能性,进而预测计算高优先级用户群体未来短期对该第一软件模块的预测许可需求量,得知该高优先级用户群体在未来的该预测使用时长内会需要使用多少许可资源。最后结合该第一软件模块当前剩余的许可数量和所有高优先级用户的未来短期的需求数量,综合判断是否允许该第一软件模块被普通用户占用,以此能够前瞻性地为这部分高优先级用户进行短期许可预留、动态预留。相较于为目标级别的用户固定预留大量许可资源的方式,由于是在第一软件模块当前空闲的许可资源数量大于预测许可需求量时,才判定第一用户当前满足第一软件模块的许可使用条件,这能够让非目标级别的第一用户也有机会使用第一软件模块,并且可以降低第一用户对第二用户的优先使用造成干扰的可能性。
下面将对前述预测使用时长的一种计算过程进行介绍。
为了计算预测使用时长,上述S21的步骤可以包括子步骤S211-S213。
S211:获取第一用户对于第一软件模块的历史使用数据。
S212:根据第一用户对于第一软件模块的历史使用数据,提取第一用户使用第一软件模块的时间长度特征。
S213:基于时间长度特征,预测计算第一用户本次对于第一软件模块的预测使用时长。
在一个实例中,关于S211-S213,可以通过时间序列预测方法(又称时间序列法或时间序列趋势外推法)计算预测使用时长。当选定一个第一用户p和该第一用户p对应的第一软件模块a1时,可以获取该第一用户p在指定时间段内(例如过去两年、一年、半年、3个月、1个月、1天等时间段内)关于该第一软件模块a1的历史使用数据,指定时间段的长度可以根据实际需求设置。当然,该第一用户p对于第一软件模块a1的历史使用数据也可以是从该用户最初使用模块a1起至当前时刻的历史使用数据。
通过统计该第一用户p历次使用该模块a1的时间长度,按照时间顺序可得到时间长度序列T=[t1,t2,t3…tm]。其中tm表示该用户p在第m次使用该模块a1的时长。然后可以分析该时间长度序列T=[t1,t2,t3…tm]在时间轴上的趋势特征、循环特征、季节特征、不规则特征等时间长度特征,根据具体的时间长度特征以及选定的时间序列预测方法(包括剔除季节变动法、滑动平均法、指数平滑法、自回归法、趋势推测法等)预测计算该用户p此时的预测使用时长。
为了提升预测准确率,对于选定的时间序列预测方法,可以根据历史时间序列数据训练该时间序列预测方法对应的预测模型,在调节模型参数后,通过调参后的时间序列预测方法,分析时间长度序列T=[t1,t2,t3…tm],并预测计算前述的预测使用时长。
前述S211-S213中计算预测使用时长不仅可以应用于对请求方(第一用户)的预测计算,也可以用于对其他用户(例如第二用户、当前正在使用第一软件模块的其他用户)进行预测计算。
下面将对前述的预测许可需求量的计算过程进行介绍。
为了计算预测许可需求量,上述S22的步骤可以包括子步骤S221-S223。
S221:获取未使用第一软件模块的第二用户对于第一软件模块的历史使用数据。
S222:根据第二用户对于第一软件模块的历史使用数据,提取第二用户使用第一软件模块的时间点特征,和/或,时间间隔特征。
S223:根据第二用户使用第一软件模块的时间点特征,和/或,时间间隔特征,计算第二用户在预测使用时长内对于第一软件模块的预测许可需求量。
关于S221-S223,未使用第一软件模块的第二用户可以有多个,这些第二用户作为一个目标级别的高优先级用户群体的成员。
在一个实例中,对于当前软件A中的第一软件模块a1,该第一软件模块a1当前空闲的许可资源数量为sum-n。当前未使用第一软件模块a1的第二用户群体记为G1=[g11,g12,g13…g1m],g11,g12,g13…g1m均表示当前未使用第一软件模块a1的第二用户。
当通过S21的步骤(或S211-S213的实现方式)计算得到第一用户p本次使用第一软件模块a1的预测使用时长后,可以执行S221-S223。通过提取第二用户群体G1中的第二用户g1m对第一软件模块a1的历史使用数据,提取第二用户g1m使用第一软件模块a1的时间点特征,和/或,时间间隔特征。
作为一种实现方式,可以根据时间点特征可以预测该第二用户g1m在未来的时间长度tk(即,前述的预测使用时长)内,该第二用户g1m使用该第一软件模块a1的可能性,基于此可以根据时间点特征预测第二用户群体G1中的所有的第二用户对于第一软件模块a1的预测许可需求量k。
作为另一种实现方式,可以根据时间间隔特征预测该第二用户g1m在预测使用时长tk内,该第二用户g1m使用该第一软件模块a1的可能性,从而基于时间间隔特征预测第二用户群体G1中的所有的第二用户对于第一软件模块a1的预测许可需求量k。
作为再一种实现方式,可以对前述两种实现方式得到的数据进行加权求平均,从而得到同时考虑时间点特征、时间间隔特征而计算出的该第二用户群体G1对应的预测许可需求量k。
预测许可需求量k表示需要将关于该第一软件模块a1的k份许可资源短期预留给该第二用户群体G1。
通过上述S221-S223的实现方式,可以根据用户对于第一软件模块的历史使用数据,基于用户的使用习惯从时间点特征和/或时间间隔特征的角度计算预测许可需求量,从而为当前未使用第一软件模块的第二用户群体短期预留一部分许可资源。
作为上述S223的一种可选实现方式,可以根据第二用户使用第一软件模块的时间点特征,计算第二用户在预测使用时长内使用第一软件模块的第一概率,基于第一概率确定第二用户在预测使用时长内对于第一软件模块的预测许可需求量。
作为上述S223的另一种可选实现方式,可以根据第二用户使用第一软件模块的时间间隔特征,计算第二用户在预测使用时长内使用第一软件模块的第二概率,基于第一概率确定第二用户在预测使用时长内对于第一软件模块的预测许可需求量。
作为上述S223的再一种可选实现方式,可以根据第一概率和第二概率确定第二用户在预测使用时长内对于第一软件模块的预测许可需求量,例如可以取第一概率、第二概率的加权平均值确定第二用户在预测使用时长内对于第一软件模块的预测许可需求量。
其中,在计算概率时,可以对第二用户群体G1中的每个用户分别计算第一概率和/或第二概率,从而确定单个第二用户(例如用户g1m)在预测使用时长内使用第一软件模块的概率值P1m。基于此原理可以计算整个第二用户群体G1对应的概率集合P1=[P11,P12,P13…P1m],将该概率集合P1中的所有概率求和,可以得到整个第二用户群体G1在预测使用时长tk内对于第一软件模块的预测许可需求量k。其中,若概率求和得到的值非整数,则就近取较大的整数,例如,若求得的概率和为5.6,则预测许可需求量k的值为6,在预测使用时长内预留6份许可资源。
通过上述S223的三种可选实现方式,既可以基于用户的使用习惯从时间点特征的角度计算第一概率,从而得到预测许可需求量,也可以基于用户的使用习惯从时间间隔特征的角度计算第二概率,从而得到预测许可需求量,还可以基于第一概率和第二概率,结合时间点特征和时间间隔特征计算预测许可需求量,从而为当前未使用第一软件模块的第二用户群体短期预留一部分许可资源。
下面将分别介绍第一概率、第二概率的计算方式,第一概率可以通过第一表达式计算得到,第二概率可以通过第二表达式计算得到。
其中,P1(t)表示在t时间使用第一软件模块的第一概率;ti1表示第i1个热门使用时间点,热门使用时间点根据第一软件模块的历史使用数据统计得到;P(t|ti1)表示在热门使用时间点ti1的影响下,在t时间使用第一软件模块的概率;T1表示采样数据的时间长度;ni1表示在热门使用时间点ti1使用第一软件模块的使用次数;λ1为指数分布的参数。本领域技术人员可以对λ1进行设置。
其中,热门使用时间是本申请实施例提供的名词,对于给定的用户和该用户使用过的一个软件模块,通过分析在不同时间该用户使用该模块的使用频率分布情况,提取出的使用频率较高的时间作为该用户对于该模块的热门使用时间。
对于一组用户-模块关系而言,越靠近热门使用时间,该用户再次使用该模块的可能性越大(例如,一些用户可能在月初、月末或其他特定时间点通过指定的软件模块完成一些业务)。
在计算第一概率时,对于选定的用户和选定的软件模块,可以提取该用户在一段时间内使用该模块的历史使用数据,统计第一预设时间段(每个小时、每天、每周等)的使用频率。将使用频率高于一定阈值的时间点作为热门使用时间,该用户的热门使用时间记为前述的ti1(热门使用时间有多个),每个热门使用时间ti1对应的使用频率为前述的ni1。然后可利用前述第一表达式计算该选定的用户在不同时间下再次使用该选定的模块的第一概率P1(t)。当重新选择一组用户、重新选择软件模块时,可以重复前述步骤,以此可以计算任一用户在任何时间使用任一软件模块的第一概率。其中,可以将一段时间内所有时间点对应的概率最大值作为该段时间使用该选定模块的概率。
其中,P29t)表示在t时间使用第一软件模块的第二概率;t0表示最近一次使用第一软件模块的时间;t-t0表示最近一次使用第一软件模块的时间t0与t时间之间的时间间隔;ti2表示第i2次使用与第(i2+1)次使用第一软件模块的时间间隔;P(t-t0|ti2)表示在周转时间ti2的影响下,在t时间使用第一软件模块的概率;T2表示采样数据中的最大时间间隔;λ2为指数分布的参数。本领域技术人员可以对λ2进行设置。
其中,根据该周转时间可确定频繁间隔时间,P(t|ti2)实质上表示在频繁间隔时间的影响下,在t时间使用第一软件模块的概率。频繁间隔时间是本申请实施例提供的名词,对于给定的用户和该用户使用过的一个软件模块,通过分析该用户在相邻的两次使用该模块的时间间隔分布情况,统计各时间间隔在不同的时间区域出现的次数,提取出的次数较多的时间区域作为该用户对于该模块的频繁间隔时间。
对于一组用户-模块关系而言,在用户的最近一次使用时间至当前时间的时间间隔差越靠近频繁间隔时间时,该用户再次使用该模块的可能性越大。
在计算第二概率时,对于选定的用户和选定的软件模块,可以根据历史使用数据得到该用户对于该选定的模块,在相邻两次使用时的时间间隔分布情况,得到选定用户使用选定模块的时间间隔数组,记为L
t=l
1,l
2,l
3…l
t]。为将数据规范化,可以令时间间隔数组L
t=[l
1/T2,l
2/T2,l
3/T2…l
t/T2],T2=max(l
1,l
2,l
3…l
t),l
1,l
2,l
3…l
t即为前述第二表达式中的t
i2,
在确定最近一次使用该选定的模块的时间t
0后,可以通过前述第二表达式,计算在不同时间下,该选定的用户受频繁间隔时间的影响而再次使用该选定的模块的第二概率P2(t)。当重新选择一组用户、重新选择软件模块时,可以重复前述步骤,以此可以计算对任一用户在任何时间使用任一软件模块的第二概率。其中,可以将一段时间内对应的概率最大值作为该段时间使用该选定模块的概率。
通过前述第一表达式可以计算出每个第二用户在预测使用时长内使用第一软件模块的第一概率p1,通过前述第二表达式可以计算出每个第二用户在预测使用时长内使用第一软件模块的第二概率p2,第一概率、第二概率可能是20%、50%、80%等值。
在一个实例中,可以将第一概率p1、第二概率p2的加权平均值作为单个第二用户在预测使用时长内使用第一软件模块的概率值P1m。
通过前述第一种和第二种应用场景,可以在第一用户为非目标用户时,根据第一软件模块的当前使用情况作出不同的许可资源处理方式,在第一软件模块当前存在空闲的许可资源时,结合第一用户、第二用户的历史使用数据,基于不同用户的使用习惯,在为第二用户短期预留部分许可资源的情况下,将多余的许可资源分配给第一用户使用,不仅保障了部分用户优先使用许可资源的权利,还能够提升许可资源的有效使用率。
第三种应用场景:
请参阅图3,当获取到目标级别的第一用户关于第一软件模块的许可请求时,根据第一软件模块的当前许可数据得知第一软件模块此时还存在空闲的许可资源,这种情况下,由于此时的第一软件模块存在空闲的许可资源,且第一用户为目标级别的用户,可以判定该第一用户满足当前使用第一软件模块的许可使用条件,将关于第一软件模块的空闲的许可资源分配给第一用户。
第四种应用场景:
请继续参阅图3,当获取到目标级别的第一用户关于第一软件模块的许可请求时,根据第一软件模块的当前许可数据得知第一软件模块此时不存在空闲的许可资源。但由于第一用户为目标级别的用户,具有优先使用权利,此时可以从当前正使用第一软件模块的许可资源的非目标级别的用户中确定出目标用户,并对目标用户进行许可资源的强制释放,从而保障第一用户的优先使用权利。
基于此,作为上述S12在第四种应用场景下的一种实现方式,S12可以包括S31-S32,作为上述S13在第四种应用场景下的一种实现方式,S13可以包括S33-S35。
S31:在第一用户为目标级别的用户,且在第一软件模块当前不存在空闲的许可资源时,根据当前许可数据确定是否存在当前占用第一软件模块的第三用户,第三用户为非目标级别的用户。
由于许可资源的许可总量通常是大于具备优先使用权的用户个数的,所以不存在第三用户(即当前使用第一软件模块的所有用户都是目标级别的用户)的可能性较低。
S32:当确定存在至少一个第三用户时,确定第一用户当前满足第一软件模块的许可使用条件。
S33:基于至少一个第三用户对于第一软件模块的历史使用数据,从至少一个第三用户中确定目标用户。
其中,当确定存在一个第三用户时,将该第三用户作为目标用户,执行S34;当确定存在多个第三用户时,从多个第三用户对应的第三用户群体中确定出目标用户,确定出目标用户后执行S34。
S34:对目标用户在使用的许可资源进行许可释放。
其中,当确定出目标用户后,对该目标用户在使用的关于第一软件模块的许可资源进行许可释放,从而强制释放非目标级别的用户当前正在使用的第一软件模块的许可资源,从而使得第一软件模块能够存在空闲的许可资源。
S35:将释放得到的许可资源分配给第一用户。
其中,将释放得到的关于第一软件模块的许可资源分配给该目标级别的第一用户。
通过上述S31-S35的实现方式,可以保障在请求方为目标级别的用户时,优先使用该第一软件模块。在高优先级用户申请许可资源的情况下,若许可资源不足,通过分析当前占用许可资源的普通用户(第三用户)的用户级别和使用状态,对目标用户进行许可资源的强制释放,可保障目标级别的高优先级用户的优先使用权。
作为上述S33的一种可选实施方式,S33可以包括子步骤S331-S332。
S331:根据至少一个第三用户中,每个第三用户对于第一软件模块的历史使用数据,计算每个第三用户对于第一软件模块的预测使用时长、当前已用时长、闲置时长。
其中,关于预测使用时长的计算方式请参照前述S211-S213的相关描述,在此不再赘述。
每个第三用户对于第一软件模块的当前已用时长、闲置时长可以通过统计得到。闲置时长是指用户虽然登录或者启动了第一软件模块,但是该用户当前没有对第一软件模块进行有效操作,没有对第一软件模块下发有效指令,使得第一软件模块虽然被启动但是实质处于闲置状态的时间。闲置时长的起始时间为最近一次对第一软件模块进行有效操作的时间。
S332:基于每个第三用户对于第一软件模块的预测使用时长、当前已用时长、闲置时长,从至少一个第三用户中确定目标用户。
通过上述实现方式,可以结合第一软件模块当前的被使用的情况,结合第三用户对于第一软件模块的预测使用时长、当前已用时长、闲置时长,确定出需要进行许可资源释放的目标用户,从而保障目标级别的用户随时有许可资源可用。
作为上述S332的一种实现方式,S332可以包括子步骤S3321-S3322。
S3321:基于每个第三用户对于第一软件模块的预测使用时长、当前已用时长、闲置时长,计算至少一个第三用户中每个用户的释放概率。
对于每个第三用户,可以获取每个用户对于第一软件模块的当前已用时长、每个用户对于第一软件模块的闲置时长,关于每个第三用户的预测使用时长,可以参考前述S211-S213的方式得到。
以第三用户群体G2中的用户gj为例,第三用户gj的释放概率可以通过下列第三表达式计算得到。
其中,Qj表示用户gj的释放概率,α表示权重参数;tj表示用户gj的预测使用时长,rj表示用户gj对于第一软件模块的当前已用时长,uj表示用户gj对于第一软件模块的闲置时长。
通过上述第三表达式可以计算第三用户群体G2=[g21,g22,g23…g2m]中每个用户的释放概率,g21,g22,g23…g2m均表示当前正使用第一软件模块a1的第三用户。
在对前述至少一个第三用户中的每个第三用户计算释放概率后,执行S3321。
S3321:根据每个第三用户的释放概率,从至少一个第三用户中确定目标用户。
若第一用户对于第一软件模块的许可请求,是针对一份许可资源的,则可以将至少一个第三用户中释放概率值最大的用户作为目标用户。若第一用户对于第一软件模块的许可请求是针对多份许可资源的,则可以将释放概率值最大的多个用户作为目标用户,从而有利于批量的释放许可资源。
通过上述实现方式,可以对当前正占用许可资源的普通用户进行资源的动态释放,以供目标级别的用户优先使用许可资源,提升许可资源的有效使用率。
可选地,对于上述几种应用场景,当为第一用户分配第一软件模块的许可资源后,可以保存为该第一用户计算出的预测使用时长,以供在下一次计算该用户的预测使用时长时作为数据参考。
上述许可资源调度方法可以应用于企业内部资源的管理,例如,可以将许可资源分配给同一单位内的不同级别的用户,也可以应用于软件提供商对购买许可资源的其他用户的管理,例如,将许可资源分配给不同级别的客户,对此本申请不作限制。
基于同一发明构思,请参阅图4,本申请实施例还提供一种许可资源调度装置400,该装置包括:获取模块401、判断模块402、分配模块403。
获取模块401,用于获取第一用户对于第一软件模块的许可请求,以及第一软件模块的当前许可数据。
判断模块402,用于根据第一用户的身份、第一用户对于第一软件模块的历史使用数据以及第一软件模块的当前许可数据,判断第一用户当前是否满足第一软件模块的许可使用条件。
分配模块403,用于在确定第一用户当前满足第一软件模块的许可使用条件时,为第一用户分配第一软件模块的许可资源。
通过上述装置可以执行前述的许可资源调度方法,能够在软件许可资源有限的情况下,提升软件许可资源的利用率。
可选地,上述装置还可包括计算模块,计算模块用于在第一用户为非目标级别的用户,且在第一软件模块当前存在空闲的许可资源时,基于第一用户对于第一软件模块的历史使用数据,计算第一用户本次对于第一软件模块的预测使用时长;计算未使用第一软件模块的第二用户在预测使用时长内对于第一软件模块的预测许可需求量,第二用户为目标级别的用户;根据当前许可数据确定第一软件模块当前空闲的许可资源数量,相应的,判断模块402还可以用于当第一软件模块当前空闲的许可资源数量大于预测许可需求量时,确定第一用户当前满足第一软件模块的许可使用条件。
可选地,获取模块401还可用于获取第一用户对于第一软件模块的历史使用数据,计算模块还可用于根据第一用户对于第一软件模块的历史使用数据,提取第一用户使用第一软件模块的时间长度特征;基于时间长度特征,预测计算第一用户本次对于第一软件模块的预测使用时长。
可选地,获取模块401还可用于获取未使用第一软件模块的第二用户对于第一软件模块的历史使用数据;计算模块还可用于根据第二用户对于第一软件模块的历史使用数据,提取第二用户使用第一软件模块的时间点特征,和/或,时间间隔特征;根据第二用户使用第一软件模块的时间点特征,和/或,时间间隔特征,计算第二用户在预测使用时长内对于第一软件模块的预测许可需求量。
可选地,计算模块还可用于根据第二用户使用第一软件模块的时间点特征,计算第二用户在预测使用时长内使用第一软件模块的第一概率;和/或,根据第二用户使用第一软件模块的时间间隔特征,计算第二用户在预测使用时长内使用第一软件模块的第二概率;根据第一概率和/或第二概率,确定第二用户在预测使用时长内对于第一软件模块的预测许可需求量。
可选地,判断模块402还可用于在第一用户为目标级别的用户,且在第一软件模块当前不存在空闲的许可资源时,根据当前许可数据确定是否存在当前占用第一软件模块的第三用户,第三用户为非目标级别的用户;当确定存在至少一个第三用户时,确定第一用户当前满足第一软件模块的许可使用条件;相应的,计算模块还可用于基于至少一个第三用户对于第一软件模块的历史使用数据,从至少一个第三用户中确定目标用户;分配模块403还可用于对目标用户在使用的许可资源进行许可释放;将释放得到的许可资源分配给第一用户。
可选地,计算模块还可用于根据至少一个第三用户中,每个第三用户对于第一软件模块的历史使用数据,计算每个第三用户对于第一软件模块的预测使用时长、当前已用时长、闲置时长;基于每个第三用户对于第一软件模块的预测使用时长、当前已用时长、闲置时长,从至少一个第三用户中确定目标用户。
可选地,计算模块还可用于基于每个第三用户对于第一软件模块的预测使用时长、当前已用时长、闲置时长,计算至少一个第三用户中每个用户的释放概率;根据每个第三用户的释放概率,从至少一个第三用户中确定目标用户。
关于本申请实施例的许可资源调度装置400的其他细节,请参考前述关于许可资源调度方法中的相关描述,在此不再赘述。
基于同一发明构思,请参阅图5,本申请实施例还提供一种电子设备500,电子设备500包括但不限于服务器、个人计算机等具有运算处理能力的设备。
该电子设备500包括:存储器501、处理器502、通信单元503。通信单元503包括通信总线,通信总线用于实现电子设备500中各个组件之间的直接或间接连接。
存储器501是一种存储介质,可以是高速RAM存储器,也可以是非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器501可用于存储前述许可资源调度装置400中的各个功能模块及对应的计算机程序。
处理器502具有运算处理能力,可以是中央处理器502(Central ProcessingUnit,CPU)、网络处理器502(Network Processor,NP)等通用处理器;还可以是专用处理器或者其他可编程逻辑器件搭建的处理器。处理器502可以实现本申请实施例提供的方法、步骤及逻辑框图。
存储器501上存储有处理器502可执行的计算机程序,处理器502用于执行存储器501中存储的计算机程序,从而实现前述的许可资源调度方法。
需要说明的是,图5所示结构仅作为示意,具体应用时可以有更多的组件,或具有不同于图5所示的其他配置方式。
基于同一发明构思,本申请实施例还提供一种存储介质,该存储介质上存储有计算机程序,当计算机程序被执行时执行前述的许可资源调度方法。
该存储介质可以是计算机能够存取的任何可用介质,或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,许可资源调度装置400中各个模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,电子设备500的多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。