CN111221642B - 一种数据处理方法、装置、存储介质及终端 - Google Patents
一种数据处理方法、装置、存储介质及终端 Download PDFInfo
- Publication number
- CN111221642B CN111221642B CN201811407932.2A CN201811407932A CN111221642B CN 111221642 B CN111221642 B CN 111221642B CN 201811407932 A CN201811407932 A CN 201811407932A CN 111221642 B CN111221642 B CN 111221642B
- Authority
- CN
- China
- Prior art keywords
- data
- event
- data packet
- thread
- socket
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 80
- 238000000034 method Methods 0.000 claims abstract description 73
- 230000008569 process Effects 0.000 claims abstract description 50
- 230000006870 function Effects 0.000 claims abstract description 37
- 238000010438 heat treatment Methods 0.000 claims description 15
- 238000001816 cooling Methods 0.000 claims description 12
- 238000013500 data storage Methods 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 6
- 238000004904 shortening Methods 0.000 claims 2
- 230000006854 communication Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 13
- 238000002474 experimental method Methods 0.000 description 5
- 230000002035 prolonged effect Effects 0.000 description 5
- 238000012795 verification Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 230000007175 bidirectional communication Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000035484 reaction time Effects 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据处理方法、装置、存储介质及终端,该方法包括:为每个套接字添加一个事件,且在操作系统内核的中断程序中建立回调函数;在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理;其中,通过一个线程记录和跟踪多个套接字的状态。通过上述方案可以解决现有的为每个Socket绑定一个线程,多个Socket需要启动多个线程所导致的内存开销过大,网络I/0的吞吐量较低的问题,达到了有效减少系统的内存开销,提升资源利用率和处理效率的技术效果。
Description
技术领域
本发明属于互联网技术领域,具体涉及一种数据处理方法、装置、存储介质及终端。
背景技术
在信息化时代,数据是非常重要的,相应的,保存数据的数据库服务器资源也是很重要的。对于多应用程序操作MySQL数据库,当连接数过多的时候就会出现异常错误,且CPU和内存服务器资源占用过多。这主要是因为,创建线程数过多,操作系统会在线程之间进行切换,更多的线程就需要更多的内存空间,且有的线程在执行慢查询语句的时候长时间占用系统资源使得这些系统资源无法被释放,也就导致数据库的查询功能变得很慢。
针对上述这种情况,目前的做法是建立线程池,创建几个固定的线程与数据库建立连接,当应用程序连接数据库时就从线程池中获取已经创建好的线程与数据库建立连接。这样可以解决服务器资源使用过高的问题,但是线程池线程数量固定会造成应用程序连接数据库过少时的系统资源浪费,过多时系统资源不足的问题,且慢查询语句及操作数据库时间过长会造成线程系统资源长时间不能被释放,后面的应用程序无法连接数据库。
针对上述数据库服务过程中所存在的问题,目前尚未提出有效的解决方案。
发明内容
本发明的目的在于,针对上述缺陷,提供一种数据处理方法、装置、存储介质及终端,以解决现有技术中对数据库进行操作的过程中资源利用率低,事件处理效率低的问题,达到了有效提升资源利用率和处理效率的技术效果。
本发明提供一种数据处理方法,包括:
为每个套接字添加一个事件,且在操作系统内核的中断程序中建立回调函数;
在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理;
其中,通过一个线程记录和跟踪多个套接字的状态。
在一个实施方式中,调用事件处理线程池中的线程对所述数据包进行处理,包括:
在对所述数据包的处理为查询事件且查询事件超出预设时长的情况下,通过缓存表存放热数据;
通过热数据加热和热数据放凉的方式,对所述缓存表中的数据进行存放管理。
在一个实施方式中,调用事件处理线程池中的线程对所述数据包进行处理,包括:
通过内存复制的方式将所述数据包复制到缓冲区中;
调用事件处理线程池中的空闲线程对所述数据包进行处理,其中,所述事件处理线程池中的线程数量小于等于预设的线程数阈值。
在一个实施方式中,在调用事件处理线程池中的空闲线程对所述数据包进行处理的过程中,还包括:
将所述数据包存入预设的双链表中;
清除所述缓冲区中的所述数据包。
在一个实施方式中,在操作系统内核的中断程序中建立回调函数之前,所述方法还包括:
在操作系统内核中申请一个文件系统;
将所述每个套接字添加至所述文件系统中;
为每个事件绑定一个网卡驱动程序,其中,该网卡驱动程序用于监听该事件对应的套接字的数据包。
与上述方法相匹配,本发明另一方面提供一种数据处理装置,包括:
添加模块,用于为每个套接字添加一个事件,且在操作系统内核的中断程序中建立回调函数;
调用模块,用于在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理;
其中,通过一个线程记录和跟踪多个套接字的状态。
在一个实施方式中,所述调用模块包括:
第一存放单元,用于在对所述数据包的处理为查询事件且查询事件超出预设时长的情况下,通过缓存表存放热数据;
第二存放单元,用于通过热数据加热和热数据放凉的方式,对所述缓存表中的数据进行存放管理。
在一个实施方式中,所述调用模块包括:
复制单元,用于通过内存复制的方式将所述数据包复制到缓冲区中;
调用单元,用于调用事件处理线程池中的空闲线程对所述数据包进行处理,其中,所述事件处理线程池中的线程数量小于等于预设的线程数阈值。
在一个实施方式中,上述数据处理装置还包括:
存入单元,用于在调用事件处理线程池中的空闲线程对所述数据包进行处理的过程中,将所述数据包存入预设的双链表中;
清除单元,用于清除所述缓冲区中的所述数据包。
在一个实施方式中,上述数据处理装置还包括:
申请模块,用于在操作系统内核的中断程序中建立回调函数之前,在操作系统内核中申请一个文件系统;
添加模块,用于将所述每个套接字添加至所述文件系统中;
绑定模块,用于为每个事件绑定一个网卡驱动程序,其中,该网卡驱动程序用于监听该事件对应的套接字的数据包。
与上述装置相匹配,本发明再一方面提供一种终端,包括:以上所述的数据处理装置。
与上述方法相匹配,本发明再一方面提供一种存储介质,包括:所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行以上所述的数据处理方法。
与上述方法相匹配,本发明再一方面提供一种终端,包括:处理器,用于执行多条指令;存储器,用于存储多条指令;其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行以上所述的数据处理方法。
由此,本发明的方案,仅通过一个线程对多个套接字的状态进行跟踪和记录,对于每个操作事件而言,在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理,这样就不需要为每个套接字都分配一个线程,仅在需要的时候才分配线程。通过上述方案可以解决现有的为每个Socket绑定一个线程,多个Socket需要启动多个线程所导致的内存开销过大,网络I/0的吞吐量较低的问题,达到了有效减少系统的内存开销,提升资源利用率和处理效率的技术效果。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明的数据处理方法的一实施例的流程示意图;
图2为本发明的方法中中间件的架构示意图;
图3为本发明的数据处理装置的一实施例的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到现有的数据库连接数过多造成连接异常,以及CPU和内存等系统资源消耗过多的问题,主要是因为对于I/O流都需要绑定一个线程,这样就导致在I/O流过多的时候,就需要过多的线程。
为此,在本例中通过建立一个线程来记录跟踪每一个Socket(I/O流)的状态,从而通过该线程来同时管理多个I/O流。同时,绑定网卡驱动程序监控数据包,在操作系统内核中断处理程序中注册一个回调函数,一旦有该句柄的Socket数据包,内核就会启动回调函数,通过内存复制的方式将数据包复制到缓冲区,然后,调用事件处理线程池(在该线程池中仅设置最大线程数)中的线程,对缓冲区中的数据进行处理,这样就避免了传统的每个Socket(I/O流)绑定一个线程,多个Socket(I/O流)需要启动多个线程的情况,从而可以大大降低创建多线程的内存开销,也避免了在多个线程之间切换所消耗的CPU资源,提高了网络I/0的吞吐量和异步事件的处理能力。
根据本发明的实施例,提供了一种数据处理方法,如图1所示本发明的方法的一实施例的流程示意图。该数据处理方法可以包括:
步骤101:为每个套接字添加一个事件,且在操作系统内核的中断程序中建立回调函数;
其中,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。建立网络通信连接至少要一对端口号(Socket)。Socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。HTTP是轿车,提供了封装或者显示数据的具体形式,Socket是发动机,提供了网络通信的能力。Socket的英文原义是“孔”或“插座”,作为BSD UNIX的进程通信机制,取后一种意思,通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
步骤102:在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理;
其中,通过一个线程记录和跟踪多个套接字的状态。
在上例中,仅通过一个线程对多个套接字的状态进行跟踪和记录,对于每个操作事件而言,在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理,这样就不需要为每个套接字都分配一个线程,仅在需要的时候才分配线程。通过上述方案可以解决现有的为每个Socket绑定一个线程,多个Socket需要启动多个线程所导致的内存开销过大,网络I/0的吞吐量较低的问题,达到了有效减少系统的内存开销,提升资源利用率和处理效率的技术效果。
考虑到对于操作数据库比较长的SQL语句而言,即对于慢查询语句而言,占用系统资源时间比较久,使得系统资源无法被释放,后面的程序无法连接数据库。为此,在本例中,在对所述数据包的处理为查询事件且查询事件超出预设时长的情况下,通过缓存表存放热数据;通过热数据加热和热数据放凉的方式,对所述缓存表中的数据进行存放管理。
即,对于操作数据库比较长的SQL语句,可以采用HashMap缓存表来存放热数据,然后,通过热数据加热、热数据放凉的方式控制缓存表热数据的存放,这样可以有效缩短慢查询的反应时间。
其中,热数据加热,指的是当缓存中的数据有访问时,就延长数据存储的时间,下次再访问相同数据的时候又将该该数据的存储时间延长,每访问一次就会提高数据的热度;热数据放凉,指的是当缓存中的数据长时间没有被访问时,数据存储的有效期就会慢慢变短,直至过期,热数据逐步变凉。
通过上述热数据加热、热数据放凉的方式可以解决SQL慢查询语句及数据库操作时间过长造成线程资源长时间不能被释放的问题。
在上述步骤102中,调用事件处理线程池中的线程对所述数据包进行处理,可以包括:
S1:通过内存复制的方式将所述数据包复制到缓冲区中;
S2:调用事件处理线程池中的空闲线程对所述数据包进行处理,其中,所述事件处理线程池中的线程数量小于等于预设的线程数阈值。
即,对于时间处理线程池而言,仅设置最大线程数,在需要调用的时候,就调用事件处理线程池中空闲线程进行处理,对于待处理的数据包可以采用内存复制的方式复制到缓冲区,即,将发生的事件从内核态复制到用户态,并可以同时将事件数据返回给用户,再调用线程对数据进行处理。
为了提升异步处理能力,在调用处理线程池中的空闲线程对所述数据包进行处理的过程中,可以将所述数据包存入预设的双链表中;清除所述缓冲区中的所述数据包。
即,当设备(网卡)接收与Socket(I/O流)相关的数据时,就会调用这个回调事件,然后将相关数据放入一个专门存放事件数据的双链表rdlist中。这样一旦设备(网卡)收到数据就会被立即转移到双链表rdlist中,及时清空了设备(网卡)接收数据的缓冲区,便于设备(网卡)接收其他数据,从而提高了网络I/O的吞吐量。在程序主线程监控到专门存放事件数据的双链表rdlist有数据存入时,就调用事件任务处理线程池中线程来对数据进行处理,从而提高了异步事件的处理能力。
在具体的实现时候,在操作系统内核的中断程序中建立回调函数之前,可以在在操作系统内核中申请一个文件系统;将所述每个套接字添加至所述文件系统中;为每个事件绑定一个网卡驱动程序,其中,该网卡驱动程序用于监听该事件对应的套接字的数据包。
该文件系统可以但不限于是B+树,即,将文件描述符(监听套接字Socket连接)添加到所创建的文件系统中,即,挂载到B+树的节点上,对于重复添加的事件,通过B+树可以高效地识别出来,其中,B+树的插入时间效率是lgn,其中n为树的高度。将Socket连接存入上步创建的文件系统里面。
上述B+树也可以称为红黑树,是一种高效存储高效检索的数据结构,B+树是为磁盘或其他直接存取辅助设备而设计的一种平衡查找树,在B+树中,所有记录节点都是按照键值的大小顺序存放在同一层的叶节点中的,各叶节点之间通过指针进行连接。
下面结合一个具体实施例对上述方法进行说明,然而,值得注意的是,该具体实施例仅是为了更好地说明本申请,并不构成对本申请的不当限定。
在本例中,程序只需启动一个线程,通过该线程来记录跟踪每个Socket(I/O流)的状态来同时管理多个Socket(I/O流),这样就避免了传统的每个Socket(I/O流)绑定一个线程,多个Socket(I/O流)需要启动多个线程的情况,从而可以大大降低创建多线程的内存开销,也避免了在多个线程之间切换所消耗的CPU资源。
其中,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个Socket。建立网络通信连接至少要一对端口号(Socket)。Socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。HTTP是轿车,提供了封装或者显示数据的具体形式,Socket是发动机,提供了网络通信的能力。Socket的英文原义是“孔”或“插座”,作为BSD UNIX的进程通信机制,取后一种意思,通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。
具体的,为每个Socket(I/O流)添加一个事件,每个事件都会与设备(网卡)驱动程序建立回调关系,当设备(网卡)接收与Socket(I/O流)相关的数据时,就会调用这个回调事件,然后将相关数据放入一个专门存放事件数据的双链表rdlist中。这样一旦设备(网卡)收到数据就会被立即转移到双链表rdlist中,及时清空了设备(网卡)接收数据的缓冲区,便于设备(网卡)接收其他数据,从而提高了网络I/O的吞吐量。
在程序主线程监控到专门存放事件数据的双链表rdlist有数据存入时,就调用事件任务处理线程池中线程来对数据进行处理,从而提高了异步事件的处理能力。
在实现的过程中,对于操作数据库比较长的SQL语句,采用HashMap缓存表来存放热数据,然后,通过热数据加热、热数据放凉的方式控制缓存表热数据的存放,这样可以有效缩短慢查询的反应时间。
其中,热数据加热,指的是当缓存中的数据有访问时,就延长数据存储的时间,下次再访问相同数据的时候又将该该数据的存储时间延长,每访问一次就会提高数据的热度;热数据放凉,指的是当缓存中的数据长时间没有被访问时,数据存储的有效期就会慢慢变短,直至过期,热数据逐步变凉。
通过上述热数据加热、热数据放凉的方式可以解决SQL慢查询语句及数据库操作时间过长造成线程资源长时间不能被释放的问题。
下面结合一个具体实施例进行说明:
在本例中,将中间件和MySQL安装在同一台服务器上,采用进程间socket通信方式连接MySQL,这样可以更快地连接数据库。其中,如图2所示,中间件可以包括:高性能网络socket服务端程序、高效的事件任务处理线程池、HashMap缓存表、通过进程间通信的方式连接MySQL数据库。
具体的,可以包括如下步骤:
S1:在操作系统内核中申请一个文件系统,例如:该文件系统为B+树,即,创建一个文件系统用于存储Socket连接。
其中,内核是一个操作系统的核心,是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
S2:将文件描述符(监听套接字Socket连接)添加到所创建的文件系统中,即,挂载到B+树的节点上,对于重复添加的事件,通过B+树可以高效地识别出来,其中,B+树的插入时间效率是lgn,其中n为树的高度。将Socket连接存入上步创建的文件系统里面。
上述B+树也可以称为红黑树,是一种高效存储高效检索的数据结构,B+树是为磁盘或其他直接存取辅助设备而设计的一种平衡查找树,在B+树中,所有记录节点都是按照键值的大小顺序存放在同一层的叶节点中的,各叶节点之间通过指针进行连接。
S3:所有事件都与设备(网卡)驱动程序建立回调关系,在操作系统内核中断程序中注册一个回调函数,同时,绑定网卡驱动程序监听该句柄的网卡数据包。当有收到数据包时,内核就会发出通知,启动回调函数,将发生的事件从内核态复制到用户态,同时,将事件数据返回给用户,然后,从事件任务处理线程池中调用空闲线程对事件数据进行处理。
其中,句柄是指程序设计,是一种特殊的智能指针,当一个应用程序要引用其他系统(例如:数据库、操作系统)所管理的内存块或对象时,就要使用句柄。
通过这种方式,可以实现单线程管理多Socket连接的目的,且可以高效地接收网络数据并启动任务处理线程池处理数据。
S4:事件任务处理线程池中的线程通过内存共享的方式获取到数据,再通过进程间通信的方式快速连接数据库并进行增删改查等相应的操作。
其中,对于查询时间较长的操作,可以采用HashMap缓存表来存放热数据,然后,通过热数据加热(当数据库中的相关记录改变时,会同步更新缓存数据并延长数据过期时间),热数据放凉(缓存数据过期的数据会自动删除)的方式控制缓存表热数据的存放。
S5:操作数据库返回的结果通过Socket连接返回至相应的客户端。
通过上例的方式,可以大大降低CPU、内存资源的使用率,在同等配置下,数据库连接数可以增加1000%,查询速度可以提升3000%。(这一步介绍返回查询结果给客户端)
经大量的试验验证,采用本实施例的技术方案,仅通过一个线程对多个套接字的状态进行跟踪和记录,对于每个操作事件而言,在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理,这样就不需要为每个套接字都分配一个线程,仅在需要的时候才分配线程。通过上述方案可以解决现有的为每个Socket绑定一个线程,多个Socket需要启动多个线程所导致的内存开销过大,网络I/0的吞吐量较低的问题,达到了有效减少系统的内存开销,提升资源利用率和处理效率的技术效果。
根据本发明的实施例,还提供了对应于数据处理方法的一种数据处理装置。参见图3所示本发明的装置的一实施例的结构示意图。该数据处理装置可以包括:
添加模块301,用于为每个套接字添加一个事件,且在操作系统内核的中断程序中建立回调函数;
调用模块302,用于在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理;
其中,通过一个线程记录和跟踪多个套接字的状态。
在一个实施方式中,调用模块302可以包括:第一存放单元,用于在对所述数据包的处理为查询事件且查询事件超出预设时长的情况下,通过缓存表存放热数据;第二存放单元,用于通过热数据加热和热数据放凉的方式,对所述缓存表中的数据进行存放管理。
在一个实施方式中,调用模块302可以包括:复制单元,用于通过内存复制的方式将所述数据包复制到缓冲区中;调用单元,用于调用事件处理线程池中的空闲线程对所述数据包进行处理,其中,所述事件处理线程池中的线程数量小于等于预设的线程数阈值。
在一个实施方式中,上述数据处理装置还可以包括:存入单元,用于在调用事件处理线程池中的空闲线程对所述数据包进行处理的过程中,将所述数据包存入预设的双链表中;清除单元,用于清除所述缓冲区中的所述数据包。
在一个实施方式中,上述数据处理装置还可以包括:申请模块,用于在操作系统内核的中断程序中建立回调函数之前,在操作系统内核中申请一个文件系统;添加模块,用于将所述每个套接字添加至所述文件系统中;绑定模块,用于为每个事件绑定一个网卡驱动程序,其中,该网卡驱动程序用于监听该事件对应的套接字的数据包。
由于本实施例的装置所实现的处理及功能基本相应于前述图1至图2所示的方法的实施例、原理和实例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
经大量的试验验证,采用本发明的技术方案,仅通过一个线程对多个套接字的状态进行跟踪和记录,对于每个操作事件而言,在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理,这样就不需要为每个套接字都分配一个线程,仅在需要的时候才分配线程。通过上述方案可以解决现有的为每个Socket绑定一个线程,多个Socket需要启动多个线程所导致的内存开销过大,网络I/0的吞吐量较低的问题,达到了有效减少系统的内存开销,提升资源利用率和处理效率的技术效果。
根据本发明的实施例,还提供了对应于数据处理装置的一种终端。该终端可以包括:以上所述的数据处理装置。
由于本实施例的终端所实现的处理及功能基本相应于前述图3所示的装置的实施例、原理和实例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
经大量的试验验证,采用本发明的技术方案,仅通过一个线程对多个套接字的状态进行跟踪和记录,对于每个操作事件而言,在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理,这样就不需要为每个套接字都分配一个线程,仅在需要的时候才分配线程。通过上述方案可以解决现有的为每个Socket绑定一个线程,多个Socket需要启动多个线程所导致的内存开销过大,网络I/0的吞吐量较低的问题,达到了有效减少系统的内存开销,提升资源利用率和处理效率的技术效果。
根据本发明的实施例,还提供了对应于数据处理方法的一种存储介质。该存储介质,可以包括:所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行以上所述的数据处理方法。
由于本实施例的存储介质所实现的处理及功能基本相应于前述图1至图2所示的方法的实施例、原理和实例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
经大量的试验验证,采用本发明的技术方案,仅通过一个线程对多个套接字的状态进行跟踪和记录,对于每个操作事件而言,在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理,这样就不需要为每个套接字都分配一个线程,仅在需要的时候才分配线程。通过上述方案可以解决现有的为每个Socket绑定一个线程,多个Socket需要启动多个线程所导致的内存开销过大,网络I/0的吞吐量较低的问题,达到了有效减少系统的内存开销,提升资源利用率和处理效率的技术效果。
根据本发明的实施例,还提供了对应于数据处理方法的一种终端。该终端,可以包括:处理器,用于执行多条指令;存储器,用于存储多条指令;其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行以上所述的数据处理方法。
由于本实施例的终端所实现的处理及功能基本相应于前述图1至图2所示的方法的实施例、原理和实例,故本实施例的描述中未详尽之处,可以参见前述实施例中的相关说明,在此不做赘述。
经大量的试验验证,采用本发明的技术方案,仅通过一个线程对多个套接字的状态进行跟踪和记录,对于每个操作事件而言,在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理,这样就不需要为每个套接字都分配一个线程,仅在需要的时候才分配线程。通过上述方案可以解决现有的为每个Socket绑定一个线程,多个Socket需要启动多个线程所导致的内存开销过大,网络I/0的吞吐量较低的问题,达到了有效减少系统的内存开销,提升资源利用率和处理效率的技术效果。
综上,本领域技术人员容易理解的是,在不冲突的前提下,上述各有利方式可以自由地组合、叠加。
以上所述仅为本发明的实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
Claims (9)
1.一种数据处理方法,其特征在于,包括:
为每个套接字添加一个事件,且在操作系统内核的中断程序中建立回调函数;
在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理;
其中,通过一个线程记录和跟踪多个套接字的状态;
调用事件处理线程池中的线程对所述数据包进行处理,包括:
在对所述数据包的处理为查询事件且查询事件超出预设时长的情况下,通过缓存表存放热数据;
通过热数据加热和热数据放凉的方式,对所述缓存表中的数据进行存放管理;
热数据加热为当所述缓存表中的数据有访问时,延长数据存储的时间;
热数据放凉为当所述缓存表中的数据长时间没有被访问时,缩短数据存储的时间;
调用事件处理线程池中的线程对所述数据包进行处理,还包括:
通过内存复制的方式将所述数据包复制到缓冲区中;
调用事件处理线程池中的空闲线程对所述数据包进行处理,其中,所述事件处理线程池中的线程数量小于等于预设的线程数阈值。
2.根据权利要求1的方法,其特征在于,在调用事件处理线程池中的空闲线程对所述数据包进行处理的过程中,还包括:
将所述数据包存入预设的双链表中;
清除所述缓冲区中的所述数据包。
3.根据权利要求1-2之一所述的方法,其特征在于,在操作系统内核的中断程序中建立回调函数之前,所述方法还包括:
在操作系统内核中申请一个文件系统;
将所述每个套接字添加至所述文件系统中;
为每个事件绑定一个网卡驱动程序,其中,该网卡驱动程序用于监听该事件对应的套接字的数据包。
4.一种数据处理装置,其特征在于,包括:
添加模块,用于为每个套接字添加一个事件,且在操作系统内核的中断程序中建立回调函数;
调用模块,用于在监听到有对应套接字的数据包的情况下,启动回调函数,调用事件处理线程池中的线程对所述数据包进行处理;
其中,通过一个线程记录和跟踪多个套接字的状态;
所述调用模块包括:
第一存放单元,用于在对所述数据包的处理为查询事件且查询事件超出预设时长的情况下,通过缓存表存放热数据;
第二存放单元,用于通过热数据加热和热数据放凉的方式,对所述缓存表中的数据进行存放管理;
热数据加热为当所述缓存表中的数据有访问时,延长数据存储的时间;
热数据放凉为当所述缓存表中的数据长时间没有被访问时,缩短数据存储的时间;
所述调用模块还包括:
复制单元,用于通过内存复制的方式将所述数据包复制到缓冲区中;
调用单元,用于调用事件处理线程池中的空闲线程对所述数据包进行处理,其中,所述事件处理线程池中的线程数量小于等于预设的线程数阈值。
5.根据权利要求4的装置,其特征在于,还包括:
存入单元,用于在调用事件处理线程池中的空闲线程对所述数据包进行处理的过程中,将所述数据包存入预设的双链表中;
清除单元,用于清除所述缓冲区中的所述数据包。
6.根据权利要求4-5之一所述的装置,其特征在于,还包括:
申请模块,用于在操作系统内核的中断程序中建立回调函数之前,在操作系统内核中申请一个文件系统;
添加模块,用于将所述每个套接字添加至所述文件系统中;
绑定模块,用于为每个事件绑定一个网卡驱动程序,其中,该网卡驱动程序用于监听该事件对应的套接字的数据包。
7.一种计算机终端,其特征在于,包括:如权利要求4至6中任一所述的数据处理装置。
8.一种存储介质,其特征在于,所述存储介质中存储有多条指令;所述多条指令,用于由处理器加载并执行如权利要求1至3中任一项所述的数据处理方法。
9.一种终端,其特征在于,包括:
处理器,用于执行多条指令;
存储器,用于存储多条指令;
其中,所述多条指令,用于由所述存储器存储,并由所述处理器加载并执行如权利要求1至3中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811407932.2A CN111221642B (zh) | 2018-11-23 | 2018-11-23 | 一种数据处理方法、装置、存储介质及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811407932.2A CN111221642B (zh) | 2018-11-23 | 2018-11-23 | 一种数据处理方法、装置、存储介质及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111221642A CN111221642A (zh) | 2020-06-02 |
CN111221642B true CN111221642B (zh) | 2023-08-15 |
Family
ID=70830344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811407932.2A Active CN111221642B (zh) | 2018-11-23 | 2018-11-23 | 一种数据处理方法、装置、存储介质及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111221642B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112817986B (zh) * | 2021-02-26 | 2022-03-22 | 北京易捷思达科技发展有限公司 | 适用于Linux生产环境的数据结构修复方法及装置 |
CN116302849B (zh) * | 2023-05-20 | 2023-08-11 | 北京长亭科技有限公司 | 一种Linux套接字关闭事件监控方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103312625A (zh) * | 2012-03-09 | 2013-09-18 | 深圳市腾讯计算机系统有限公司 | 一种网络通信的方法和系统 |
CN106302554A (zh) * | 2016-11-08 | 2017-01-04 | 郑州云海信息技术有限公司 | 一种socket通信方法、装置和存储设备 |
CN108270732A (zh) * | 2016-12-30 | 2018-07-10 | 北京视联动力国际信息技术有限公司 | 一种流媒体处理方法及系统 |
CN108563493A (zh) * | 2018-04-12 | 2018-09-21 | 郑州云海信息技术有限公司 | 一种事件驱动方法、装置、设备及可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ITMI20022347A1 (it) * | 2002-11-06 | 2004-05-07 | Pasqua Roberto Della | Metodo di comunicazione con tempo di risposta ridotto in |
US8903776B2 (en) * | 2011-09-08 | 2014-12-02 | International Business Machines Corporation | Caching socket connections while ensuring that there are file descriptors available for the applications |
US10354070B2 (en) * | 2015-08-22 | 2019-07-16 | Avocado Systems Inc. | Thread level access control to socket descriptors and end-to-end thread level policies for thread protection |
-
2018
- 2018-11-23 CN CN201811407932.2A patent/CN111221642B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103312625A (zh) * | 2012-03-09 | 2013-09-18 | 深圳市腾讯计算机系统有限公司 | 一种网络通信的方法和系统 |
CN106302554A (zh) * | 2016-11-08 | 2017-01-04 | 郑州云海信息技术有限公司 | 一种socket通信方法、装置和存储设备 |
CN108270732A (zh) * | 2016-12-30 | 2018-07-10 | 北京视联动力国际信息技术有限公司 | 一种流媒体处理方法及系统 |
CN108563493A (zh) * | 2018-04-12 | 2018-09-21 | 郑州云海信息技术有限公司 | 一种事件驱动方法、装置、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111221642A (zh) | 2020-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11243922B2 (en) | Method, apparatus, and storage medium for migrating data node in database cluster | |
JP5159884B2 (ja) | 論理区分の間におけるネットワーク・アダプタ・リソース割振り | |
US11392497B1 (en) | Low latency access to data sets using shared data set portions | |
US5530905A (en) | Temporary state preservation for a distributed file service which purges virtual circuit control information after expiration of time limit of inactivity | |
US8516509B2 (en) | Methods and computer program products for monitoring system calls using safely removable system function table chaining | |
US5491808A (en) | Method for tracking memory allocation in network file server | |
US5687372A (en) | Customer information control system and method in a loosely coupled parallel processing environment | |
US9983642B2 (en) | Affinity-aware parallel zeroing of memory in non-uniform memory access (NUMA) servers | |
CN113918101B (zh) | 一种写数据高速缓存的方法、系统、设备和存储介质 | |
US11550713B1 (en) | Garbage collection in distributed systems using life cycled storage roots | |
CN108139966B (zh) | 管理转址旁路缓存的方法和多核处理器 | |
US11593270B1 (en) | Fast distributed caching using erasure coded object parts | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
CN111221642B (zh) | 一种数据处理方法、装置、存储介质及终端 | |
CN114371811A (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
EP0747813A2 (en) | Customer information control system and method with temporary storage queuing functions in a loosely coupled parallel processing environment | |
EP2504759A1 (en) | Method and system for enabling access to functionality provided by resources outside of an operating system environment | |
EP0747814A1 (en) | Customer information control system and method with transaction serialization control functions in a loosely coupled parallel processing environment | |
CN110162395B (zh) | 一种内存分配的方法及装置 | |
EP0747812A2 (en) | Customer information control system and method with API start and cancel transaction functions in a loosely coupled parallel processing environment | |
CN110413689B (zh) | 一种内存数据库的多节点数据同步方法与装置 | |
WO2023165484A1 (zh) | 一种分布式任务的处理方法、分布式系统及第一设备 | |
JPH11143779A (ja) | 仮想記憶装置におけるページング処理システム | |
CN107615259B (zh) | 一种数据处理方法及系统 | |
CN115543222B (zh) | 一种存储优化方法、系统、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |