负载均衡方法、服务器和计算机存储介质与流程

文档序号:25991773发布日期:2021-07-23 21:03阅读:77来源:国知局
负载均衡方法、服务器和计算机存储介质与流程

本申请涉及通信技术领域,特别是涉及一种负载均衡方法、服务器和计算机存储介质。



背景技术:

随着互联网技术的不断发展,特别是智能移动设备的发展和普及,以ip为基础,并提供语音、数据和视频等多媒体业务的通信服务给用户带来了前所未有的体验,人们越来越依赖于基于互联网的通信服务。

服务器的性能成为影响网络服务质量的关键因素之一,如何提高服务器的可靠性和服务能力,在多用户并发情况下的保障服务质量至关重要。负载均衡技术能够使用户的注册和呼叫等请求被均衡地、透明地分配到具体的服务器上,为每台服务器分配与之处理能力相匹配的请求任务量,从而维护服务器的高效运行,保障服务质量。

而相关技术中,通常引入前置的全代理设备或前置虚拟接入设备做负载分发,存在接入压力的单点问题,无法分散接入压力。



技术实现要素:

本申请提供一种负载均衡方法、服务器和计算机存储介质,以解决相关技术中接入压力的单点的问题。

为解决上述技术问题,本申请提供一种负载均衡方法。该方法应用于服务器集群,服务器集群包括多个节点,至少一个节点部署有分布式sip协议栈,方法包括:接收来自主叫用户终端的注册请求消息;使用负载分摊算法确定处理注册请求消息的第一目标节点;响应于第一目标节点为当前节点,当前节点根据注册请求消息完成主叫用户终端的注册;响应于第一目标节点为其他节点,将注册请求消息重定向到其他节点;其他节点处理根据注册请求消息完成主叫用户终端的注册,其他节点为多个节点中除当前节点外的一节点。

为解决上述技术问题,本申请提供一种服务器。该服务器构成服务器集群的节点,服务器包括处理器、存储器和通信电路;处理器耦接存储器、通信电路,在工作时执行指令,以配合存储器、通信电路实现上述的负载均衡方法。

为解决上述技术问题,本申请提供一种计算机存储介质。计算机存储介质存储有计算机程序,计算机程序被处理器执行以实现上述的负载均衡方法的步骤。

本申请基于多个服务器组成的服务器集群,当集群中一个节点服务器接收来自用户的注册请求消息后,使用负载分摊算法确定将该注册请求消息分摊到哪一个节点:若为当前节点,则由当前节点处理该注册请求消息;若为其他节点,则将该注册请求消息重定向到其他节点,由其他节点处理该注册请求消息。本申请通过服务器集群直接接入用户的注册请求消息,无需前置设置负载均衡器,能够节省硬件成本。进一步地,在确定处理注册请求消息为其他节点后,通过重定向将注册请求消息分摊到其他节点,能够实现接入节点的集群化,即集群中每个节点都能够处理注册请求消息,从而降低集群中某一单一节点的接入压力,解决接入压力的单点的问题。

附图说明

图1是本申请提供的sip协议栈的层次结构示意图;

图2是本申请提供的负载均衡系统一实施例的结构示意图;

图3是本申请提供的负载均衡方法第一实施例的流程示意图;

图4是本申请提供的负载均衡方法第一实施例的交互流程示意图;

图5是本申请提供的负载均衡方法第二实施例的流程示意图;

图6是本申请提供的服务器一实施例的结构示意图;

图7是本申请提供的计算机存储介质一实施例的结构示意图。

具体实施方式

为使本领域的技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本申请所提供的负载均衡方法、服务器和计算机存储介质做进一步详细描述。

随着移动通信技术,特别是互联网、智能终端的迅猛发展,越来越多的用户使用更快、更便宜的互联网联接,互联网业务增长需求突飞猛进。

为满足用户多样的、不断变化的需求,软交换概念孕育而生,软交换即把呼叫控制功能从媒体网关中分离出来,通过发送软件包的方式实现基本呼叫控制。在软交换设备众多的通信协议中,会话初始协议(sessioninitiationprotocol,sip)凭借其简单、易实现等多方面的优点成为最具有代表性的互联网电话控制信令协议。

sip协议栈按照逻辑从下到上一般分为四层,语法和编译层、传输层、事务层和事务用户层。应用层通常会对sip协议栈进行再封装,得到方便调用的接口模型,称为接口适配层。此类sip协议栈为单机协议栈,在一定程度上能满足单点对于协议接入的能力要求,但无法支持集群接入。并且,相关技术中的sip协议栈没有基于sip报文的理解sip事务,从而无法识别事务的关联性,不能够真正分摊节点负载压力以及无法在sip协议栈进行呼叫冲突侦测,只能由应用层发现呼叫冲突。

本申请对单机sip协议栈进行了改造,请参阅图1,图1是本申请提供的sip协议栈的层次结构示意图。本申请将相关技术中的接口适配层转换为双适配层(应用适配层和sip适配层)加交换层支撑,成为分布式sip协议栈。最下面四层(模型适配层、事务层、解析层和传输层)为基础类sip协议栈,除sip协议栈外,还可以是其他类sip协议栈,例如json(javascriptobjectnotation,js对象简谱)、pnas(privatenon-accessstratum,私有非接入层)或sdk(softwaredevelopmentkit,软件开发包)等。

本申请中,应用适配层对接业务(各类业务集合);sip适配层对接各类单机协议栈;换层可以是分布式交换层。

交换层内部集成虚址管理和集群管理功能,通过心跳机制和老化机制来实现服务器集群中各节点的负载统计和故障检测等。进一步地,交换层通过理解报文确定事务的关联性和呼叫是否冲突,对于低关联事务做分派处理,呼叫冲突上报应用层决策,以解决接入后事务处理的压力散布的无序性问题。

请参阅图2,图2是本申请提供的负载均衡系统一实施例的结构示意图。

本实施例中,负载均衡系统10包括主叫用户终端11、服务器集群12和被叫用户终端13。

主叫用户终端11与被叫用户终端13之间的信息经由服务器集群12路由转发。

其中,服务器集群12由多个节点组网而成,各节点之间可以互相感知、探测。其中,至少一个节点部署有上述的分布式sip协议栈。

服务器集群12内的各个节点之间可以通过心跳机制和老化机制进行故障检测。具体而言,服务器集群12中其他节点在一定时间间隔内未收到第一节点返回的心跳响应消息,则服务器集群12可以将第一节点老化,即判定第一节点已处于故障状态,后续的注册请求消息或会话消息不再发送到第一节点。进一步地,服务器集群12控制第一节点的第一地址飘移到服务器集群12中处于有效状态的第二节点。后续本发送到第一节点的消息会直接发送到第二节点,从而保证了服务器集群12接入始终有效,即使有节点发生故障,也不会影响正常的服务,能够提高服务器集群12的可靠性。第二节点可以是从当前有效状态的节点中选取的负载压力小的节点,也可以是与第一节点处于同一空间区域的节点,当然,还可以是随机选取的节点。

进一步地,在探测到第一节点由故障状态恢复为有效状态后,例如服务器集群12中其他节点接收到第一节点的心跳响应消息,或一段时间内连续接收到来自第一节点的心跳响应消息后,服务器集群12可以确定第一节点已恢复为有效状态。服务器集群12将第一地址飘移回第一节点,第一节点接收注册请求消息或会话消息,并处理相应事务。

服务器集群12内的各个节点之间还可以通过心跳机制进行互相监控负载情况。负载情况例如包括各节点的当前注册用户、注册负载率、当前呼叫、呼叫负载率、服务器资源占用率和响应时间中的一种或多种。

本申请以基础类协议栈为sip协议栈,即基于上述分布式sip协议栈为例,分布式sip协议栈应用于服务器集群阐述本申请提供的负载均衡方法,具体如下:

请参阅图3-图4,图3是本申请提供的负载均衡方法第一实施例的流程示意图;图4是本申请提供的负载均衡方法第一实施例的交互流程示意图。本实施例应用于服务器集群,为服务器集群处理注册请求消息的工作流程,本实施例包括如下步骤:

s301:接收来自主叫用户终端的注册请求消息。

服务器集群对外提供一个公共的ip地址,当主叫用户终端首次向该公共的ip地址发起注册请求时,由公共的ip地址所对应的服务器接收注册请求消息。

本实施例中,服务器集群是由多个服务器内部组网而成。多个服务器可以是2个及以上的服务器,具体根据业务负载情况确定,集群中服务器的数量还可以进行动态增删,本申请对此不做限制。

服务器集群中,每一服务器节点可以同时具备业务接入和业务处理的功能。具体而言,集群中每一节点既能够根据来自用户终端的注册请求消息进行注册,还能够对会话消息进行处理。会话消息例如呼叫业务相关的请求消息、响应消息等。

公共的ip地址所对应的服务器同样为服务器集群中的一个节点,能够实现业务接入和业务处理。

s302:使用负载分摊算法确定处理注册请求消息的第一目标节点。

接收注册请求消息的节点使用负载分摊算法,计算得到处理该注册请求消息的第一目标节点。

负载分摊算法例如包括哈希算法、轮转调度算法、最短响应时间算法或负载最小法等。使用负载分摊算法确定第一目标节点,能够处理注册请求消息的接入压力均衡地分摊到集群的各节点上,降低单点的接入压力。

s303:判断第一目标节点是否为当前节点。

第一目标节点可能为服务器集群中的任一节点:既可能是当前节点,也能是服务器集群中当前节点外的某一其他节点。

相较于第一目标节点为当前节点,第一目标节点为其他节点的情况下,还需要向用户终端返回重定向消息。因此,在执行后续操作之前,需判断第一目标节点是否为当前节点。

若第一目标节点为当前节点,执行s304;若第一目标节点为其他节点,执行s305。

s304:当前节点根据注册请求消息完成主叫用户终端的注册。

当前节点解析注册请求消息,得到注册请求消息携带的用户信息。

当前节点将该用户信息记录到本节点的事务记录中,生成节点与在该节点注册的用户终端对应的用户信息之间的关联关系。从而集群能够查询每一节点注册的用户信息,并且根据用户信息能够查询对应的节点。

当前节点向用户终端返回成功响应消息200ok,完成用户的注册。

s305:将注册请求消息重定向到其他节点。

当前节点向主叫用户终端发送携带第一目标节点地址的重定向消息,使得主叫用户终端根据重定向消息向第一目标节点发送注册请求消息。

具体而言,当前节点向主叫用户终端返回一个302响应消息,302响应消息中通过contact头域被写入第一目标节点的地址。主叫用户终端接收到302响应消息后,根据第一目标节点的地址,重新向第一节点发送注册请求消息。

s306:其他节点根据注册请求消息完成主叫用户终端的注册。

其中,其他节点为多个节点中除当前节点外的一节点。

其他节点解析注册请求消息,得到注册请求消息携带的用户信息。

其他节点将该用户信息记录到本节点的事务记录中,生成节点与在该节点注册的用户终端对应的用户信息之间的关联关系。

该节点向用户终端返回成功响应消息200ok,完成用户的注册。

本实施例中,将多个服务器组成的服务器集群,当集群中一个节点服务器接收来自用户的注册请求消息后,使用负载分摊算法确定将该注册请求消息分摊到哪一个节点:若为当前节点,则由当前节点处理该注册请求消息;若为其他节点,则将该注册请求消息重定向到其他节点,由其他节点处理该注册请求消息。本申请通过服务器集群直接接入用户的注册请求消息,无需前置设置负载均衡器,能够节省硬件成本。进一步地,在确定处理注册请求消息为其他节点后,通过重定向将注册请求消息分摊到其他节点,能够实现接入节点的集群化,即集群中每个节点都能够处理注册请求消息,从而降低集群中某一单一节点的接入压力,解决接入压力的单点的问题。

在第一目标节点完成主叫用户终端发起的注册请求的注册后,后续还会接收到主叫用户终端发起的会话请求。请参阅图5,图5是本申请提供的负载均衡方法第二实施例的流程示意图。本实施例在负载均衡方法第一实施例的基础上,进一步包括对会话消息的处理,根据会话消息与第一目标节点的关联性,判断是否需要对会话消息进行二次分摊。本实施例包括如下步骤:

s501:接收来自主叫用户终端的注册请求消息。

s502:使用负载分摊算法确定处理注册请求消息的第一目标节点。

s503:第一目标节点根据注册请求消息完成主叫用户终端的注册。

步骤s503与步骤s303-s306处理过程相同,故在此不再赘述。

s504:第一目标节点的第一交换层通过sip适配层获取基础类sip协议栈接收的会话消息。

本实施例中,主叫用户终端的注册节点,在后续会直接接收到来自主叫用户终端或被叫用户终端的会话消息。

会话消息由第一目标节点的基础类sip协议栈接收并解码后通过sip适配层交付到第一交换层,由第一交换岑对会话消息进行创建事务和记录等处理。

会话消息可以包括请求类消息和响应类消息。请求消息可以包括呼叫请求消息和非呼叫请求消息。响应类消息可以包括与呼叫请求消息对应的呼叫响应消息,和与非呼叫请求消息对应的非呼叫响应消息。

呼叫请求消息例如包括invite、ack、options、bye、cancel、refer或info等。非呼叫请求消息例如包括message、subscribe等。

其中,invite请求用于创建sip会话。ack请求证实已收到对于invite请求的最终响应,该消息仅和invite请求配套使用。options请求用于查询服务器的能力。bye请求用于结束会话。cancel请求用于取消一个还没有完成的请求,但不能取消已建立的会话。

message请求用于创建短消息对话。subscribe请求用于创建一次订阅关系。

每一请求消息可以触发服务器生成相应的sip事务。一个sip事务包括单个sip请求以及所有对该请求的响应(包括零个或多个临时响应以及一个或多个最终响应)。

持续一段时间的端到端关系中的若干sip事务组成一个对话。例如主叫用户终端向第一目标节点发送一个invite请求创建会话,这是一个事务。通话完毕后主叫用户终端主动发起bye请求要求结束会话,这是另一个事务,但是两个事务都是在同一个端到端的关系内的,因此它们属于一个对话。而由message请求和subscribe请求创建的对话与invite请求所创建的对话为不同对话。

呼叫响应消息例如包括:1xx:信息响应(呼叫进展响应),表示已经接收到请求消息,正在对其进行处理。2xx:成功响应,表示请求已经被成功接收处理。3xx:重定向响应,表示需要采取进一步动作,以完成该请求。4xx:客户出错,表示请求消息中包含语法错误或服务器不能对该请求消息的处理。5xx:服务器出错,表示服务器故障不能完成对正确消息的处理。6xx:全局故障,表示请求不能在任何服务器上实现。

s505:第一交换层判断会话信息是否满足预设规则。

第一目标节点接收到会话消息后,需要根据会话消息判断会话消息对应的事务是否需要进行二次分摊。

其中,会话消息中的请求消息又可以分为对话内请求消息和对话外请求消息。对话内请求消息属于已经建立的某个对话的请求消息,即处于对话中间阶段的请求消息。对话外请求消息不属于任何一个已经建立的对话,例如message、subscribe等非呼叫请求消息。

第一目标节点解析会话消息,可以得到会话消息的消息类型和会话参数。会话参数例如包括被叫用户信息、会话标识(call-id)、命令序列(cseq)或标签(tag)等中的一种或多种。会话标识是一个对话的唯一标识,同一个对话内的所有请求和响应的会话标识相同,不同对话的请求和响应的会话标识不同。命令序列用于在同一个对话中对不同的请求进行排序,也用于将呼叫请求消息和呼叫响应消息相匹配。标签用来区分不同被叫用户建立的会话。被叫用户信息例如是会话消息中to头域的头阈值、url值或标签值中的一种或多种。

