一种数据处理方法、设备、介质以及装置
技术领域
本说明书涉及计算机技术领域,尤其涉及一种数据处理方法、设备、介质及装置。
背景技术
随着网络技术的发展,用户对网络传输效率和Web响应速度的要求也越来越高。QUIC协议作为一种新兴的传输层协议,相比于TCP协议与TLS(英文:Transport LayerSecurity;中文:传输层安全性协议),具有建链开销小、无头阻塞等优点。
在实际应用中,亟需一种数据处理的方法,以实现在使用QUIC协议传输数据的情况下数据能够被无状态处理。
发明内容
有鉴于此,本说明书实施例提供了一种数据处理方法、设备、介质以及装置,用于实现在使用QUIC协议传输数据的情况下数据能够被无状态处理。
本说明书实施例采用下述技术方案:
本说明书实施例提供了一种数据处理方法,应用于支持QUIC协议的负载设备,包括:
接收第一设备发送的QUIC数据包,所述QUIC数据包中包含连接标识CID;
解析所述CID,并根据解析结果确定路由地址;
根据确定的所述路由地址,将所述QUIC数据包发送至第二设备,以使所述第二设备对所述QUIC数据包进行处理。
本说明书实施例还提供了一种数据处理方法,应用于支持QUIC协议的负载设备,包括:
接收客户端侧设备发送的连接建立数据包,所述连接建立数据包中未包含服务器侧设备的路由地址;
随机选择一个服务器侧设备,按照设定的第一封装协议对应的封装格式,对所述连接建立数据包进行封装,将封装后的所述连接建立数据包发送给所述服务器侧设备,封装后的所述连接建立数据包中包含所述客户端侧设备的路由地址;
接收所述服务器侧设备发送的响应数据,并确定所述服务器侧设备的路由地址,所述响应数据中包含所述客户端侧设备的路由地址;
根据所述客户端侧设备的路由地址,将确定的所述服务器侧设备的路由地址发送给所述客户端侧设备。
本说明书实施例还提供了一种数据处理方法,应用于支持QUIC协议的客户端设备,包括:
按照设定的第二封装协议对应的封装格式生成QUIC数据包,所述QUIC数据包中包含连接标识CID;
将所述QUIC数据发送给负载设备;
接收所述负载设备发送的数据处理结果,所述数据处理结果由所述负载设备在解析所述CID得到路由地址后将所述QUIC数据包发送给所述路由地址对应的服务器侧设备,并由所述服务器侧设备处理后得到。
本说明书实施例还提供了一种数据处理方法,应用于支持QUIC协议的客户端设备,包括:
向负载设备发送连接建立数据包,所述连接建立数据包中未包含服务器侧设备的路由地址;
接收所述负载设备发送的连接建立响应数据包,所述连接建立响应数据包中包含与所述客户端侧设备建立数据传输通道的服务器侧设备的路由地址,所述服务器侧的路由地址由所述负载设备根据所述服务器侧设备发送的响应数据确定,所述响应数据由所述服务器侧设备对接收到的所述负载设备发送的所述连接建立数据包进行处理得到;
根据所述服务器侧设备的路由地址和设定的第二封装协议对应的封装格式,生成QUIC数据包。
本说明书实施例还提供了一种数据处理方法,应用于支持QUIC协议的服务器侧设备,包括:
接收负载设备发送的连接建立数据包,所述连接建立数据包由所述负载设备按照设定的第一封装协议对应的封装格式对接收到客户端侧设备发送的数据包封装得到,所述连接建立数据包包含所述客户端侧设备的路由地址;
向所述负载设备发送响应数据包,以使得所述负载设备根据所述响应数据包确定所述服务器侧设备的路由地址。
本说明书实施例还提供了一种数据处理设备,包括:
接收单元,接收第一设备发送的QUIC数据包,所述QUIC数据包中包含连接标识CID;
处理单元,解析所述CID,并根据解析结果确定路由地址;
发送单元,根据确定的所述路由地址,将所述QUIC数据包发送至第二设备,以使所述第二设备对所述QUIC数据包进行处理。
本说明书实施例还提供了一种数据处理设备,所述数据处理设备包括:
接收单元,接收客户端侧设备发送的连接建立数据包,所述连接建立数据包中未包含服务器侧设备的路由地址;
处理单元,随机选择一个服务器侧设备,按照设定的第一封装协议对应的封装格式,对所述连接建立数据包进行封装,将封装后的所述连接建立数据包发送给所述服务器侧设备,封装后的所述连接建立数据包中包含所述客户端侧设备的路由地址;
所述接收单元,接收所述服务器侧设备发送的响应数据;
所述处理单元,确定所述服务器侧设备的路由地址,所述响应数据中包含所述客户端侧设备的路由地址;
所述发送单元,根据所述客户端侧设备的路由地址,将确定的所述服务器侧设备的路由地址发送给所述客户端侧设备。
本说明书实施例还提供了一种数据处理设备,所述数据处理设备包括:
处理单元,按照设定的第二封装协议对应的封装格式生成QUIC数据包,所述QUIC数据包中包含连接标识CID;
发送单元,将所述QUIC数据发送给负载设备;
接收单元,接收所述负载设备发送的数据处理结果,所述数据处理结果由所述负载设备在解析所述CID得到路由地址后将所述QUIC数据包发送给所述路由地址对应的服务器侧设备,并由所述服务器侧设备处理后得到。
本说明书实施例还提供了一种数据处理设备,所述数据处理设备包括:
发送单元,向负载设备发送连接建立数据包,所述连接建立数据包中未包含服务器侧设备的路由地址;
接收单元,接收所述负载设备发送的连接建立响应数据包,所述连接建立响应数据包中包含与所述客户端侧设备建立数据传输通道的服务器侧设备的路由地址,所述服务器侧的路由地址由所述负载设备根据所述服务器侧设备发送的响应数据确定,所述响应数据由所述服务器侧设备对接收到的所述负载设备发送的所述连接建立数据包进行处理得到;
处理单元,根据所述服务器侧设备的路由地址和设定的第二封装协议对应的封装格式,生成QUIC数据包。
本说明书实施例还提供了一种数据处理设备,应用于支持QUIC协议的服务器侧设备,包括:
接收单元,接收负载设备发送的连接建立数据包,所述连接建立数据包由所述负载设备按照设定的第一封装协议对应的封装格式对接收到客户端侧设备发送的数据包封装得到,所述连接建立数据包包含所述客户端侧设备的路由地址;
处理单元,根据所述负载设备的路由地址,向所述负载设备发送响应数据包,以使得所述负载设备根据所述响应数据包确定所述服务器侧设备的路由地址。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被处理器执行时实现上述的方法。
本说明书实施例还提供一种数据处理装置,包括:至少一个处理器、至少一个存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现上述的方法。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:
本说明书实施例提供的技术方案,接收第一设备发送的包含连接标识CID的QUIC数据包,解析该CID,并根据该解析结果确定路由地址,进而根据该路由地址,将接收到的QUIC数据包路由至第二设备,以便于第二设备对该QUIC数据包进行处理。负载设备在接收到发送端设备发送的数据包的情况下,通过对接收到的数据包的处理来确定数据传输的路由地址,快速建立发送端设备与接收端设备之间的数据传输通道,这种方式一方面无需借助存储的上下文信息,另一方面也不会因为负载设备出现重启、扩容、缩容、等异常情况而发生连接错误,有效提升使用QUIC协议传输数据的处理效率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:
图1为本说明书实施例提供的一种数据处理方法的流程示意图;
图2为本说明书实施例提供的一种第二封装协议对应的封装格式的示意图;
图3为本说明书实施例提供的另一种第二封装协议对应的封装格式的示意图;
图4为本说明书实施例提供的第一封装协议对应的头部格式的示意图;
图5为本说明书实施例提供的一种数据处理方法的流程示意图;
图6为本说明书实施例提供的一种数据处理方法的流程示意图;
图7为本说明书实施例提供的一种数据处理方法的流程示意图;
图8为本说明书实施例提供的一种数据处理方法的流程示意图;
图9为本说明书实施例提供的一种数据处理方法的流程示意图;
图10为本说明书实施例提供的一种数据处理方法的流程示意图;
图11为本说明书实施例提供的一种数据处理方法的流程示意图;
图12为本说明书实施例提供的一种数据处理设备的结构示意图;
图13为本说明书实施例提供的一种数据处理设备的结构示意图;
图14为本说明书实施例提供的一种数据处理设备的结构示意图;
图15为本说明书实施例提供的一种数据处理设备的结构示意图;
图16为本说明书实施例提供的一种数据处理设备的结构示意图;
图17为本说明书实施例提供的一种数据处理设备的结构示意图。
具体实施方式
在实际应用中,QUIC协议作为一种新的传输协议,需要考虑支持QUIC协议的服务器的分布式部署、负载均衡等问题。目前用于负载均衡的设备例如LVS(英文:LinuxVirtual Server;中文:Linux虚拟服务器),通过使用四元组(具体包含源IP、源Port、目的IP和目的Port)作哈希计算,根据计算结果选择服务器,以实现服务器集群的负载均衡。但是QUIC协议规定通过CID(英文:Connection Identifier;中文:连接标识)标识一条连接。当连接迁移发生的时候,四元组将发生变化,此时如果依然基于四元组作哈希计算,根据计算结果进行,将导致连接迁移失效。那么如何保证在使用QUIC协议传输数据的情况下数据能够被无状态处理成为亟需解决的重要问题。
为了解决本说明书中记载的问题,实现本说明书的目的,本说明书实施例提供了一种数据处理方法、设备、介质及装置,接收第一设备发送的包含连接标识CID的QUIC数据包,解析该CID,并根据该解析结果确定路由地址,进而根据该路由地址,将接收到的QUIC数据包路由至第二设备,以便于第二设备对该QUIC数据包进行处理。负载设备在接收到发送端设备发送的数据包的情况下,通过对接收到的数据包的处理来确定数据传输的路由地址,快速建立发送端设备与接收端设备之间的数据传输通道,这种方式一方面无需借助存储的上下文信息,另一方面也不会因为负载设备出现重启、扩容、缩容、等异常情况而发生连接错误,有效提升使用QUIC协议传输数据的处理效率。
需要说明的是,本说明书实施例中的“无状态”相对于有状态而言。例如:用户通过客户端登录服务器,服务器会保存用户的上下文信息,此时服务器是有状态的,因为该服务器可以根据用户的上下文信息对用户发送的业务请求进行处理。而不同的有状态服务器之间是副本关系,需要保持数据同步。
对于无状态的服务器来说,服务器不需要保存用户的上下文信息,只需要对用户每次提交的业务请求进行处理并返回处理结果即可。不同的无状态服务器之间属于对等关系,不相互依赖,同一个用户的一个业务请求被任意一个无状态服务器接收到,其处理结果都相同。
也就是说,一旦***发生扩容、缩容、重启等情况,本说明书实施例中记载的无状态负载设备(这里的负载设备位于客户端与服务器之间,用于将由客户端发送的数据处理请求准确传输至所需要的服务器中,以便于服务器快速进行处理)在接收到客户端发送的数据处理请求时,依然可以将该数据处理请求准确路由至所需要的服务器上进行处理,成功实现连接迁移。
本说明书实施例中记载的第一封装协议和第二封装协议属于不同的数据传输协议。这里的“第一”和“第二”没有特殊含义,仅表示不同的封装协议。
较优地,所述第一封装协议所支持的封装格式中包含负载设备的地址位和客户端侧设备的地址位。所述第二封装协议所支持的封装格式中包含CID标识位和服务器侧设备的地址位。
本说明书实施例中记载的CID(英文:Connection ID;中文:连接标识),在QUIC协议中取代了传统的五元组(所谓五元组是指:源IP、源Port、目的IP、目的Port和传输协议),用于唯一标识一条连接(这里的连接可以理解为客户端侧设备与服务器侧设备之间的连接)。
本说明书实施例中记载的QUIC协议可以理解一种在用户态、基于UDP实现的可靠、安全的传输协议。本说明书实施例中记载的负载设备可以理解为用于实现负载均衡(英文:Load Balance;缩写:LB)的设备,该设备支持负载均衡这一计算机技术,负载均衡技术用来在多个计算机、网络连接、CPU、磁盘驱动器或其他资源中分配负载,已达到最优化资源使用,最大化吞吐率、最小化响应时间、同时避免过载的目的,在这里主要实现对网络服务器的负载均衡。
本说明书实施例中记载的“随机选择”可以是采用某种随机算法,也可以是使用某种随机规则,这里对于随机选择的方式不做具体限定。
下面结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
在具体描述实施例之前,本说明书实施例中记载的技术方案的应用场景包含但不限于:第一种场景是第一设备与第二设备之间已经建立数据传输通道,即作为发送端的第一设备已经获取了作为接收端的第二设备的路由地址,那么第一设备与第二设备所对应的CID中包含第二设备的路由地址,与第一设备和第二设备建立连接的中间设备(又可以称之为负载设备)可以利用数据包中包含的CID确定路由地址,进而实现第一设备与第二设备之间数据交互;第二种场景是第一设备与第二设备之间尚未建立数据传输通道,即作为发送端的第一设备尚未获取作为接收端的第二设备的路由地址,通过本说明书实施例提供的技术方案,可以实现第一设备获取第二设备路由地址,为第一设备与第二设备之间建立数据传输通道奠定基础。
图1为本说明书实施例提供的一种数据处理方法的流程示意图。所述方法可以如下所示。本说明书实施例的执行主体为支持QUIC协议的负载设备,也可以称之为其他设备,其用于在无状态的情况下实现第一设备与第二设备之间的数据传输。这里以上述描述的第一种场景为例进行说明。
步骤101:接收第一设备发送的QUIC数据包,所述QUIC数据包中包含连接标识CID。
在本说明书实施例中,第一设备从中间设备集群(这里的中间设备集群可以理解为包含多台负载设备)中随机选择一台负载设备,按照设定的第二封装协议对应的封装格式对待发送的数据进行封装,得到支持QUIC协议的数据包(后续称之为QUIC数据包),并将得到的QUIC数据包发送给选择的负载设备。
这里按照设定的第二封装协议对应的封装格式对待发送的数据进行封装可以理解为按照第二封装协议对应的封装格式,在对应的字段中写入相应的内容,以得到QUIC数据包。
根据服务器侧设备的路由地址对应的版本号,确定第二封装协议对应的封装格式。例如:服务器侧设备的地址分为IPV4地址和IPV6地址,那么第二封装协议对应的封装格式也有所不同,基于第二封装协议封装得到的QUIC数据包中携带的内容也有所不同。
若服务器侧设备的地址为IPV4地址,那么本说明书实施例提供的一种第二封装协议对应的封装格式,如图2所示。从图2中可以看出,该封装格式包含N个字节。其中,左侧的6个字节中包含服务器侧设备的路由地址。
从左侧说起,第1字节,其中,前2bit用来标识是否携带服务器侧设备的路由地址。例如:“00”表示不携带服务器侧设备的路由地址、“01”表示服务器侧设备的地址为IPV4地址、“10”表示服务器侧设备的地址为IPV6地址。第1字节中剩余的6bit用来映射IPV4地址中的A地址段;第2-3字节标识服务器侧设备的端口号;第4-6字节标识IPV4地址中的B、C、D地址段;第6-N字节为随机数。
若服务器侧设备的地址为IPV6地址,那么本说明书实施例提供的一种第二封装协议对应的封装格式,如图3所示。从图3中可以看出,该封装格式包含18个字节。其中,左侧的13个字节中包含服务器侧设备的路由地址。
从左侧说起,第1字节,其中,前2bit用来标识是否携带服务器侧设备的路由地址。例如:“00”表示不携带服务器侧设备的路由地址、“01”表示服务器侧设备的地址为IPV4地址、“10”表示服务器侧设备的地址为IPV6地址。第1字节中剩余的6bit用来映射IPV6地址的前缀。例如:这里的6bit用来映射7bits的prefix+1bit的L+40bits的global id。第2-3字节标识服务器侧设备的端口号;第4-13字节标识IPV6地址中的2字节的subnet id和8字节的interface id。第14-18字节为随机数。
需要说明的是,如果QUIC协议是指在IETF(英文:The Internet EngineeringTask Force;中文:国际互联网工程任务组)组织进行标准化的QUIC协议,第二封装协议对应的封装格式最长为18个字节。为了避免冲突,若服务器侧设备的地址为IPV4地址,这里的N应大于14,即需要留出8个字节的随机数。
较优地,在按照设定的第二封装协议对应的封装格式对待发送的数据进行封装,还可以包括:
若服务器侧设备的地址为IPV4地址,除了图2中所示的最左侧第1字节之外,其余的N-1字节通过加密算法进行加密处理;
若服务器侧设备的地址为IPV6地址,除了图3中所示的最左侧第1字节之外,其余的17字节通过加密算法进行加密处理。
在按照设定的第二封装协议对应的封装格式对待发送的数据进行封装时,由于已经获取服务器侧设备的路由地址,为了保证数据传输的效率,可以使用Short header,省略一些QUIC数据包的头部信息。
需要说明的是,在本说明书提供的实施例中,如果发生连接迁移,QUIC数据包将发生变化。若服务器侧设备的地址为IPV4地址,图2所示的格式中最左侧6字节保持不变;若服务器侧设备的地址为IPV6地址,图3所示的格式中最左侧13字节保持不变,其他字节内容可以根据迁移需要发生变化。这样可以保证处于无状态的负载设备在接收到QUIC数据包的情况下,能够有效的对QUIC数据包进行处理。
步骤103:解析所述CID,并根据解析结果确定路由地址。
在本说明书实施例中,负载设备在接收到QUIC数据包的情况下,利用解密算法对所述QUIC数据包进行解析,得到明文CID;按照CID格式,从该明文CID中反解得到路由地址。
这里的路由地址可以是服务器侧设备的IP和端口号,也可以是其他形式的信息,这里对于路由地址的形式不做具体限定。
较优地,所述CID可以包含源CID、目的CID中的至少一种。在本说明书实施例中记载的源CID和目的CID区别在于其作用不同。第一设备向负载设备发送数据时,负载设备可以根据数据中包含的目的CID,确定将该数据转发给哪个第二设备;负载设备可以根据数据中包含的源CID,确定该数据来自第一设备。
需要说明的是,源CID中包含发送端设备的路由地址;目的CID中包含接收端设备的路由地址。如果发送端设备不知道接收端设备的路由地址,那么发送端设备所发送的数据中包含的目的CID为空。
步骤105:根据确定的所述路由地址,将所述QUIC数据包发送至第二设备,以使所述第二设备对所述QUIC数据包进行处理。
在本说明书实施例中,负载设备根据确定的所述路由地址和设定的第一封装协议对应的封装格式,对所述QUIC数据包进行封装,封装后的QUIC数据包中包含第一设备的路由地址。
这里按照设定的第一封装协议对应的封装格式对所述QUIC数据包进行封装可以理解为按照第一封装协议对应的封装格式,在对应的字段中写入相应的内容,以得到封装后的QUIC数据包。
本说明书实施例中记载的第一封装协议用于在负载设备与第二设备之间传递负载设备接收到的第一设备的四元组信息。也就是说,负载设备在接收到第一设备发送的QUIC数据包时,能够确定一个四元组信息,该四元组信息包含第一设备的IP、第一设备的Port、负载设备的IP和负载设备的Port。
图4为本说明书实施例提供的第一封装协议对应的头部格式的示意图。从图4中可以看出,该头部格式包含2个字节,一个字节标识type(类型);另一个字节为保留位。例如:type为0x01,表示传递四元组的第一封装协议;保留位为C,标识IPV4;保留位为S,标识IPV6。
需要说明的是,步骤105中负载设备按照设定的第一封装协议对应的封装格式对所述QUIC数据包进行封装,具体包括:负载设备可以确定第二设备的路由地址,确定第二设备的路由地址的类型,进而可以根据确定的路由地址的类型对头部格式中的保留位进行修改。若第二设备使用IPV4地址,那么将保留位修改为C,若第二设备使用IPV6地址,那么将保留位修改为S。
具体地,负载设备按照设定的第一封装协议对应的封装格式,在所述QUIC数据包的前部封装第一设备的IP、第一设备的Port、负载设备的IP和负载设备的Port,得到封装后的QUIC数据包。
这样,服务器侧设备在接收到负载设备发送的封装后的QUIC数据包,可以根据该QUIC数据包中携带的四元组信息,确定发送QUIC数据包对应的客户端侧设备的路由地址。
需要说明的是,由于步骤105所使用的封装协议与步骤101中所使用的封装协议不同,所以步骤105中记载的封装后的QUIC数据包的头部内容与步骤101中记载的QUIC数据包的头部内容也有所不同。
通过本说明书实施例中记载的技术方案,接收第一设备发送的包含连接标识CID的QUIC数据包,解析该CID,并根据该解析结果确定路由地址,进而根据该路由地址,将接收到的QUIC数据包路由至第二设备,以便于第二设备对该QUIC数据包进行处理。负载设备在接收到发送端设备发送的数据包的情况下,通过对接收到的数据包的处理来确定数据传输的路由地址,快速建立发送端设备与接收端设备之间的数据传输通道,这种方式一方面无需借助存储的上下文信息,另一方面也不会因为负载设备出现重启、扩容、缩容等异常情况而发生连接错误,有效提升使用QUIC协议传输数据的处理效率。
基于同一个发明构思,图5为本说明书实施例提供的一种数据处理方法的流程示意图。本实施例的执行主体为支持QUIC协议的负载设备,也可以称之为其他设备,其用于建立第一设备与第二设备之间的数据传输通道。这里以上述描述的第二种场景为例进行说明。
步骤501:接收第一设备发送的QUIC数据包,所述QUIC数据包中包含连接标识CID。
在本说明书实施例中,步骤501中第一设备发送的QUIC数据包的形成方式与步骤101中记载的形成方式相同,区别在于:步骤501中第一设备发送的QUIC数据包中未包含第二设备的路由地址。
即若按照图2所示的格式,第1字节中前2bit为“00”,第2-6字节为空。
若按照图3所示的格式,第1字节中前2bit为“00”,第2-13字节为空。
步骤503:解析所述CID,确定所述CID中未包含第二设备的路由地址。
在本说明书实施例中,判断所述CID的第一字节是否为00,若是,则确定所述CID中未包含第二设备的路由地址。
步骤505:随机选择一个第二设备,按照设定的第一封装协议对应的封装格式对所述QUIC数据包进行封装,封装后的所述QUIC数据包中包含所述第一设备的路由地址。
在本说明书实施例中,负载设备从服务器侧多个第二设备中随机选择一个第二设备。这里所使用的随机选择方法能够保证服务器侧设备负载均衡。
由于按照设定的第一封装协议对应的封装格式对所述QUIC数据包进行封装的方式与步骤105中记载的封装方式相同,这里不做赘述。
步骤507:将封装后的所述QUIC数据包发送给选择的所述第二设备。
较优地,在本说明书实施例中,存储所述QUIC数据包与所述第二设备的路由地址之间的对应关系。
步骤509:接收所述第二设备发送的响应数据包,所述响应数据包中包含所述第一设备的路由地址。
在本说明书实施例中,第二设备所使用的QUIC协议标准不同,那么第二设备生成的响应数据包也不同。
第二设备在接收到负载设备发送的封装后的所述QUIC数据包的情况下,首先,按照设定的第一封装协议的封装格式,确定包含第一设备的IP、第一设备的Port、负载设备的IP和负载设备的Port的四元组信息。
其次,根据所述四元组信息,生成响应数据。
第一种情况:如果第二设备所使用的QUIC协议是IETF组织进行标准化的QUIC协议,由于IETF组织进行标准化的QUIC协议允许第二设备修改接收到的QUIC数据包中携带的CID,那么第二设备可以直接修改接收到的封装后的所述QUIC数据包中携带的CID,在其CID对中写入第二设备的路由地址。那么第二设备根据所述四元组信息和修改后的所述QUIC数据包,生成响应数据包,该响应数据包中包含第二设备的路由地址。
需要说明的是,在其CID对中写入第二设备的路由地址可以按照设定的第二封装协议对应的封装格式,在CID对应的服务器侧设备的地址位上写入第二设备的路由地址,也可以采用其他方式,这里不做具体限定。
第二种情况:如果第二设备所使用的QUIC协议是*** QUIC,由于*** QUIC不允许第二设备修改接收到的QUIC数据包中携带的CID,那么第二设备按照设定的第一封装协议的封装格式,确定包含第一设备的IP、第一设备的Port、负载设备的IP和负载设备的Port的四元组信息;根据所述四元组信息,向负载设备发送响应数据包,所述响应数据包只是在正常回应消息上增加了该四元组信息,也就意味着该响应数据包中不包含第二设备的路由地址。
步骤511:根据所述响应数据包,确定所述第二设备的路由地址。
在本说明书实施例中,针对步骤509中记载的第一种情况“确定所述响应数据包中包含所述第二设备的路由地址,所述第二设备的路由地址由所述第二设备按照设定的第二封装协议对应的封装格式对所述响应数据包进行封装得到”,解析所述响应数据包,确定所述响应数据包的CID中包含所述第二设备的路由地址。
针对步骤509中记载的第二种情况:若所述响应数据包中未包含所述第二设备的路由地址,那么将所述第二设备发送所述响应数据包所使用的地址确定为所述第二设备的路由地址。
较优地,针对步骤509中记载的第二种情况,在确定所述第二设备的路由地址的情况下,负载设备根据所述第二设备的路由地址,生成新的QUIC数据包,所述新的QUIC数据包中包含所述第二设备的路由地址。
具体地,负载设备在确定第二设备的路由地址的情况下,根据所述第二设备的路由地址,按照设定的第二封装协议对应的封装格式,封装生成新的QUIC数据包。
其中,所述新的QUIC数据包中包含所述第二设备的路由地址。
步骤513:根据所述第一设备的路由地址,将所述第二设备的路由地址发送给所述第一设备。
在本说明书实施例中,针对第一种情况,将所述响应数据包发送给所述第一设备;针对第二种情况,将新的QUIC数据包发送给所述第一设备。
需要说明的是,本说明书实施例中记载的“第一设备”和“第二设备”中包含的“第一”和“第二”没有特殊含义,仅表示数据传输不同侧的设备。
在本说明书实施例中,第二封装协议利用QUIC协议中定义的CID的字段信息,封装服务器侧设备的路由地址。
服务器侧设备可以利用第二封装协议在响应数据包中封装自身的路由地址,这样负载设备在接收到该响应数据包时,直接转发给客户端侧设备即可,进而客户端侧设备在接收到该响应数据包后可以发起与服务器侧设备之间的数据交互。
如果服务器侧设备在响应数据包中没有封装自身的路由地址,那么负载设备在接收到响应数据包时,利用第二封装协议在响应数据包中封装服务器侧设备的路由地址,并发送给客户端侧设备,此时客户端侧设备在接收到该响应数据包后也可以发起与服务器侧设备之间的数据交互。
通过本说明书实施例提供的技术方案,在第一设备与第二设备没有建立数据传输通道的情况下,将负载设备作为数据传输的纽带,一方面,负载设备在接收到客户端侧设备的数据时,通过随机方式选择服务器侧设备,通过与服务器侧设备之间的数据交互,快速获取服务器侧设备的路由地址;另一方面,负载设备将确定的服务器侧设备发送给客户端侧设备,实现快速在第一设备(可以称之为客户端侧设备)与第二设备(可以称之为服务器侧设备)之间建立数据传输通道。由于负载设备对数据的处理不依赖于上下文信息,也不会因为出现重启、扩容、缩容等异常情况而发生连接错误,有效提升了数据处理效率。
基于同一个发明构思,图6为本说明书实施例提供的一种数据处理方法的流程示意图。所述方法可以如下所示。
步骤601:客户端侧设备向负载设备发送连接建立数据包。
其中,所述连接建立数据包中未包含服务器侧设备的路由地址。
在本说明书实施例中,客户端侧设备向负载设备发送QUIC握手报文,这里的QUIC握手报文的目的在于与服务器侧设备建立数据传输通道,也可以称之为连接建立数据包。
该QUIC握手报文可以采用Long Header,在Long header中头部信息相对较完整。
需要说明的是,这里记载的负载设备可以是客户端设备按照随机选择方式从多个负载设备中随机选择的一个,目的在于保证负载设备的负载均衡。
步骤603:负载设备接收该连接建立数据包,在确定该连接建立数据包中未包含服务器侧设备的路由地址的情况下,随机选择一个服务器侧设备。
步骤605:负载设备按照设定的第一封装协议对应的封装格式,对所述连接建立数据包进行封装,将封装后的所述连接建立数据包发送给服务器侧设备。
其中,封装后的所述连接建立数据包中包含所述客户端侧设备的路由地址。
步骤607:服务器侧设备生成响应数据包,并将所述响应数据发送给负载设备。
其中,所述响应数据中包含所述客户端侧设备的路由地址。
需要说明的是,步骤607中记载的负载设备可以与步骤601中记载的负载设备属于同一个设备,也可以属于不同设备。服务器侧设备也可以按照随机选择方式从多个负载设备中选择一个,目的在于保证负载设备的负载均衡。
步骤609:负载设备确定所述服务器侧设备的路由地址。
在本说明书实施例中,负载设备在接收到服务器侧设备发送的响应数据包的情况下,判断所述响应数据包中是否包含服务器侧设备的路由地址,如果未包含,则将所述第二设备发送所述响应数据包所使用的地址确定为服务器侧设备的路由地址,执行步骤611。若包含,则执行步骤613。
步骤611:负载设备根据所述服务器侧设备的路由地址,生成新的QUIC数据包,所述新的QUIC数据包中包含所述服务器侧设备的路由地址。
在本说明书实施例中,根据所述服务器侧设备的路由地址,按照设定的第二封装协议对应的封装格式,封装生成新的QUIC数据包。
步骤613:根据所述客户端侧设备的路由地址,将所述服务器侧设备的路由地址发送给所述客户端侧设备。
在本说明书实施例中,若在步骤609中确定所述响应数据包中包含服务器侧设备的路由地址,那么根据所述客户端侧设备的路由地址,将所述响应数据包发送给所述客户端侧设备;若在步骤609中确定所述响应数据包中未包含服务器侧设备的路由地址,那么根据所述客户端侧设备的路由地址,将所述新的QUIC数据包发送给所述客户端侧设备。
基于同一个发明构思,图7为本说明书实施例提供的一种数据处理方法的流程示意图。本说明书实施例以QUIC协议为IETF组织进行标准化的QUIC协议,所述数据处理方法可以如下所示。
步骤701:客户端侧设备向负载设备发送数据处理请求,该数据处理请求中包含源CID和目的CID。
在本说明书实施例中,这里的数据处理请求用于获取服务器侧设备的路由地址,该数据处理请求中包含的目的CID为空。
步骤703:负载设备在接收到该数据处理请求,解析所述目的CID,并在确定所述目的CID中未包含服务器侧设备的路由地址的情况下,随机选择一个服务器侧设备。
步骤705:负载设备确定四元组信息,按照设定的第一封装协议对应的封装格式对该四元组信息进行封装,将包含封装后的四元组信息和所述数据处理请求发送给服务器侧设备。
在本说明书实施例中,四元组信息包含客户端侧设备的IP、客户端侧设备的Port、负载设备的IP和负载设备的Port。
步骤707:服务器侧设备对接收到的所述数据处理请求进行处理,并对所述数据处理请求中携带的目的CID对应服务器侧设备的地址位上增加其路由地址。
具体的,服务器侧设备根据所述四元组信息和修改后的数据处理请求,生成响应数据包,该响应数据包中包含服务器侧设备的路由地址。
步骤709:服务器侧设备将该响应数据包发送给负载设备。
步骤711:负载设备根据封装的四元组信息中包含的客户端侧设备的路由地址,将该响应数据发送给客户端侧设备。
在本说明书实施例中,由服务器侧设备对服务器侧设备与客户端侧设备之间建立数据传输通道对应的CID进行修改(或更新),客户端侧设备对路由地址不感知,而对于负载设备,在接收到包含该CID的数据请求时,需要通过反解算法获取CID中包含的服务器侧设备的路由地址。
基于同一个发明构思,图8为本说明书实施例提供的一种数据处理方法的流程示意图。本说明书实施例以QUIC协议为*** QUIC为例进行说明。
步骤801:客户端侧设备向负载设备发送数据处理请求,该数据处理请求中包含源CID和目的CID。
在本说明书实施例中,这里的数据处理请求用于获取服务器侧设备的路由地址,该数据处理请求中包含的目的CID为空。
步骤803:负载设备在接收到该数据处理请求,解析所述目的CID,并在确定所述目的CID中未包含服务器侧设备的路由地址的情况下,随机选择一个服务器侧设备。
步骤805:负载设备确定四元组信息,按照设定的第一封装协议对应的封装格式对该四元组信息进行封装,将包含封装后的四元组信息和所述数据处理请求发送给服务器侧设备。
在本说明书实施例中,服务器侧设备按照设定的第一封装协议的封装格式,确定包含第一设备的IP、第一设备的Port、负载设备的IP和负载设备的Port的四元组信息。
步骤807:服务器侧设备将该响应数据包发送给负载设备。
其中,所述响应数据包在正常回应消息上增加了该四元组信息,该响应数据包中不包含第二设备的路由地址。
步骤809:负载设备接收该响应数据包,并根据服务器侧设备发送该响应消息所使用的地址,生成包含路由信息的CID前缀。
步骤811:负载设备根据包含路由信息的CID前缀,生成新的响应数据。
步骤813:负载设备根据步骤807发送的响应数据包中包含的四元组信息,确定客户端侧设备的路由地址,并根据客户端侧设备的路由地址,将生成的新的响应数据发送给客户端侧设备。
其中,新的响应数据中携带包含路由信息的CID前缀。
在本说明书实施例中,服务器侧设备对路由地址不感知,由负载设备生成包含路由信息的CID前缀,这样负载设备将CID前缀发送给客户端侧设备,由客户端侧设备缓存该CID前缀。客户端侧设备发起下次请求时,可以在数据包携带该CID前缀,而负载设备在接收到该CID前缀时,能够反解得到服务器侧设备的路由地址,进而将该数据包路由至服务器侧设备进行处理。
基于同一个发明构思,图9为本说明书实施例提供的一种数据处理方法的流程示意图。在本说明书实施例中具体描述负载设备如何处理G-QUIC上行数据。
步骤901:负载设备接收客户端侧设备发送的UDP包,并从该UDP包中获取四元组信息。
在本说明书实施例中,该四元组信息中包含客户端侧设备的IP和Port、负载设备的IP和Port。该UDP数据包中还包含源CID和目的CID。
步骤903:负载设备解析该目的CID,若目的CID有效,则执行步骤905;若目的CID无效,则丢弃。
步骤905:负载设备判断有效的目的CID中是否包含服务器侧设备的路由地址,若包含,则执行步骤907;若不包含,则通过哈希算法选择一个服务器侧设备,执行步骤907。
在本说明书实施例中,通过哈希算法选择一个服务器侧设备具体包括:通过哈希计算得到IP,进一步判断该IP对应的端口号是否空闲,若不空闲,选择一个空闲的Port,选择满足该IP和Port的服务器侧设备。
步骤907:负载设备确定四元组信息,按照设定的第一封装协议对应的封装格式对该四元组信息进行封装,将包含封装后的四元组信息和UDP包发送给服务器侧设备。
在本说明书实施例中,这里的服务器侧设备可以根据路由地址确定,也可以是选择的服务器侧设备。
基于同一个发明构思,图10为本说明书实施例提供的一种数据处理方法的流程示意图。在本说明书实施例中具体描述负载设备如何处理G-QUIC下行数据。
步骤1001:负载设备接收服务器侧设备发送的响应数据包,并从该响应数据包中获取四元组信息和CID。
步骤1003:负载设备解析CID,并判断CID是否合法,若合法,则执行步骤1005。
步骤1005:负载设备按照设定的第二封装协议对应的封装格式,生成QUIC数据包,该QUIC数据包中包含服务器侧设备的路由地址。
步骤1007:负载设备根据获取的四元组信息中包含客户端侧设备的路由地址,将该QUIC数据包发送给路由地址对应的客户端侧设备。
基于同一个发明构思,图11为本说明书实施例提供的一种数据处理方法的流程示意图。
步骤1101:客户端侧设备向负载设备发送QUIC数据包,该QUIC数据包中包含CID。
步骤1103:负载设备解析该CID,按照CID格式,从该CID中反解得到服务器侧设备的路由地址。
步骤1105:负载设备按照该路由地址,将QUIC数据包发送给该路由地址对应的服务器侧设备。
步骤1107:该服务器侧设备对QUIC数据包进行处理,并将数据处理结果发送给服务器侧设备。
步骤1109:负载设备根据客户端侧设备的路由地址,将数据处理结果发送给路由地址对应的客户端侧设备。
基于同一个发明构思,图12为本说明书实施例提供的一种数据处理设备的结构示意图。所述数据处理设备包括:接收单元1201、处理单元1202和发送单元1203,其中:
接收单元1201,接收第一设备发送的QUIC数据包,所述QUIC数据包中包含连接标识CID;
处理单元1202,解析所述CID,并根据解析结果确定路由地址;
发送单元1203,根据确定的所述路由地址,将所述QUIC数据包发送至第二设备,以使所述第二设备对所述QUIC数据包进行处理。
在本说明书提供的另一个实施例中,所述发送单元1203根据确定的所述路由地址,将所述QUIC数据包发送至第二设备,包括:
按照设定的第一封装协议对应的封装格式对所述QUIC数据包进行封装,封装后的所述QUIC数据包中包含第一设备的路由地址;
根据确定的所述路由地址,将封装后的所述QUIC数据包发送给第二设备。
在本说明书提供的另一个实施例中,所述接收单元1201,接收所述第二设备发送的响应数据,所述响应数据中包含所述第一设备的路由地址和对所述QUIC数据包的处理结果;
所述发送单元1203,根据所述第一设备的路由地址,将所述响应数据包中包含的对所述QUIC数据包的处理结果发给所述第一设备。
在本说明书提供的另一个实施例中,所述处理单元1202,若所述解析结果中未包含第二设备的路由地址,那么随机选择一个第二设备;
按照设定的第一封装协议对应的封装格式对所述QUIC数据包进行封装,封装后的所述QUIC数据包中包含所述第一设备的路由地址;
将封装后的所述QUIC数据包发送给选择的所述第二设备。
在本说明书提供的另一个实施例中,所述接收单元1201,接收所述第二设备发送的响应数据包,所述响应数据中包含所述第一设备的路由地址;
所述处理单元1202,根据所述响应数据包,确定所述第二设备的路由地址;
所述发送单元1203,根据所述第一设备的路由地址,将所述第二设备的路由地址发送给所述第一设备。
在本说明书提供的另一个实施例中,所述处理单元1202根据所述响应数据包,确定所述第二设备的路由地址,包括:
确定所述响应数据包中包含所述第二设备的路由地址,所述第二设备的路由地址由所述第二设备按照设定的第二封装协议对应的封装格式对所述响应数据包进行封装得到;
在本说明书提供的另一个实施例中,所述发送单元1203根据所述第一设备的路由地址,将所述第二设备的路由地址发送给所述第一设备,包括:
根据所述第一设备的路由地址,将所述响应数据包发送给所述第一设备。
在本说明书提供的另一个实施例中,所述处理单元1202根据所述响应数据包,确定所述第二设备的路由地址,包括:
若所述响应数据包中未包含所述第二设备的路由地址,那么将所述第二设备发送所述响应数据包所使用的地址确定为所述第二设备的路由地址;
根据所述第二设备的路由地址,生成新的QUIC数据包,所述新的QUIC数据包中包含所述第二设备的路由地址;
所述发送单元1203根据所述第一设备的路由地址,将所述第二设备的路由地址发送给所述第一设备,包括:
根据所述第一设备的路由地址,将所述新的QUIC数据包发送给所述第一设备。
在本说明书提供的另一个实施例中,所述处理单元1202根据所述第二设备的路由地址,生成新的QUIC数据包,包括:
根据所述第二设备的路由地址,按照设定的第二封装协议对应的封装格式,封装生成新的QUIC数据包。
在本说明书提供的另一个实施例中,所述第一封装协议所支持的封装格式中包含负载设备的地址位和客户端侧设备的地址位。
在本说明书提供的另一个实施例中,所述第二封装协议所支持的封装格式中包含CID标识位和服务器侧设备的地址位。
需要说明的是,本说明书实施例提供的数据处理设备可以通过软件方式实现,也可以通过硬件方式实现,这里不做具体限定。该数据处理设备接收第一设备发送的包含连接标识CID的QUIC数据包,解析该CID,并根据该解析结果确定路由地址,进而根据该路由地址,将接收到的QUIC数据包路由至第二设备,以便于第二设备对该QUIC数据包进行处理。负载设备在接收到发送端设备发送的数据包的情况下,通过对接收到的数据包的处理来确定数据传输的路由地址,快速建立发送端设备与接收端设备之间的数据传输通道,这种方式一方面无需借助存储的上下文信息,另一方面也不会因为负载设备出现重启、扩容、缩容、等异常情况而发生连接错误,有效提升使用QUIC协议传输数据的处理效率。
基于同一个发明构思,图13为本说明书实施例提供的一种数据处理设备的结构示意图。所述数据处理设备包括:
接收单元1301,接收客户端侧设备发送的连接建立数据包,所述连接建立数据包中未包含服务器侧设备的路由地址;
处理单元1302,随机选择一个服务器侧设备,按照设定的第一封装协议对应的封装格式,对所述连接建立数据包进行封装,将封装后的所述连接建立数据包发送给所述服务器侧设备,封装后的所述连接建立数据包中包含所述客户端侧设备的路由地址;
所述接收单元1301,接收所述服务器侧设备发送的响应数据;
所述处理单元1302,确定所述服务器侧设备的路由地址,所述响应数据中包含所述客户端侧设备的路由地址;
发送单元1303,根据所述客户端侧设备的路由地址,将确定的所述服务器侧设备的路由地址发送给所述客户端侧设备。
基于同一个发明构思,图14为本说明书实施例提供的一种数据处理设备的结构示意图。所述数据处理设备包括:
处理单元1401,按照设定的第二封装协议对应的封装格式生成QUIC数据包,所述QUIC数据包中包含连接标识CID;
发送单元1402,将所述QUIC数据发送给负载设备;
接收单元1403,接收所述负载设备发送的数据处理结果,所述数据处理结果由所述负载设备在解析所述CID得到路由地址后将所述QUIC数据包发送给所述路由地址对应的服务器侧设备,并由所述服务器侧设备处理后得到。
基于同一个发明构思,图15为本说明书实施例提供的一种数据处理设备的结构示意图。所述数据处理设备包括:
发送单元1501,向负载设备发送连接建立数据包,所述连接建立数据包中未包含服务器侧设备的路由地址;
接收单元1502,接收所述负载设备发送的连接建立响应数据包,所述连接建立响应数据包中包含与所述客户端侧设备建立数据传输通道的服务器侧设备的路由地址,所述服务器侧的路由地址由所述负载设备根据所述服务器侧设备发送的响应数据确定,所述响应数据由所述服务器侧设备对接收到的所述负载设备发送的所述连接建立数据包进行处理得到;
处理单元1503,根据所述服务器侧设备的路由地址和设定的第二封装协议对应的封装格式,生成QUIC数据包。
基于同一个发明构思,图16为本说明书实施例提供的一种数据处理设备的结构示意图。所述数据处理设备包括:
接收单元1601,接收负载设备发送的连接建立数据包,所述连接建立数据包由所述负载设备按照设定的第一封装协议对应的封装格式对接收到客户端侧设备发送的数据包封装得到,所述连接建立数据包包含所述客户端侧设备的路由地址;
处理单元1602,根据所述负载设备的路由地址,向所述负载设备发送响应数据包,以使得所述负载设备根据所述响应数据包确定所述服务器侧设备的路由地址。
另外,结合上述实施例中的数据处理方法,本说明书实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据处理方法。
图17示出了本说明书实施例提供的数据处理设备的硬件结构示意图。
数据处理设备可以包括处理器1701以及存储有计算机程序指令的存储器1702。
具体地,上述处理器1701可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本说明书实施例的一个或多个集成电路。
存储器1702可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器1702可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器1702可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器1702可在数据处理装置的内部或外部。在特定实施例中,存储器1702是非易失性固态存储器。在特定实施例中,存储器1702包括只读存储器(ROM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(PROM)、可擦除PROM(EPROM)、电可擦除PROM(EEPROM)、电可改写ROM(EAROM)或闪存或者两个或更多个以上这些的组合。
处理器1701通过读取并执行存储器1702中存储的计算机程序指令,以实现上述实施例中的任意一种数据处理方法。
在一个示例中,数据处理设备还可包括通信接口1703和总线1710。其中,如图17所示,处理器1701、存储器1702、通信接口1703通过总线1710连接并完成相互间的通信。
通信接口1703,主要用于实现本说明书实施例中各模块、装置、单元和/或设备之间的通信。
总线1710包括硬件、软件或两者,将信令数据处理设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、***组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线410可包括一个或多个总线。尽管本说明书实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。
通过本说明书实施例提供的数据处理方法及装置,接收第一设备发送的包含连接标识CID的QUIC数据包,解析该CID,并根据该解析结果确定路由地址,进而根据该路由地址,将接收到的QUIC数据包路由至第二设备,以便于第二设备对该QUIC数据包进行处理。负载设备在接收到发送端设备发送的数据包的情况下,通过对接收到的数据包的处理来确定数据传输的路由地址,快速建立发送端设备与接收端设备之间的数据传输通道,这种方式一方面无需借助存储的上下文信息,另一方面也不会因为负载设备出现重启、扩容、缩容、等异常情况而发生连接错误,有效提升使用QUIC协议传输数据的处理效率。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本说明书实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。