掌桥专利:专业的专利平台
掌桥专利
首页

一种数据处理方法、装置、电子设备及存储介质

文献发布时间:2024-04-18 19:52:40


一种数据处理方法、装置、电子设备及存储介质

技术领域

本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。

背景技术

域名服务器(Domain Name Server,DNS)是进行域名(domain name)和与之相对应的IP地址(IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址(IP address)的表,以解析消息的域名。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS缓存是指在正常访问IP地址之后,系统会将这个IP地址存储起来,当再次访问的时候,系统就会直接把本地的DNS缓存提取显示,是加速了网址的解析,提高DNS请求吞吐量的常用方案。

目前主流的开源DNS软件有bind、Unbound或DNS厂商等,在缓存处理机制上一般采用以下两种方式:

其一,采用缓存全局共享,在多线程访问过程中通过读写锁的方式对数据进行缓存保护,该方式需要消耗大量的锁,降低了数据处理效率。

其二,使用Hash表的无锁链表机制对数据进行缓存保护,该方式虽然降低锁的消耗,但是在多线程访问过程中是共享同一个缓存表,在非统一内存访问架构(Non UniformMemory Access,NUMA)下,也会存在缓存结果跨CPU访问的场景,降低了内存访问的效率,也降低了数据处理效率,进而对缓存系统的性能造成影响。

因此,如何提高数据处理效率,是目前亟需解决的问题。

发明内容

本申请提供一种数据处理方法、装置、设备及存储介质,用以提高数据处理的效率。

第一方面,提供一种数据处理方法,应用于DNS,所述DNS配置有N个收包线程和M个处理线程,所述N和M为大于0的整数,所述方法包括:

接收客户端设备的访问请求;其中,所述访问请求携带至少一个待处理的数据包;将各数据包发送给所述N个收包线程进行解析,解析得到所述各数据包各自对应的访问信息;根据所述各数据包各自对应的访问信息,将所述各数据包分流到所述M个处理线程中;当所述各数据包分流到所述M个处理线程后,通过所述M个处理线程对各自所管辖的数据包进行缓存处理。

在一种可能实现的方式中,所述访问信息包括数据包的请求域名、请求类型;所述根据所述各数据包各自对应的访问信息,将所述各数据包分流到所述M个处理线程中,包括:

根据所述各数据包各自对应的请求域名、请求类型,计算所述各数据包各自对应的哈希值;将相同哈希值对应的数据包分流到同一个处理线程中。

在一种可能实现的方式中,所述通过所述M个处理线程对各自所管辖的数据包进行缓存处理,包括:

当确定出第一数据包为请求数据包类型时,确定第一处理线程的无锁缓存表中是否记录有所述第一数据包的第一请求域名;其中,所述第一数据包为所述第一处理线程所管辖的数据包;若是,则生成响应数据包,并将所述响应数据包发送给所述客户端设备;若否,则生成转发session请求,并将所述转发session请求发送给下一个DNS;其中,所述转发session请求用于请求获取所述第一数据包的响应数据包。

在一种可能实现的方式中,所述通过所述M个处理线程对各自所管辖的数据包进行缓存处理,包括:

当确定出第一数据包为应答数据包类型时,根据所述第一数据包中的session标识,确定是否查询到所述session标识对应的session信息;其中,所述第一数据包为所述第一处理线程所管辖的数据包;若否,则将所述第一数据包删除;若是,则删除所述session信息,将所述第一数据包的第一请求域名添加至所述第一处理线程的无锁缓存表中,并向所述客户端设备返回访问请求响应。

在一种可能实现的方式中,所述M个处理线程包括P个无锁环形队列,用于缓存所述各数据包,以及所述各数据包各自对应的访问信息,所述P为等于M的整数。

第二方面,提供一种数据处理装置,应用于DNS,所述DNS配置有N个收包线程和M个处理线程,所述N和M为大于0的整数,所述装置包括:

接收模块,用于接收来自于客户端设备的访问请求;其中,所述访问请求携带至少一个待处理的数据包;解析模块,用于将各数据包发送给所述N个收包线程进行解析,解析得到所述各数据包各自对应的访问信息;分流模块,用于根据所述各数据包各自对应的访问信息,将所述各数据包分流到所述M个处理线程中;处理模块,用于当所述各数据包分流到所述M个处理线程后,通过所述M个处理线程对各自所管辖的数据包进行缓存处理。

在一种可能实现的方式中,所述访问信息包括数据包的请求域名、请求类型;所述处理模块,具体用于:

根据所述各数据包各自对应的请求域名、请求类型,计算所述各数据包各自对应的哈希值;将相同哈希值对应的数据包分流到同一个处理线程中。

在一种可能实现的方式中,所述处理模块,具体用于:

当确定出第一数据包为请求数据包类型时,确定第一处理线程的无锁缓存表中是否记录有所述第一数据包的第一请求域名;其中,所述第一数据包为所述第一处理线程所管辖的数据包;若是,则生成响应数据包,并将所述响应数据包发送给所述客户端设备;若否,则生成转发session请求,并将所述转发session请求发送给下一个DNS;其中,所述转发session请求用于请求获取所述第一数据包的响应数据包。

在一种可能实现的方式中,所述处理模块,具体用于:

当确定出第一数据包为应答数据包类型时,根据所述第一数据包中的session标识,确定是否查询到所述session标识对应的session信息;其中,所述第一数据包为所述第一处理线程所管辖的数据包;若否,则将所述第一数据包删除;若是,则删除所述session信息,将所述第一数据包的第一请求域名添加至所述第一处理线程的无锁缓存表中,并向所述客户端设备返回访问请求响应。

在一种可能实现的方式中,所述M个处理线程包括P个无锁环形队列,用于缓存所述各数据包,以及所述各数据包各自对应的访问信息,所述P为等于M的整数。

第三方面,提供一种电子设备,包括:

存储器,用于存放计算机程序;处理器,用于执行所述存储器上所存放的计算机程序时,实现第一方面中任一项所述的方法步骤。

第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述的方法步骤。

本申请实施例中,由于域名服务器的配置是将收包线程和处理线程分开配置,因此可以提高域名服务器的处理性能;再由于当接收来自于客户端设备的访问请求时,将各数据包发送给配置好的多个收包线程进行解析,解析得到各数据包各自对应的访问信息,可对多个数据包同时进行解析,加快数据包的解析速度,再根据各数据包各自对应的访问信息,将各数据包分流到多个处理线程中进行缓存处理,因此可以通过多个处理线程针对性的同时处理多个数据包,互不影响,进一步加快了数据处理效率,从而提高访问速度,满足了用户体验。

上述第二方面至第四方面中的各个方面以及各个方面可能达到的技术效果请参照上述针对第一方面或第一方面中的各种可能方案可以达到的技术效果说明,这里不再重复赘述。

附图说明

图1为本申请实施例适用的应用场景示意图;

图2为本申请实施例提供的一种域名服务器的结构示意图;

图3为本申请实施例提供的一种数据处理方法的流程图;

图4为本申请实施例提供的一种无锁缓存表的示例图;

图5为本申请实施例提供的一种对数据包进行缓存处理的流程图;

图6为本申请实施例提供的一种数据处理装置的结构示意图;

图7为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述。方法实施例中的具体操作方法也可以应用于装置实施例或系统实施例中。需要说明的是,在本申请的描述中“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。A与B连接,可以表示:A与B直接连接和A与B通过C连接这两种情况。另外,在本申请的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。

为了更好地理解本申请实施例,下面首先对本申请实施例中涉及的技术术语进行说明。

(1)数据平面开发套件(Data Plane Development Kit,DPDK)主要基于Linux系统运行,用于快速数据包处理的函数库与驱动集合,可以极大提高数据处理性能和吞吐量,提高数据平面应用程序的工作效率。DPDK使用了轮询(polling)而不是中断来处理数据包。在收到数据包时,经DPDK重载的网卡驱动不会通过中断通知CPU,而是直接将数据包存入内存,交付应用层软件通过DPDK提供的接口来直接处理,这样节省了大量的CPU中断时间和内存拷贝时间。

(2)散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

(3)NUMA技术可以使众多服务器像单一系统那样运转,同时保留小系统便于编程和管理的优点,是一种为多处理器的计算机设计的内存,内存访问时间取决于内存相对于处理器的位置。在NUMA下,处理器访问它自己的本地内存的速度比非本地内存(内存位于另一个处理器,或者是处理器之间共享的内存)快一些。非统一内存访问架构的特点是:被共享的内存物理上是分布式的,所有这些内存的集合就是全局地址空间。所以处理器访问这些内存的时间是不一样的,显然访问本地内存的速度要比访问全局共享内存或远程访问外地内存要快些。另外,NUMA中内存可能是分层的:本地内存、群内共享内存、全局共享内存。

(4)DNS缓存服务器指的是将需要频繁访问的网络内容存放在离用户较近、访问速度更快的系统中,以提高内容访问速度的一种技术。缓存服务器就是存放频繁访问内容的服务器。

(5)递归服务器的作用是:当客户端发起上网请求时,在查询了本机各种缓存之后没有获得相应的解析记录,就会向本地域名服务器发起查询请求;本地域名服务器会先查询自己的本地缓存,如果有结果直接返给客户端,如果没有结果就会代替客户端向根域名服务器、顶级域名服务器、二级域名服务器等一级一级的递归查询下去,最终找到域名对应的权威服务器,并取得结果并返回给客户端,同时将记录保存到本地缓存中。当客户端在TTL值内再次发起查询请求,本地域名服务器会直接将该结果发给客户端,而无需再次发起全球查询。

(6)Session:在计算机中,尤其是在网络应用中,称为“会话控制”,它是用来维护一个客户端和服务器之间关联的一种技术。Session对象存储特定用户会话所需的属性及配置信息。

下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。

图1为本申请实施例适用的应用场景示意图。如图所示,该场景主要包括客户端设备10、本地域名服务器(本地DNS)11、递归域名服务器(递归DNS)12;其中,该递归DNS 12由根域名服务器、顶级域名服务器、二级域名服务器、权限域名服务器等多个等级的服务器组成;客户端设备10与本地DNS 11之间可通过通信网络进行信息交互,本地DNS 11与递归DNS12之间可通过通信网络进行信息交互,该通信网络采用的通信方式可包括:无线通信方式和有线通信方式。

示例性的,客户端设备10可通过蜂窝移动通信技术接入网络,与本地DNS11,该蜂窝移动通信技术,可包括第五代移动通信(5th Generation Mobile Networks,5G)技术。

示例性的,客户端设备10可通过短距离无线通信方式接入网络,与本地DNS 11进行通信,该短距离无线通信方式,可包括无线保真(Wireless Fidelity,Wi-Fi)技术。

客户端设备10是一种可以向用户提供语音和/或数据连通性的设备,包括:具有无线连接功能的手持式终端设备、车载终端设备等。例如,客户端设备10包括但不限于:手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(Mobile Internet Device,MID)、可穿戴设备,虚拟现实(Virtual Reality,VR)设备、增强现实(Augmented Reality,AR)设备、工业控制中的无线终端设备、无人驾驶中的无线终端设备、智能电网中的无线终端设备、运输安全中的无线终端设备、智慧城市中的无线终端设备,或智慧家庭中的无线终端设备等。

该客户端设备10可向本地DNS 11发送访问请求。

本地DNS 11可用于接收来自于客户端设备10的访问请求,并根据访问请求进行相应的处理。例如,客户端设备10向本地DNS 11查询某个域名解析时,若本地DNS 11先查找缓存,未查询不到,则从递归DNS 12中的服务器去一级一级的查询,获取该域名的解析信息。

图2为本申请实施例提供的一种域名服务器的结构示意图。如图所示,该结构主要由收包线程(1,2,…,N)、无锁环形队列(1,2,…,P)、处理线程(1,2,…,M)组成。其中,一个处理线程对应一个无锁环形队列(dpdk ring),一个收包线程可分别与P个无锁环形队列连接。该域名服务器具体可以是指图1中的本地DNS 11,该无锁环形队列可以是数据库的形式。

示例性的,以收包线程1为例,收包线程1中可包括收包子模块、解析子模块、分流子模块。

该收包子模块,可用于接收来自于客户端设备(如图1中的客户端设备10)携带有数据包的访问请求。

该解析子模块,可用于将收包子模块接收到的数据包进行解析。

该分流子模块,可用于将解析子模块解析后的数据包,分流到连接的P个无锁环形队列中的某一个进行缓存。

示例性的,以处理线程1为例,处理线程1中可包括:获取子模块、缓存处理子模块、转发子模块。

该获取子模块,可用于从无锁环形队列1中获取数据包后,将该数据包发送给缓存处理子模块。

该缓存处理子模块接收到获取子模块发送的数据包后,可按照处理线程的处理逻辑、处理线程1的无锁缓存表等,确定是否可以直接从本地DNS获取到该数据包所请求的缓存数据(缓存信息),若是,则直接生成响应数据包,基于网卡发送给客户端设备,若否,则将该数据包发送给转发子模块。

该转发子模块收到该数据包后,可从递归服务器中去查询以及获取数据包所请求的缓存数据,得到响应数据包后,再基于网卡转发给客户端设备。

示例性的,域名服务器所配置的收包线程、处理线程的个数可根据DNS流量大小进行灵活配置,从而保证域名服务器具有良好的性能。

需要说明的是,上述所示的域名服务器只是一种示例,可根据实际需求对该域名服务器的结构进一步进行改善、扩充等,本申请实施例在此不做限制。

为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际的处理过程中或者装置执行时,可按照实施例或者附图所示的方法顺序执行或者并执行。

图3为本申请实施例提供的一种数据处理方法的流程图。该方法应用于域名服务器(如图2所示的域名服务器),用以提高数据处理的效率,如图3所示,该流程包括如下步骤:

301:接收来自于客户端设备的访问请求。

该客户端设备具体可以是图1所示的客户端设备10,该访问请求可包括至少一个待处理的数据包。

该步骤中,具体的交互过程可以是:客户端设备可实时向域名服务器(如图2所示的域名服务器)中的发送访问请求,该访问请求可携带多个待处理的数据包,域名服务器接收到该访问请求后,可根据各收包线程各自的最大容量、空闲状态等情况,合理的安排各收包线程中的收包子模块对各数据包进行收包处理,从而加快对数据包的收包速度,便于提高后续对数据处理的效率。

举例来讲,假设有4个相互独立的收包线程,3个待处理的数据包,若收包线程1的收包子模块此时正在执行,处于非空闲状态,则根据剩余的收包线程2、3、4配置的容量大小,合理的对3个待处理的数据包进行分配,可包括以下几种情况:

情况1:当3个收包线程的容量大小一致时,可将3个待处理的数据包进行均匀分配。

情况2:当3个收包线程的容量大小不一致时,可将3个待处理的数据包安排在最大容量的收包线程中,或者将3个待处理的数据包安排在收包线程2、3、4中的两个收包线程中。

在一些实施例中,客户端设备可按照设定时间,轮询式的发送访问请求给域名服务器,域名服务器中的收包线程便可按照轮询式机制,接收来自于客户端设备的访问请求,从而提高网卡的I/O接口收取数据包的能力。

302:将各数据包发送给N个收包线程进行解析,解析得到各数据包各自对应的访问信息。

示例性的,可以是N个收包线程中的解析子模块(如图2所示的解析子模块)进行解析,具体可以是:各收包线程的收包子模块接收到来自于客户端设备的数据包后,将各自获取的数据包发送给各自的解析子模块进行解析,通过多个解析子模块,对多个数据包进行同时解析,加快了解析速度,便于提高后续对数据处理的效率。

示例性的,该访问信息可包括:数据包的请求域名、请求类型,还可包括数据包类型(例如请求数据包、应答数据包)、数据包名称、数据包标识、客户端设备的源地址等。

303:根据上述各数据包各自对应的访问信息,将各数据包分流到M个处理线程中。

示例性的,对各数据包进行分流,可通过以下方式:根据各数据包各自对应的请求域名(DNS qname)、请求类型(DNS qtype),计算各数据包各自对应的哈希值;将相同哈希值对应的数据包分流到同一个处理线程中。

举例来讲,假设对数据包1、数据包2、数据包3分别进行哈希值计算时,得到数据包1和数据包2的哈希值相同、数据包3的哈希值不同,则可将数据包1和数据包2分流到同一个处理线程中(例如,图2所示的处理线程1),数据包3分流到其他的处理线程中,从而可以保证将同一请求域名、请求类型的多次访问请求可以分流到同一个处理线程中,或者保证将同一访问请求的数据包分流到同一个处理线程中,防止多个处理线程对重复的数据包进行多次处理,提高了对数据处理的效率。

在一些实施例中,对各数据包进行分流时,若各处理线程正处于工作状态,则可将各处理线程各自所管辖的数据包缓存在各自对应的无锁环形队列中(如图2所示的无锁环形队列),使得各处理线程可按照时间间隔,循环读取各自对应的无锁环形队列中的数据包,从而避免造成后续对数据包的处理冲突。

304:当各数据包分流到M个处理线程后,通过M个处理线程对各自所管辖的数据包进行缓存处理。

示例性的,通过M个处理线程对各自所管辖的数据包进行缓存处理,以处理线程1所管辖的数据包1为例,可包括以下几种示例:

示例1,针对数据包1为请求数据包类型:当确定出第一数据包(数据包1)为请求数据包类型时,确定第一处理线程(处理线程1)的无锁缓存表中是否记录有该第一数据包的第一请求域名,该第一数据包为第一处理线程所管辖的数据包;若是,则表明本地的DNS缓存有该第一数据包对应的缓存信息,便可生成响应数据包,并将响应数据包发送给客户端设备;若否,则表明本地的DNS未缓存有该第一数据包对应的缓存信息,可生成转发session请求,并将转发session请求发送给下一个DNS(如图2所示的递归服务器中的根域名服务器),用于请求从下一个DNS获取该第一数据包的响应数据包。

在一些实施例中,可根据第一数据包的请求类型,确定第一处理线程的无锁缓存表中是否记录有该第一数据包的第一请求域名。

在另一些实施例中,可根据第一数据包的请求域名,确定第一处理线程的无锁缓存表中是否记录有该第一数据包的第一请求域名。

在另一实施例中,可根据第一数据包的请求域名和请求类型,确定第一处理线程的无锁缓存表中是否记录有该第一数据包的第一请求域名。

示例性的,该无锁缓存表(LRU hash)主要由两个组件组成,如图4所示包括:hashmap、lru_list;该hashmap的设计可采用常规的拉链式,从而避免哈希值之间的冲突,主要由多个key、node构成,一个key表征一个请求域名和请求类型;该lru_list的设计可采用双链表结构,当有新数据插入时,需执行两步操作,在新建的节点插入hashmap,以及将新建的节点插入到lru_list的末端。采用这种结构的无锁缓存表,可以降低锁的消耗,各处理线程可各自维护各自的无锁缓存表,不相互影响,从而提高了域名服务器的处理性能。

示例2,针对数据包1为应答数据包类型:当确定出第一数据包(数据包1)为应答数据包类型时,根据第一数据包中的session标识,确定是否查询到session标识对应的session信息,若否,则表明该第一数据包是存在攻击性的恶意数据包,便将第一数据包删除;若是,则删除session信息,将第一数据包的第一请求域名添加至第一处理线程的无锁缓存表中,并向客户端设备返回访问请求响应,从而便于后续直接通过查询无锁缓存表,获取相应的访问结果,提高访问效率。

本申请实施例中,由于域名服务器的配置是将收包线程和处理线程分开配置,因此可以提高域名服务器的处理性能;再由于当接收来自于客户端设备的访问请求时,将各数据包发送给配置好的多个收包线程进行解析,解析得到各数据包各自对应的访问信息,可对多个数据包同时进行解析,加快数据包的解析速度,再根据各数据包各自对应的访问信息,将各数据包分流到多个处理线程中进行缓存处理,因此可以通过多个处理线程针对性的同时处理多个数据包,互不影响,进一步加快了数据处理效率,从而提高访问速度,满足了用户体验。

针对上述示例1、示例2,图5示例性示出了本申请实施例提供的一种对数据包进行缓存处理的流程图。以处理线程1、数据包1为例,如图所示,可包括如下步骤:

501:处理线程1从无锁环形队列1中获取数据包1。

502:处理线程获取到数据包1后,判断该数据包1的数据包类型,若该数据包1为请求数据包类型,则转入503,若该数据包1为应答数据包类型,则转入507。

503:根据数据包1的请求域名,查询处理线程1中的无锁缓存表中是否记录有数据包1的请求域名,若是,则转入504,若否,则转入,505。

504:生成响应数据包,并将响应数据包发送给客户端设备。

该步骤中,可根据在本地DNS查询到的数据包1的缓存信息,以及本地的IP地址封装成响应数据包。

505:生成转发session请求,并将转发session请求发送给下一个DNS,并转入506。

示例性,处理线程1通过该转发session请求,以递归查询方式获取到该数据包1的响应数据包,可将此过程产生的session信息存储到本地DNS中,便于后续可直接使用。

506:根据该转发session请求,从下一个DNS中获取到该数据包1的缓存信息后,可根据该缓存信息、下一个DNS对应的IP地址封装成响应数据包(转发数据包),转发给客户端设备。

507:根据数据包1中的session标识,确定是否查询到session标识对应的session信息,若是,则转入508,若否,则转入509。

508:删除session信息,将数据包1的请求域名添加至处理线程1的无锁缓存表中,并向客户端设备返回访问请求响应。

该返回请求响应携带数据包1的响应数据包。

509:将第一数据包删除。

基于相同的技术构思,本申请实施例还提供了一种数据处理装置,该装置可实现本申请实施例中上述数据处理方法的流程。

图6为本申请实施例提供的一种数据处理装置的结构示意图。应用于DNS,DNS配置有N个收包线程和M个处理线程,N和M为大于0的整数,如图所示,该装置包括:接收模块601、解析模块602、分流模块603、处理模块604。

接收模块601,用于接收来自于客户端设备的访问请求;其中,所述访问请求携带至少一个待处理的数据包。

解析模块602,用于将各数据包发送给所述N个收包线程进行解析,解析得到所述各数据包各自对应的访问信息。

分流模块603,用于根据所述各数据包各自对应的访问信息,将所述各数据包分流到所述M个处理线程中。

处理模块604,用于当所述各数据包分流到所述M个处理线程后,通过所述M个处理线程对各自所管辖的数据包进行缓存处理。

可选的,所述访问信息包括数据包的请求域名、请求类型;所述处理模块604,具体用于:

根据所述各数据包各自对应的请求域名、请求类型,计算所述各数据包各自对应的哈希值;将相同哈希值对应的数据包分流到同一个处理线程中。

可选的,所述处理模块604,具体用于:

当确定出第一数据包为请求数据包类型时,确定第一处理线程的无锁缓存表中是否记录有所述第一数据包的第一请求域名;其中,所述第一数据包为所述第一处理线程所管辖的数据包;若是,则生成响应数据包,并将所述响应数据包发送给所述客户端设备;若否,则生成转发session请求,并将所述转发session请求发送给下一个DNS;其中,所述转发session请求用于请求获取所述第一数据包的响应数据包。

可选的,所述处理模块604,具体用于:

当确定出第一数据包为应答数据包类型时,根据所述第一数据包中的session标识,确定是否查询到所述session标识对应的session信息;其中,所述第一数据包为所述第一处理线程所管辖的数据包;若否,则将所述第一数据包删除;若是,则删除所述session信息,将所述第一数据包的第一请求域名添加至所述第一处理线程的无锁缓存表中,并向所述客户端设备返回访问请求响应。

在此需要说明的是,本申请实施例提供的上述装置,能够实现上述数据处理方法实施例中的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。

基于相同的技术构思,本申请实施例中还提供了一种电子设备,所述电子设备可以实现前述一种数据处理装置的功能。

图7为本申请实施例提供的电子设备的结构示意图。

至少一个处理器701,以及与至少一个处理器701连接的存储器702,本申请实施例中不限定处理器701与存储器702之间的具体连接介质,图7中是以处理器701和存储器702之间通过总线700连接为例。总线700在图7中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线700可以分为地址总线、数据总线、控制总线等,为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。或者,处理器701也可以称为控制器,对于名称不做限制。

在本申请实施例中,存储器702存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,可以执行前文论述的一种数据处理方法。处理器701可以实现图6所示的装置中各个模块的功能。

其中,处理器701是该装置的控制中心,可以利用各种接口和线路连接整个该控制设备的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据,该装置的各种功能和处理数据,从而对该装置进行整体监控。

在一种可能的设计中,处理器701可包括一个或多个处理单元,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器701可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的一种数据处理方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

通过对处理器701进行设计编程,可以将前述实施例中介绍的一种数据处理方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图3所示的实施例的一种数据处理方法。如何对处理器701进行设计编程为本领域技术人员所公知的技术,这里不再赘述。

在此需要说明的是,本申请实施例提供的上述通电子设备,能够实现上述方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方法实施例相同的部分及有益效果进行具体赘述。

本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机执行上述实施例中的一种数据处理方法。

本申请实施例还提供了一种计算机程序产品,所述计算机程序产品在被计算机调用时,使得所述计算机执行上述实施例中的一种数据处理方法。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

技术分类

06120116332260