根据会话参数可以确定处理会话消息的第二目标节点,再根据第二目标节点判断会话消息是否满足预设规则。

对于不同类型的会话消息,确定第二目标节点的方法不同。

例如,会话消息为对话外请求消息时,可以利用被叫用户信息在集群事务记录中查询与会话参数关联的第二目标节点。在集群事务记录中匹配与被叫用户信息一致的用户信息。确定与被叫用户信息一致的用户信息所关联的节点为第二目标节点。

其中,集群事务记录包括每一节点与用户信息之间的关联关系,例如集群事务记录登记有用户信息与其注册节点的关联关系,活动对话与当前处理节点的关联关系等。用户信息可以是已在服务器集群中注册过的用户终端对应的用户信息,也可以是尚未在服务器集群注册过的用户终端对应的用户信息。

第一目标节点根据被叫用户信息在集群事务记录中匹配与被叫用户信息一致的已注册的用户信息。若存在与被叫用户信息一致的已注册的用户信息,那么第二目标节点为登记被叫用户信息的节点,即注册被叫用户终端的节点。

第一目标节点还可以根据被叫用户信息查询服务器集群的当前活动对话中,是否存在其他被叫用户信息相同的活动对话。若存在,在处理该活动对话的节点确定为第二目标节点。例如,被叫用户信息为bob@hytera.com,存在另一个活动对话的to头域的url值同样为bob@hytera.com,那么处理该活动对话的节点为第二目标节点。

而对于对话内请求消息和响应消息,除了利用被叫用户信息确定第二目标节点外,还可以利用会话标识和/或命令序列确定第二目标节点。

具体而言,根据会话标识和/或命令序列,可以直接在集群事务记录中确定会话消息所属的对话所在的节点,该节点可以确定为第二目标节点。例如,会话消息是ack消息时,其会话标识为add8f49a4afg4a6fd4,会话标识同样为add8f49a4afg4a6fd4的invite事务的处理节点是节点1,那么可以确定节点1位第二目标节点。

通过查询被叫用户信息关联的节点,能够保证同一被叫用户,或者同一对话内的多个事务由同一节点处理,从而保证事务粘性,接入后事务处理压力散布更有序。

第二目标节点即可能是第一目标节点本身,也可能是服务器集群中除第一目标节点外的其他某一节点。因此,确定第二目标节点后,继续判断第二目标节点是否为第一目标节点。

若第二目标节点不为第一目标节点,确定会话信息满足预设规则,执行s507。

会话消息不满足预设规则的情况,即被叫用户信息未在服务器集群登记注册且不存在其他被叫用户信息相同的活动对话,或第二目标节点为第一目标节点本身,执行s506。

s506:第一交换层根据会话消息执行对应的会话事务。

例如,会话消息为invite请求消息时,第一目标节点根据invite请求消息创建invite事务,向被叫用户终端转发invite请求消息,并向主叫用户终端返回100trying响应消息。

s507:第一交换层通过sip适配层和基础类sip协议栈向第二目标节点发送中继信令,中继信令携带会话消息的消息内容。

本实施例中,服务器集群中各节点内部组网,即各节点之间可以互相进行数据传输。为了实现节点之间数据快速、安全和可靠地传输,例如使用实时传输协议(rtp)传输中继信令。

为了进一步提高数据传输效率,中继信令的格式例如是tlv报文格式。tlv报文的紧凑、透明属性便于服务器集群内各节点之间信息的传输、使用和分析。

第一目标节点的sip适配层将会话消息转换为tlv报文格式,将tlv报文格式的会话消息作为rtp报文的载荷,得到中继信令,然后将中继信令发送到第二目标节点。

本实施例中,需要进行分摊的会话消息,仍由主叫用户终端或被叫用户终端向第一目标节点发送,再由第一目标节点中继转发到第二目标节点。也就是说,第二目标节点对主叫用户终端和被叫用户终端不透明。如此便于接入后事务的管理,事务经过分摊仍然有迹可循,不会导致事务散布混乱无序。例如,invite请求消息经过第一目标节点中继转发到第二目标节点,同一对话后续的bye请求消息仍然经过第一目标节点中继转发到第二目标节点。

