一种基于蒙特卡洛树搜索的运维系统故障定位方法和系统
技术领域
本发明实施例涉及智能运维分析领域,尤其涉及一种基于蒙特卡洛树搜索的运维系统故障定位方法和系统。
背景技术
随着云计算大数据技术的日益普及,IT运维团队面临着集群规模更大,业务组件更多,监控可视化与智能化更复杂等诸多难题,其压力和挑战与日俱增;任何一次的服务中断事件都有可能对公司业务造成极大影响。因此,当出现故障时,为了减小造成的影响,必须快速、准确、有效的定位到引起故障的根因点,然后通过快速修复来保障数字业务稳定可靠运行,该定位过程是IT部门职责的重中之重。
然而,传统的根因推导过程是由运维工程师通过对不同维度的数据进行查看来进行判断,而应用运维知识经验来排查推导异常根因,其过程会耗费较长的时间。因此,需要一种故障定位方法,其可以快速、高效地找到故障根源,以加快解决问题,从而为排除系统故障赢得更多的时间,在一定程度上降低了故障的持续时间,减少了因故障带来的损失。
发明内容
为了克服企业传统运维方式中依赖运维经验和手工操作的传统故障排查方式效率低下的弊端,本发明提供一种基于蒙特卡洛树搜的运维系统故障定位方法,将根因分析转化为一个巨大的空间的搜索问题,通过启发式的搜索来定位,以解决异常定位复杂难度大的问题,进一步实现运维的智能化。
第一方面,本发明提供一种基于蒙特卡洛树搜索的运维系统故障定位方法,包括以下步骤:
步骤S101、获取运维系统的多维指标数据;
步骤S103、对获取的多维指标数据进行预处理操作,将预处理的所述数据划分为正常数据集和异常数据集;
步骤S105、预测正常数据集中各维度最细粒度指标的数据值;
步骤S107、构建数据立方体,确定某一属性值组合导致异常发生的可能性大小的衡量指标;
步骤S109、利用蒙特卡洛树逐层搜索根因;
步骤S111、根据搜索的结果,生成异常事件产生的原因分析结果。
其中,所述步骤S101包括:若监控到数据有异常发生时,获取所述运维系统的各个具体维度指标的数据值。
其中,所述步骤S103具体包括:对获取的多维指标数据进行预处理,并将预处理后的同一时刻的数据进行整合,按照异常发生的时刻,将数据划分为正常数据集和异常数据集。
其中,所述步骤S105中,使用统计预测的方法对每个运维监控指标的内部规律进行抓取,对正常数据集利用历史数据来训练得到其对应的异常发生后原本的期望的预测值,并将预测结果添加到异常数据集中。
其中,其中所述预测采用预测算法模型为ARIMA(p,d,q)模型,p代表自回归模型阶数,d代表将时间序列变成平稳所做的差分阶数,q代表移动平均阶数,其公式如下:
式中,
X为平稳后的时间序列,
ε为随机干扰,
、θ和
为所要训练的预测模型的模型参数,并且
为常数,
t表示某一时刻;
当时间序列不平稳时,对其做d次差分运算以使得其变换为平稳。
其中,所述步骤S107包括:根据监控到的异常数据集,建立对应的数据立方体的多维数据模型。
其中,所述数据立方体中的每个维对应于模式中的一个或一组属性,每个单元存放某种聚集度量值。
其中,所述根因通过潜在分数最高的属性集合来确定。
其中,所述步骤S109中,对于每个搜索空间,迭代地执行以下搜索过程:选择,扩展,模拟,反向传播。
第二方面,本发明提供一种基于蒙特卡洛树搜索的运维系统故障定位系统,包括:
获取模块,其用于获取运维系统的多维指标数据;
处理模块,其用于对获取的多维指标数据进行预处理操作,将预处理的所述数据划分为正常数据集和异常数据集;
预测模块,其用于预测正常数据集中各维度最细粒度指标的数据值;
构建模块,其用于构建数据立方体,确定某一属性值组合导致异常发生的可能性大小的衡量指标;
搜索模块,其用于利用蒙特卡洛树逐层搜索根因;
分析模块,其用于根据搜索的结果,生成异常事件产生的原因分析结果。
与现有技术相比,本发明的方法,在巨大的搜索空间下,相对于传统的搜索算法,蒙特卡洛树搜索在时间和空间方面都有着很大的优势,可以快速、准确的定位到导致异常发生的具体维度,在一定程度上降低异常的持续时间,降低因异常发生而给企业带来的损失。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,并且相同或对应的标号表示相同或对应的部分,其中:
图1是示出根据本发明实施例的一种基于蒙特卡洛树搜索的运维系统故障定位方法流程图;
图2是示出根据本发明某一实施例的三维数据立方体示意图;
图3是示出根据本发明某一实施例的MCTS的执行过程示意图;
图4是示出根据本发明某一实施例的MCTS每次迭代的流程示意图;
图5是示出根据本发明实施例的一种基于蒙特卡洛树搜索的运维系统故障定位系统的示意图;以及
图6是示出根据本发明实施例的一种电子设备的示意图。
具体实施方式
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义,“多种”一般包含至少两种。
取决于语境,如在此所使用的词语“如果”、“若”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者装置中还存在另外的相同要素。
下面结合附图详细说明本发明的可选实施例。
实施例一
参见图1所示,本发明实施例提供一种基于蒙特卡洛树搜索(Monte Carlo TreeSearch,MCTS)的运维系统故障定位方法,该方法包括以下步骤:
步骤S101、获取运维系统的多维指标数据;
步骤S103、对获取的多维指标数据进行预处理操作,将预处理的所述数据划分为正常数据集和异常数据集;
步骤S105、预测正常数据集中各维度最细粒度指标的数据值;
步骤S107、构建数据立方体,确定某一属性值组合导致异常发生的可能性大小的衡量指标;
步骤S109、利用蒙特卡洛树逐层搜索根因;
步骤S111、根据搜索的结果,生成异常事件产生的原因分析结果。
其中,衡量指标表示某一属性值组合是根因的可能性。进一步,逐层表示从蒙特卡洛树的第一层(根节点)开始,从上至下,按从顶层到底层的次序访问树中元素。更进一步,根因表示为导致异常发生的原因,即导致异常发生的某一维度或者某一交叉维度上的属性值组合;进一步,通过找到根因,以便可以尽快做进一步的修复止损等操作,从而完成对故障的定位和修复。另外,最细粒度指标对应于树的最后一层节点(叶子节点)。在异常发生时,最后一层节点有一个数据,可以理解为真实数据,对这个指标进行预测,得到一个预测值,可以理解为期望数据;从真实数据和期望数据的值进行反向推导,观察其影响力大小,从而可以判别由哪个元素组合引起的异常。
在实际运维场景中,当检测出某一检测指标发生异常的时刻后,由于大部分的监测指标具有多个维度,需要进一步在多维属性值组合中找到潜在可能性最大的、导致异常发生的属性值组合。在这样巨大的搜索空间下,相对于传统的搜索算法,MCTS在时间和空间方面都有着很大的优势。通过本发明的方法,能够快速、准确的定位到导致异常发生的具体维度,在一定程度上降低异常的持续时间,降低因异常发生而给企业带来的损失。
实施例二
在实施例一的基础上,本实施例还可以包括以下内容:
在进行运维系统的故障定位时,对运维系统的多维度指标数据进行监控;进一步,所述步骤S101包括:若监控到运维系统的多维度指标数据有异常发生时,获取运维系统的各个具体维度指标的数据值。其中,具体维度指标可以根据具体场景中所监控的运维数据来确定,不同的数据其维度不同,属性不同。例如所监控的数据有闪退率、访问量、用户增速、留存率等,其对应的属性可为运营商、省份、移动设备类型、软件版本、浏览器版本、数据中心归属地等等。
具体地,运维系统的数据都是具有多维属性的,比如监控某个网页在单位时间内被访问的次数(访问量)。某个网页的访问量对应着多个维度,比如访问者的所在位置、网络运营商、数据中心、移动设备类型、浏览器版本、用户年龄等等。而各个维度又对应着一系列的属性值,比如位置可以为地区1、地区2、地区3、地区4等等,网络运营商可以分为运营商1、运营商2、运营商3等,数据中心可以分为1号、2号等,移动设备可以分为电脑、平板、手机等……。
更进一步,步骤S103中,对获取的多维指标数据进行预处理,并将预处理后的同一时刻的数据进行整合,按照异常发生的时刻,将数据划分为正常数据集和异常数据集。
另外,在步骤S105中,使用统计预测的方法对每个运维监控指标的内部规律进行抓取,对正常数据集利用历史数据来训练得到其对应的异常发生后原本的期望的预测值,并将预测结果添加到异常数据集中。即通过对正常数据集利用历史数据来训练,预测得到如果未发生异常时本应得到的数值,并将预测结果添加到异常数据集中。这里用于预测所构建的预测算法模型为ARIMA(p,d,q)模型。该ARIMA(p,d,q)模型为自回归差分移动平均模型(Autoregressive Integrated Moving Average model),其是基于平稳时间序列建立的,该ARIMA(p,d,q)模型中p代表自回归模型阶数,d代表将时间序列变成平稳所做的差分阶数,q代表移动平均阶数。对因变量的滞后值以及随机误差项的当前值和滞后值进行回归建立的模型,其公式如下:
其中,
X为平稳后的时间序列,
ε为随机干扰(误差),
、θ和
为所要训练的预测模型的模型参数,并且
为常数,
t表示某一时刻。
第二部分为自回归过程,可以表达为:
其中,
x t 为p阶自回归过程,用AR(P)表示,
为自回归参数,P为阶数,即
分别表示第一阶自回归参数、第二阶自回归参数、...、第p阶自回归参数,
是白噪声过程。并且,第二部分表示表示t时刻的随机变量
x t 的取值是前p期
的多元线性回归。
第三部分为移动平均过程,可以表达为:
其中,
x t 为q阶移动平均过程,用MA(q)表示,
为移动平均方程参数,q为阶数,即
分别表示第一阶移动平均参数、第二阶移动平均参数、...、第q阶移动平均参数,
是白噪声过程。另外,第三部分表示t时刻的随机扰动
的取值是前q期
的多元线性回归。
其中,ARIMA(p,d,q)模型要求随机过程为平稳的,如果数据序列(时间序列)不平稳,需要对其做d次差分运算使得其变换为平稳的随机过程。所谓差分,就是时间序列变量的本期值与其滞后值相减的运算称为差分。例如,一阶差分:
二次一阶差分表示为:
由此可以引申出d次一阶差分的表示。
具体流程如下:
对一个时间序列,(1)经过d次差分后,判断该随机过程是否平稳;(2) 找到合适的d之后,时间序列
转化为平稳的随机过程
;(3)利用
将随机过程
平稳化,即将差分自回归移动平均模型ARIMA(p,d,q)构建为自回归移动平均模型ARMA(p,q)。p,d,q分别代表自回归阶数、差分次数、移动平均阶数。
实际上,ARIMA模型的构建在于:寻找差分次数d;估计ARMA模型参数。而ARMA模型的参数值通过极大似然估计估计参数值。
等这些噪声分量也需要通过最小二乘法等方法估计得到。
实施例三
在实施例二的基础上,本实施例可以包括以下内容:
为了便于领域技术人员更好的理解本发明实施例,对其进行进一步地详细说明。在一些应用场景中,步骤S107可以包括:根据监控到的异常数据集,建立对应的数据立方体的多维数据模型。其中,该数据立方体是为了满足用户从多角度多层次进行数据查询和分析的需要而建立的基于事实和维的数据模型。进一步,每个维对应于模型中的一个或一组属性,而每个单元存放某种聚集度量值。例如,参见图2所示,一个由三个维度构成的立方体,其基于不同的维度组合,可以将数据立方体进行拆分,其对应的低纬度子立方体被称作方体。根据所述的异常数据集的具体向量的维度数来建立数据立方体,需要理解的是,数据立方体只是多维模型的一个形象的说法,立方体其本身只有三维,但多维模型不仅限于三维模型,可以组合更多的维度。
也就是说,多维数据模型当检测到某一时刻的多维监测指标总量发生异常时,需要快速定位到导致该时刻数据异常的某一方体内的属性值组合。因此,需要找到一种适当的方法来确定某一属性值组合是导致异常发生的可能性的大小,本发明实施例采用的衡量方法为Hotspot算法。
而针对不同的属性值集合如何影响总的监控指标而提出一个假设:涟漪效应(Ripple effect),其核心思想是当根因集合中的元素值增大或减小时,其子代或父代中的元素值都会相应的按某种方式增大或减小,例如,一个维度组合(A=a,*,*)为异常,那么维度组合(A=a,B=b,C=c)都会以相同的比例出现异常变化。
由上述的涟漪效应可知,任何一个元素值变化时,最细粒度元素会等比例变化,而最细粒度变化元素又可将这些变化“传导给”其他所有元素。因此,可用所有的最细粒度元素来表征任何一个元素或集合的变化。将最细粒度所有元素的真实值、预测值构成的向量分别记为v,f。任给定某一个方体下的属性值集合S,假设其为根因则可推导出其对应最细粒度元素值,对应的向量记为a。
另外,本发明实施例以PS值(Potential Score,潜在分数)来衡量一个集合成为根因的可能,其主要在于暴力遍历的搜索所有的维度组合并计算是根因的可能性,最后挑选出可能性最大的集合即可;然而实际上,当多维指标的维度大到一定程度时,就会有成千上万的不同组合是可能导致异常发生的原因,其搜索空间巨大,找到导致异常发生的组合也很困难,所以本发明实施例使用了MCTS进行更高效的搜索。使用MCTS原因如下:
要遍历搜索所有可能的集合是不可能做到的。因为随着维度的增加,元素数目呈指数级爆炸式增长,而我们想要搜索的不是单个元素,而是元素集合,就会有成千上万的不同组合是可能导致异常发生的原因。理论上一个方体中如果有n个元素,那么对应所有集合的数目是2n-1(除去空集),也就是若n=100,则集合数目约为2100个(实际为2100-1),要遍历这个天文数字数目的集合,并分别求ps值,显然在有限时间内是不可能实现的。
而本发明实施例的搜索空间就是将问题求解过程表现为从初始状态到目标状态寻找这个路径的过程。蒙特卡洛树为树结构:树结构定义了一个可行解的解空间,每一个叶子节点到根节点的路径都对应了一个解(solution),解空间的大小为2N(N等于决策次数,即树高度)
在异常根因定位中,本发明实施例认为PS值越大的维度集合成为根因的可能性越大。该PS值公式为:
其中,
表示向量之间的距离,其采用欧氏距离,公式如下:
其中,欧氏距离是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离或者向量的自然长度,x、y表示点的坐标。集合的潜在分数范围从0到1,若一个集合S的潜在分数较高,则认为该集合有较大的可能性就是导致异常的根本原因。本发明实施例根据涟漪效应计算每一个方体中的所有属性值集合的潜在分数,然后通过比较各个方体中的潜在分数最高的属性集合来确定最终的导致异常发生的根因集合。
实施例四
在上述实施例的基础上,本实施例可以包括以下内容:
在构建数据立方体,并确定某一属性值组合导致异常发生的可能性大小的衡量指标后,需要进行根因的搜索。在一些应用场景中,步骤S109需要遍历搜索PS值最大的维度集合,而由于空间过大、搜索太慢的问题,故采用MCTS算法来对每个方体进行搜索。其中,MCTS算法用于在决策空间中获取最优决策,在理论上时间越长其结果越准确,而实际中常通过设定阈值(准确性阈值、时间阈值等)的方法,当找到满足阈值的结果即可停止搜索。进一步,参见图3和图4所示,对于每个搜索空间,蒙特卡洛树搜索迭代地执行以下搜索过程:选择,扩展,模拟,反向传播(反馈)。为了使得迭代的执行过程描述清楚,下面对其进行详细描述:
选择:蒙特卡洛树作为一种树形结构,其每个节点对应一种状态,选择的过程就是在树中找到一个最好的值得探索的节点。从根节点开始,先选择没有探索过的节点,如果都探索过了,利用上限置信区间UCB(Upper Confidence Bound)策略,选择一个最优的子节点,即最大化UCB值的结点,直至叶子节点结束。计算每一个可选节点对应的分数的公式如下:
其中,
表示这个节点的平均收益值,其值越高,代表这个节点的收益越好,越值得被选择。
N表示所有的探索次数,
n i 表示当前节点的探索次数。
C为探索常数,其可根据经验选择,
C越大就越偏向广度搜索,
C越小就越偏向深度搜索。最后本发明实施例选择分数最高的节点。扩展:若在选择步骤结束后,选择的子节点不是叶子节点,即没有全部扩展,则对其扩展更多的节点,若无法扩展更多的节点,则对节点进行模拟。
模拟:采用某一策略,对蒙特卡洛树搜索的过程进行快速模拟,可以得到上述扩展出来的节点的模拟结果。其中,某一策略可以采用一个简单的策略,例如快走策略走到底或者随机策略,得到一个胜负结果。
反馈:根据得到的模拟结果,回溯并加到MCTS树结构上,即对当前节点以及父节点进行节点状态的更新。
重复进行以上选择,扩展,模拟,反馈四个步骤,直至满足以下条件之一:
一个最好的根因组合被找到;
所有可用的节点都被扩展;
迭代次数已经超过所设置的限制。
本发明实施例通过不断的模拟得到大部分节点的UCB值,然后在下次模拟的时候根据UCB值有策略得选择更加值得利用和探索的节点继续模拟,在搜索空间巨大且计算能力有限的情况下,本发明实施例可以更大概率,更集中的找到一些更好的节点。
实施例五
在上述实施例的基础上,本实施还可以包括以下内容:
参见图5所示,本发明实施例提供一种基于蒙特卡洛树搜索的运维系统故障定位方法,所述方法具体包括以下步骤:
监控运维系统的指标数据,若监控到数据有异常发生时,收集异常发生前4周到异常发生后,运维系统的各个具体维度指标的数据值。本发明实施例以监控机房的网络状态为例,对应的各个维度向量分别为地区、机房编号、运营商。其中地区包括地区1、地区2、地区3和地区4;机房编号为1~n;运营商为运营商1、运营商2、运营商3。
数据预处理,对获取的运维系统的指标数据进行预处理,将同一时刻的数据进行整合,按照异常发生的时刻,对收集到的数据进行分割,划分为正常数据集合和异常数据集合。
预测最细粒度的指标数据,对上述划分后得到的正常数据集中各维度指标的最细粒度的历史数据值随时间推移而形成的数据序列视为一个随机序列,利用ARIMA模型近似描述这个序列,从而得到未来时刻的预测值,即异常发生时刻其原本理想的数据预测值,并将其添加到异常数据集中。以本发明实施例为例,得到的最终的异常数据集的结果如下表所示。
表1、异常数据集的结果
其中包括时间戳,三个不同的运维系统监控维度,以及运维系统监控各个维度的最细粒度元素向量的实际值和预测值。
构建数据立方体,确定某一属性值组合是导致异常发生的可能性大小的衡量指标。以本发明实施例为示例,针对所述结合预测值得到的最终的异常数据集,建立一个多维数据模型。因为数据集共有三个维度,故而建立三维数据立方体,其包含了异常数据集的三个维度,从上而下标记为地区名、机房编号和运营商名称。具体的,其中第一层方体为地区的一维向量,具体包括地区1,地区2,地区3,地区4;第二层方体为地区和机房编号的二维向量,具体包括地区1-1号机房、地区1-2号机房、地区1-3号机房、地区2-1号机房,地区2-2号机房…;类似的,第三层方体为三维向量,具体包括地区1-1号机房-运营商1、地区1-1号机房-运营商2…。所述的确定某一属性值组合是导致异常发生的可能性大小的衡量指标通过潜在分数来衡量,计算每一个方体中的所有属性值集合的潜在分数,不同元素向量的潜在分数根据最细粒度元素向量的预测值和实际值来计算得到的,然后通过比较各个方体中的潜在分数最高的属性集合来确定最终的导致异常发生的根因集合。
利用蒙特卡洛树逐层搜索根因,对根因输出结果进行分数评估。根据所述的最细粒度向量的预测值和实际值,采用MCTS方法对分层后的数据逐层进行搜索,不断地对不同的属性值组合进行计算,获得潜在分数最大的属性值组合。从根节点出发,经过选择、扩展、计算和反馈四个步骤,对蒙特卡洛树中的节点进行搜索,通过不断的添加、计算过程,获得具有最大潜在分数的向量或者属性值集合。
根据计算的结果,生成异常事件产生的原因分析结果。本发明实施例可以通过设置阈值或者迭代次数来减少计算时间,提高运行效率。在不断地迭代计算中,当计算得到的最大潜在分数大于所设置的阈值或者迭代次数大于所设置的次数时,就停止计算,此时计算得到的最大潜在分数对应的向量或者属性值组合就是本发明实施例想要的导致异常发生的最佳向量或者属性值组合。需要注意的是,当计算结束后,仍然没有达到本发明实施例所设置的阈值,则选择最后计算得到的最大潜在分数对应的向量或者属性值组合作为根因集合。
实施例六
在上述实施例的基础上,本实施还可以包括以下内容:
本发明实施例提供一种基于蒙特卡洛树搜索的运维系统故障定位系统,包括:
获取模块,其用于获取运维系统的多维指标数据;
处理模块,其用于对获取的多维指标数据进行预处理操作,将预处理的所述数据划分为正常数据集和异常数据集;
预测模块,其用于预测正常数据集中各维度最细粒度指标的数据值;
构建模块,其用于构建数据立方体,确定某一属性值组合导致异常发生的可能性大小的衡量指标;
搜索模块,其用于利用蒙特卡洛树逐层搜索根因;
分析模块,其用于根据搜索的结果,生成异常事件产生的原因分析结果。
实施例七
参见图6所示,本实施例还提供一种电子设备600,所述电子设备600,包括:至少一个处理器601;以及,与所述至少一个处理器601通信连接的存储器602;其中,
所述存储器602存储有可被所述一个处理器601执行的指令,所述指令被所述至少一个处理器601执行,以使所述至少一个处理器601能够执行如上实施例所述的方法步骤。
实施例八
本公开实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令可执行如上实施例所述的方法步骤。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(AN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
以上介绍了本发明的较佳实施方式,旨在使得本发明的精神更加清楚和便于理解,并不是为了限制本发明,凡在本发明的精神和原则之内,所做的修改、替换、改进,均应包含在本发明所附的权利要求概括的保护范围之内。