一种消息传输方法及装置转让专利

申请号 : CN201410643705.5

文献号 : CN105635230B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 褚艳利

申请人 : 阿里巴巴集团控股有限公司

摘要 :

本申请公开了一种消息传输方法及装置,应用于发送方设备将消息传输给指定接收方设备的场景,该消息传输方法包括:接收发送方设备发送的消息;根据所述消息,确定所述发送方设备所属的项目分组,以及所述项目分组中与所述发送方设备对应的接收方设备;将接收的所述消息发送给所述接收方设备。本申请通过项目分组将每个项目所涉及的发送方设备及接收方设备关联起来,在消息传输过程中,根据该关联可以确保消息准确传输给接收方设备,有效避免了消息错投的现象。

权利要求 :

1.一种消息传输方法,其特征在于,应用于并行研发测试环境,方法包括:接收发送方设备发送的消息;

根据所述消息,确定所述发送方设备所属的项目分组,以及所述项目分组中与所述发送方设备对应的接收方设备;

将接收的所述消息发送给所述接收方设备。

2.如权利要求1所述的方法,其特征在于,根据所述消息,确定所述发送方设备所属的项目分组,以及所述项目分组中与所述发送方设备对应的接收方设备,包括:根据项目分组信息表,确定所述消息中包含的所述发送方设备的唯一标识对应的项目分组标识;其中,所述项目分组信息表中包含项目分组标识、发送方设备的唯一标识及接收方设备的唯一标识;

从项目分组信息表中,确定以所述项目分组标识作为查询键的存储模块;

确定所述存储模块中保存的接收方设备的唯一标识。

3.如权利要求2所述的方法,其特征在于,所述项目分组信息表中包含信息失效日期;

所述方法还包括:

根据信息失效日期,从所述项目分组信息表中删除失效的信息。

4.如权利要求2所述的方法,其特征在于,所述唯一标识包括下述标识中的一个或多个:互联网协议IP地址;

介质访问控制MAC地址;

域名。

5.如权利要求2所述的方法,其特征在于,所述方法还包括:从项目分组管理系统获取项目分组信息表保存在本地。

6.如权利要求5所述的方法,其特征在于,所述方法还包括:实时同步本地保存的项目分组信息表与项目分组管理系统中保存的项目分组信息表。

7.如权利要求6所述的方法,其特征在于,实时同步本地保存的项目分组信息表与项目分组管理系统中保存的项目分组信息表,具体包括:本地实时向项目分组管理系统获取项目分组信息表并缓存;或接收项目分组管理系统实时发送的项目分组信息表的动态变化信息,并根据所述动态变化信息,更新本地缓存的项目分组信息表。

8.一种消息传输装置,其特征在于,应用于并行研发测试环境,包括:接收单元,用于接收发送方设备发送的消息;

识别单元,用于根据所述消息,确定所述发送方设备所属的项目分组,以及所述项目分组中与所述发送方设备对应的接收方设备;

发送单元,用于将接收的所述消息发送给所述接收方设备。

9.如权利要求8所述的装置,其特征在于,识别单元,用于:根据项目分组信息表,确定所述消息中包含的所述发送方设备的唯一标识对应的项目分组标识;其中,所述项目分组信息表中包含项目分组标识、发送方设备的唯一标识及接收方设备的唯一标识;

从项目分组信息表中,确定以所述项目分组标识作为查询键的存储模块;

确定所述存储模块中保存的接收方设备的唯一标识。

10.如权利要求9所述的装置,其特征在于,所述项目分组信息表中包含信息失效日期;

识别单元还用于:

根据信息失效日期,从所述项目分组信息表中删除失效的信息。

11.如权利要求9所述的装置,其特征在于,所述设备的唯一标识包括下述标识中的一个或多个:互联网协议IP地址;

介质访问控制MAC地址;

域名。

12.如权利要求9所述的装置,其特征在于,识别单元,还用于:从项目分组管理系统获取项目分组信息表保存在本地。

13.如权利要求12所述的装置,其特征在于,所述装置还包括:同步单元,用于实时同步本地保存的项目分组信息表与项目分组管理系统中保存的项目分组信息表。

14.如权利要求13所述的装置,其特征在于,同步单元,用于:本地实时向项目分组管理系统获取项目分组信息表并缓存;或接收项目分组管理系统实时发送的项目分组信息表的动态变化信息,并根据所述动态变化信息,更新本地缓存的项目分组信息表。

说明书 :

一种消息传输方法及装置

技术领域

[0001] 本申请涉及计算机技术领域,尤其涉及一种消息传输方法及装置。

背景技术

[0002] 消息中间件利用高效可靠的消息传递机制进行数据交流,如针对由交易系统(包含n个功能相同的交易服务器)和支付系统(包含m个功能相同的支付服务器)构成的分布式环境而言,这两个系统之间可以通过消息中间件进行数据交流,实现将交易系统产生的消息随机投递到支付系统的一个支付服务器中。当这个支付服务器出现故障导致规定时间长度内未完成订单支付时,消息中间件会将此消息再次随机投递到其他支付服务器,以确保订单支付成功。
[0003] 在实际应用中,上述交易服务器往往具备多种功能,当需要对多个功能进行研发改进时,为提高研发效率,现有技术中一般采用并行研发的方式。所谓并行研发,是指由多个项目组分别对待改进的功能进行研发,并将研发结果投入到与实际的分布式环境非常相似的测试环境中进行测试。在研发结果测试通过后,即可上线使用。
[0004] 如:若分别对交易服务器的功能A1和A2进行研发,同时,为了实现支付服务器的相应功能,需要分别对支付服务器的功能B1和B2进行改进。那么,当A1和B1分别研发和改进成功并投放到测试环境中的交易服务器1和支付服务器1后,交易服务器1产生的消息会通过测试环境中的消息中间件,随机投递给测试环境中的一个支付服务器。按照开发人员的期望,该消息本应该被投递给投放了功能B1的支付服务器1,但由于消息中间件传递信息的随机性,该消息有可能被投递给投放了功能B2的支付服务器2,即发生消息错投。

发明内容

[0005] 本申请实施例提供一种消息传输方法,用于避免消息错投。
[0006] 本申请实施例还提供一种消息传输装置,用于避免消息错投。
[0007] 本申请实施例采用下述技术方案:
[0008] 一种消息传输方法,应用于并行研发测试环境,包括:
[0009] 接收发送方设备发送的消息;
[0010] 根据所述消息,确定所述发送方设备所属的项目分组,以及所述项目分组中与所述发送方设备对应的接收方设备;
[0011] 将接收的所述消息发送给所述接收方设备。
[0012] 一种消息传输装置,应用于并行研发测试环境,包括:
[0013] 接收单元,用于接收发送方设备发送的消息;
[0014] 识别单元,用于根据所述消息,确定所述发送方设备所属的项目分组,以及所述项目分组中与所述发送方设备对应的接收方设备;
[0015] 发送单元,用于将接收的所述消息发送给所述接收方设备。
[0016] 本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
[0017] 本申请实施例所述消息传输方法及装置,在接收发送方设备发送的消息,识别所述发送方设备所属的项目分组,以及所述项目分组中与所述发送方设备对应的接收方设备后,将接收的所述消息发送给所述接收方设备。上述方法中,通过项目分组将每个项目所涉及的发送方设备及接收方设备关联起来,在消息传输过程中,根据该关联可以确保消息准确传输给指定的接收方设备,达到项目间开发测试的隔离效果,有效避免了消息错投的现象。

附图说明

[0018] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0019] 图1为现有技术中中间件进行消息投递时出现消息错投示意图;
[0020] 图2为本申请实施例提供的一种消息传输方法的流程图;
[0021] 图3为本申请实施例中步骤S210的一种实现方法流程图;
[0022] 图4为本申请实施例提供的一种消息传输装置的结构示意图。

具体实施方式

[0023] 目前,在研发环境下,有时多个项目并行研发,若该多个项目都需要修改相同的系统,例如,每个项目都需要修改系统A和系统B,若系统A与系统B之间是通过中间件传输消息,则在多个项目分别对系统A和系统B进行修改时,仍采用原中间件进行消息传输,会存在消息错投的问题。具体场景如下:
[0024] 如图1中所示,三个并行研发项目分别对系统A分布式集群(以下简称系统A)及系统B分布式集群(以下简称系统B)进行修改,其中,第一研发项目使用的服务器为:系统A侧的服务器1和系统B侧的服务器4;该第一研发项目对系统A进行修改,如,在系统A原有功能基础上增加功能a得到系统A#1,为使同一项目的系统B侧的服务器4能够识别该功能a,需要服务器1向服务器4发送消息,以修改服务器4上运行的系统B,使其增加与功能a对应的功能a’,从而得到可以识别系统A#1的系统B#1。或者在对系统A#1及系统B#1进行测试时,服务器1也需要向服务器4发送消息。
[0025] 第二研发项目使用的服务器为:系统A侧的服务器2和系统B侧的服务器5;该第二研发项目在系统A原有功能基础上增加功能b得到系统A#2,为使同一项目的系统B侧的服务器5能够识别该功能,需要服务器2向服务器5发送消息,以修改服务器5上运行的系统B,使其增加与功能b对应的功能b’,从而得到可以识别系统A#2的系统B#2。或者在对系统A#2及系统B#2进行测试时,服务器2也需要向服务器5发送消息。
[0026] 第三研发项目使用的服务器为:系统A侧的服务器3和系统B侧的服务器6;该第三研发项目在系统A原有功能基础上增加功能c得到系统A#3,为使同一项目的系统B侧的服务器6能够识别该功能,需要服务器3向服务器6发送消息,以修改服务器6上运行的系统B,使其增加与功能c对应的功能c’,从而得到可以识别系统A#3的系统B#3。或者在对系统A#3及系统B#3进行测试时,服务器3也需要向服务器6发送消息。
[0027] 由于上述三个项目并行研发,在第一研发项目的服务器1向服务器4发送消息1时,第二研发项目的服务器2向服务器5发送消息2,以及第三研发项目的服务器3向服务器6发送消息3,该消息1、消息2以及消息3首先到达中间件,中间件按照现有的消息随机投递方式有可能将消息1投递给服务器5,将消息2投递给服务器6,将消息3投递给服务器4,因此,出现消息错投。
[0028] 上述中间件出现消息错投的原因在于,中间件并不知道与发送方设备(即上述服务器1、服务器2、服务器3)对应的接收方设备(即上述服务器4、服务器5、服务器6),也就是不知道两端系统中哪些设备具有关联。因此,本申请实施例在此场景下,建立发送方设备与对应的接收方设备之间的关联,即下面实施例中所述的建立项目分组,中间件通过该关联即可识别到与发送方设备对应的接收方设备,因此,可有效避免消息错投的现象发生。
[0029] 为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0030] 以下结合附图,详细说明本申请各实施例提供的技术方案。
[0031] 本申请实施例提供一种消息传输方法,应用于并行研发测试环境,如图2中所示,为所述消息传输方法操作流程图,具体包括如下步骤:
[0032] S200、接收发送方设备发送的消息。
[0033] S210、根据接收发送方设备发送的消息,确定发送方设备所属的项目分组,以及项目分组中与发送方设备对应的接收方设备。
[0034] S220、将接收的消息发送给确定出的接收方设备。
[0035] 为实现消息的正确投递,将消息发送给指定的接收者,本申请实施例采用建立项目分组,将属于同一项目的发送方设备及接收方设备划分到同一项目分组中,则通过识别发送方设备所属的项目分组,即可进一步确定发送方设备对应的接收方设备。
[0036] 在一种实施方式中,步骤S210的具体实现方法可以如图3中所示,包括如下子步骤30~子步骤32:
[0037] 子步骤30、根据项目分组信息表,确定接收发送方设备发送的消息消息中包含的发送设备的唯一标识对应的项目分组标识;
[0038] 本申请实施例项目分组信息表中保存有项目分组信息,该项目分组信息中包含:项目分组标识、发送方设备的唯一标识及接收方设备的唯一标识。
[0039] 子步骤31、从项目分组信息表中,确定以通过执行子步骤30确定出的项目分组标识作为查询键的存储模块。
[0040] 子步骤32、确定存储模块中保存的接收方设备的唯一标识。
[0041] 项目分组信息表中保存的项目分组信息中包含:项目分组名称、项目分组中发送方设备的唯一标识及接收方设备的唯一标识。因此,子步骤31中,可以根据项目分组标识作为查询键的存储模块。其中,所述存储模块是利用键值对的形式来进行存储的和索引,如子步骤30中的实例所示,key为“网络支付项目”,value为“10.209.64.123,10.209.64.125”。本申请实施例查找发送方设备所属的项目分组的目的在于:获知该发送方设备所对应的接收方设备,由于项目分组信息中包含接收方设备的唯一标识,因此,查找到了发送方设备所属的项目分组同时即获知了消息的接收方设备,具体来讲,子步骤32即获知了接收方设备的IP地址、MAC地址或域名。
[0042] 另外,本申请实施例支持默认分组,该默认分组中包含一组公共设备,每个系统提供至少一个公共设备,该默认分组中包含的一组公共设备分别为交互的两个系统提供的公共设备。在发送方设备没有对应的项目分组,也就是根据发送方设备的唯一标识查找不到对应的项目分组情况下,则可以认为该发送方设备属于默认分组,将发送方设备发送的消息发送给默认分组中对端系统提供的公共设备。
[0043] 在一种实施方式中,上述项目分组信息表的获取方法包括以下任一种:
[0044] 方法一:获取本地缓存的项目分组信息表;
[0045] 也就是,在中间件本地缓存有所述项目分组信息表情况下,优先从本地缓存获取所述项目分组信息表。其中,该本地缓存的项目分组信息表可以从项目分组管理系统获取。
[0046] 需要说明的是,中间件设备不论采用哪种方式从项目分组管理系统获取项目分组信息表,均需要保持本地缓存与项目分组管理系统中保存的项目分组信息表同步。保持同步的方法包括以下任一种:
[0047] 中间件实时向项目分组管理系统获取项目分组信息表并缓存;此种方法中中间件采用主动获取的方式,实时向项目分组管理系统能够获取项目分组信息报;或[0048] 中间件接收项目分组管理系统实时发送的项目分组信息表的动态变化信息,并根据所述动态变化信息,更新本地缓存的项目分组信息表。此种方法中项目分组管理系统采用推送的方式,在项目分组信息表发生动态变化时,实时将项目分组信息表的动态变化信息主动推送给中间件,以便中间件根据该动态变化信息更新本地缓存的项目分组信息表。
[0049] 另外,本申请实施例所述的项目分组管理系统,是独立于中间件的系统,用于保存各项目的项目分组信息。该项目分组管理系统可定期清理无效的项目分组信息,所述无效的项目分组信息例如,对应项目已经结束的项目分组信息,或建立时长超过规定时长的项目分组信息等等。
[0050] 方法二:从项目分组管理系统获取项目分组信息表。
[0051] 该方法二是在中间件本地未缓存所述项目分组信息表情况下,从项目分组管理系统获取所述项目分组信息表。
[0052] 本申请实施例所述的项目分组信息表用于保存项目分组信息,每个项目可以在项目分组管理系统中建立对应的项目分组信息。所述项目分组信息至少包括:项目分组名称、项目分组中发送方设备的唯一标识及与所述发送方设备对应的接收方设备的唯一标识。所述唯一标识包括但不限于:设备的IP(Internet Protocol,互联网协议)地址、MAC(Medium Media Access Control,介质访问控制)地址或设备域名。
[0053] 本申请实施例所述的项目分组信息表中,还包括信息失效日期,在每个项目分组中,设定一失效日期。当根据失效日期,确定出项目分组失效后,可以从项目分组信息表中删除相应的项目分组信息。
[0054] 本申请实施例所述的发送方设备及接收方设备是相对而言,也就是,针对一个项目所涉及的两个系统中的至少两个设备,其任一设备即可以作为一条消息的发送方设备,又可以作为另一条消息的接收方设备。因此,此处所述的发送方设备或接收方设备并不限定为项目中一个系统中的设备。
[0055] 本申请实施例建立项目分组的实例如下:
[0056] 针对一个网络支付项目,其所涉及的两个系统为系统A和系统B,为此项目建立一个项目分组,其项目分组名称可以定义为“网络支付项目”,一种实施例所述项目分组信息如下:
[0057] 项目分组名称:网络支付项目
[0058] 发送方设备的IP地址:10.209.64.123;
[0059] 接收方设备的IP地址:10.209.64.125;
[0060] 另一种实施例所述项目分组信息如下:
[0061] 项目分组名称:网络支付项目;
[0062] 发送方设备域名及接收方设备域名。
[0063] 本申请实施例中,步骤S220,将接收的所述消息发送给所述接收方设备,即,按照上述步骤S210中获知的接收方设备的IP地址、MAC地址或域名,将接收的消息发送给接收方设备。
[0064] 本申请实施例所述的消息传输方法,通过项目分组将每个项目所涉及的发送方设备及接收方设备关联起来,在消息传输过程中,根据该关联可以确保消息准确传输给指定的接收方设备,达到项目间开发测试的隔离效果,有效避免了消息错投的现象。
[0065] 另外,本申请实施例不需对研发项目所涉及的系统(如上述场景中的系统A及系统B)作出修改,因此,本申请实施例的实施对业务系统无感知,不影响业务系统的正常运行。
[0066] 同时,本申请实施例最大程度复用既有机器,无需为每个项目配置中间件及项目分组管理系统。
[0067] 本申请实施例可以由作为中间件的设备执行,也可以由作为中间件的设备上安装的第三方软件执行。
[0068] 需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也可由不同设备作为执行主体。
[0069] 为进一步理解本申请实施例所述的消息传输方法,下面以具体实例对消息传输方法进行详细介绍,本实例中,系统A为支付系统paycore,系统B为交易系统tradecore,为保障支付系统paycore与交易系统tradecore之间的可靠通信,在支付系统paycore与交易系统tradecore之间采用中间件进行消息投递。项目一是张三开发的项目,项目二是李四开发的项目,项目三是王五开发的项目。这三个项目,都需要用到paycore系统和tradecore系统,三个项目均申请到了相应的服务器,并在服务器上部署了自己的代码以准备相应测试。例如,张三的项目一申请到了paycore系统服务器1和tradecore系统服务器2,李四的项目二申请到了paycore系统服务器3和tradecore系统服务器4,王五的项目三申请到了paycore系统服务器5和tradecore系统服务器6。张三在申请到服务器后,会在项目分组管理系统sofarouter中,配置一个项目分组,名称为“XXX项目”,该项目分组中paycore系统服务器1的IP地址为“10.209.64.123,tradecore系统服务器2的IP地址为10.209.64.125。张三在完成项目配置后,中间件会及时收到这个最新的项目分组信息,同样李四以及王五也可以在该项目分组管理系统建立各自项目的项目分组信息。那么,接下来,中间件在进行投递时,具体处理方法如下:
[0070] paycore系统服务器1发送一条消息,希望发送给同一项目上的tradecore系统服务器2,消息首先到达中间件,此时中间件调取项目分组信息表,遍历该项目分组信息表,发现发送该消息的paycore系统服务器1的IP地址10.209.64.123是属于张三的“XXX项目”项目,该“XXX项目”项目中的对端设备为tradecore系统服务器2,其IP地址为10.209.64.125,则将该消息投递给tradecore系统服务器2。
[0071] 假设,李四没有为其项目设置项目分组,则在paycore系统服务器3发送一条消息时,消息到达中间件后,中间件遍历完所有项目分组信息表后,发现服务器3没有对应的项目分组,则该中间件认为该服务器3属于默认分组,将该服务器3发送的消息发送给默认分组中tradecore系统提供的公共服务器。
[0072] 基于上面实施例所述消息传输方法同样的思路,本申请实施例还提供一种消息传输装置,应用于发送方设备将消息传输给指定接收方设备的场景,如图4中所示,为所述装置结构示意图,该装置主要包括:接收单元400、识别单元410及发送单元420。
[0073] 其中,接收单元400,用于接收发送方设备发送的消息;
[0074] 识别单元410,可以用于根据项目分组信息表,确定从接收单元400接收的消息中包含的发送设备的唯一标识对应的项目分组标识;从项目分组信息表中,确定以项目分组标识作为查询键的存储模块;确定存储模块中保存的接收方设备的唯一标识。
[0075] 所述识别单元410获取项目分组信息表的方法同上面实施例中所述,例如包括:获取本地缓存的项目分组信息表;或从项目分组管理系统获取项目分组信息表。本申请实施例所述的项目分组信息表用于保存项目分组信息,每个项目可以在项目分组管理系统中建立对应的项目分组信息。所述项目分组信息至少包括:项目分组名称、项目分组中发送方设备的唯一标识及接收方设备的唯一标识。所述唯一标识包括但不限于:设备的IP地址、MAC地址或设备域名。
[0076] 所述识别单元410存储模块的方法同上面实施例中所述。
[0077] 所述识别单元410还可以用于:根据信息失效日期,从所述项目表中删除失效的信息。
[0078] 本申请实施例所述发送单元420,主要用于将接收的所述消息发送给所述接收方设备。
[0079] 本申请实施例所述装置还可包括:
[0080] 同步单元430,用于实时同步本地缓存的项目分组信息表与项目分组管理系统中保存的项目分组信息表。所述同步单元430具体用于:
[0081] 实时向项目分组管理系统获取项目分组信息表并缓存;或
[0082] 接收项目分组管理系统实时发送的项目分组信息表的动态变化信息,并根据所述动态变化信息,更新本地缓存的项目分组信息表。
[0083] 综上所述,本申请实施例提供的消息传输方法及装置,在接收发送方设备发送的消息,识别所述发送方设备所属的项目分组,以及所述项目分组中与所述发送方设备对应的接收方设备后,将接收的所述消息发送给所述接收方设备。上述方法中,通过项目分组将每个项目所涉及的发送方设备及接收方设备关联起来,在消息传输过程中,根据该关联可以确保消息准确传输给指定的接收方设备,达到项目间开发测试的隔离效果,有效避免了消息错投的现象。
[0084] 另外,本申请实施例最大程度复用已有的设备,无需为每个项目单独配置中间件以及项目分组管理系统。且本申请实施例对于项目所涉及的系统及系统中设备无需改动,做到业务系统无感知,确保在改动较小情况下避免消息错投。
[0085] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0086] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0087] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0088] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0089] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0090] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0091] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0092] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0093] 本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0094] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。