s508:第二目标节点的第二交换层根据中继信令执行对应的会话事务。

第二目标节点接收到中继信令后,第二交换层解析中继信令,生成一个事件。对生成的时间进行事务匹配,若匹配成功,则添加该事件到事务列表中进行处理。

由于同一被叫终端的呼叫业务是在同一服务器进行处理的,在第二目标节点还可以判断本节点是否存在呼叫冲突。

具体地,所述第二交换层解析中继信令,得到中继信令携带的会话消息的会话参数和消息类型。响应于会话消息的消息类型为呼叫请求消息,获取第二目标节点的活动对话记录。根据会话参数和活动对话记录判断呼叫请求消息是否与活动对话存在呼叫冲突。

举例说明,a用户终端在先已与b用户终端建立有第一对话,且第一对话未结束,第一对话的处理节点为b用户终端注册的节点2。节点2接收到来自c用户终端向b用户终端发出的呼叫请求消息后,节点2的交换层解析并判断该呼叫请求消息的会话标识与第一对话不同(不同的呼叫业务会话标识不同),并且被叫用户信息(b用户终端的标识)相同,那么可以确定c用户终端对b用户终端的呼叫业务与a用户终端和b用户终端之间的呼叫业务存在呼叫冲突。即本申请部署有分布式sip协议栈的节点能够在分布式sip协议栈的层面上侦测呼叫冲突的情况,相较于相关技术中应用层识别呼叫冲突,能够提高呼叫冲突侦测效率,从而提高呼叫冲突决策的效率。

确定存在呼叫冲突后,第二交换层通过应用适配层向被叫用户终端,即应用层上报存在呼叫冲突,请求被叫用户终端进行决策。第二目标节点根据被叫用户终端对呼叫冲突的决策指令处理冲突的呼叫业务。决策指令例如是对新的呼叫的拒绝、并入、并行或更替等。

呼叫冲突的判断和上报由sip协议栈的交换层操作执行,应用层决策后,交换层可直接处理冲突的呼叫业务,对呼叫冲突情况的反应更加迅速。

请参阅图6,图6是本申请提供的服务器一实施例的结构示意图。

本申请提供的一种服务器600构成服务器集群的节点,该节点部署有分布式sip协议栈,服务器包括处理器601、存储器602和通信电路603;处理器601耦接存储器602、通信电路603,在工作时执行指令,以配合存储器602、通信电路603实现上述的负载均衡方法。其中,存储器602用于存储应用程序和各节点的地址。通信电路603用于接收来自主叫用户终端的注册请求消息。处理器602用于使用负载分摊算法确定处理注册请求消息的第一目标节点;响应于第一目标节点为当前节点,当前节点根据注册请求消息完成主叫用户终端的注册;响应于第一目标节点为其他节点,将注册请求消息重定向到其他节点;其他节点处理根据注册请求消息完成主叫用户终端的注册,其他节点为多个节点中除当前节点外的一节点。

处理器601还可以称为cpu(centralprocessingunit,中央处理单元)。处理器601可能是一种集成电路芯片,具有信号的处理能力。处理器601还可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。另外,处理器601可以由集成电路芯片共同实现。

通过上述方案,能够解决接入压力的单点问题。

对于上述实施例的方法,其可以计算机程序的形式存在,因而本申请提出一种计算机存储介质,请参阅图7,图7是本申请提供的计算机存储介质一实施例的结构示意图。本实施例计算机存储介质700中存储有计算机程序701,其可被执行以实现上述实施例中的方法。

本实施例计算机存储介质700可以是u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等可以存储程序指令的介质,或者也可以为存储有该程序指令的服务器,该服务器可将存储的程序指令发送给其他设备运行,或者也可以自运行该存储的程序指令。

在本申请所提供的几个实施例中,应该理解到,所揭露的方法和装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1