CN113934531A - 一种高吞吐量流处理方法及装置 - Google Patents
一种高吞吐量流处理方法及装置 Download PDFInfo
- Publication number
- CN113934531A CN113934531A CN202010610083.1A CN202010610083A CN113934531A CN 113934531 A CN113934531 A CN 113934531A CN 202010610083 A CN202010610083 A CN 202010610083A CN 113934531 A CN113934531 A CN 113934531A
- Authority
- CN
- China
- Prior art keywords
- data
- thread
- processing
- memory cache
- receiving
- 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.)
- Pending
Links
Images
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
- 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]
-
- 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/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/54—Interprogram communication
-
- 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/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例提供一种高吞吐量流处理方法及装置,本发明中流处理的方法为:数据接收线程判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据缓存到所述内存缓存中,否则,将接收到的数据保存到本地硬盘;数据处理线程从所述内存缓存中获取数据,对获取到的数据进行计算处理。本发明方案中,数据接收Bolt采用内存缓存和硬盘缓存两级缓存,而数据处理Bolt没有独立的内存缓存,而是直接从数据接收Bolt中的内存缓存中获取数据进行计算处理,数据接收线程和数据处理线程相互独立,提升了吞吐量,计算资源和存储资源利用率,提高了系统稳定性。
Description
技术领域
本发明实施例涉及但不限于大数据流技术领域,具体而言,涉及但不限于一种高吞吐量流处理方法及装置。
背景技术
实时流计算作为一个能快速处理,快速反馈结果的技术,目前已被各个领域广泛使用,有大量优秀的流计算引擎,比如Apache storm(分布式实时计算系统),Apache Filnk(通用数据处理平台),Spark Streaming等。在这些系统中,数据的产生完全由数据源确定,数据源动态变化及状态不统一导致数据流的速率呈现突发性特征,而数据流的突发性特征常常导致过载的发生,发生过载还有如下几个原因:网络拥塞,用户请求突发峰值等。在实时流计算中,过载是常见且难以避免的。
基于Apache storm的流计算引擎,其自身是带有反压机制的,但是其效率低下,硬件资源浪费严重。因此,提高吞吐量,提升计算资源利用率,降低运维成本是很有必要的。
发明内容
本发明实施例提供的一种高吞吐量流处理方法和装置,主要解决的技术问题是数据效率低,硬件资源浪费严重的问题。
为解决上述技术问题,本发明实施例提供一种一种高吞吐量流处理方法,包括:
数据接收线程判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据缓存到所述内存缓存中,否则,将接收到的数据保存到本地硬盘;
数据处理线程从所述内存缓存中获取数据,对获取到的数据进行计算处理。
所述高吞吐量流处理方法还包括:
构建bolt模型,所述bolt模型包括:数据接收bolt模型,数据处理bolt模型,数据发送bolt模型;所述数据接收bolt模型用于接收数据发送bolt模型发送的数据消息,所述数据处理bolt模型用于从数据接收bolt模型中获取数据,并进行计算处理;
根据构建的bolt模型建立线程池,所述线程池包括:数据接收线程、数据处理线程、数据发送线程;所述数据接收线程用于接收数据发送线程发送数据消息,所述数据处理线程用于从所述数据接收线程中获取数据进行计算处理;
按照预设比例配置所述数据接收线程和所述数据处理线程的比例。
本发明实施例还提供一种高吞吐量流处理装置,包括数据接收模块,数据处理模块;
所述数据接收模块,用于接收数据并判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据缓存到所述内存缓存中,否则,将接收到的数据保存到本地硬盘中;
所述数据处理模块,用于从所述内存缓存中获取数据,并对获取到的数据进行计算处理。
所述高吞吐量流处理装置还包括:
创建模块,所述创建模块用于构建bolt模型;所述bolt模型包括:数据接收bolt模型,数据处理bolt模型,数据发送bolt模型;所述数据接收bolt模型用于接收数据发送bolt模型发送的数据消息,所述数据处理bolt模型用于从数据接收bolt模型中获取数据,并进行计算处理;
所述创建模块还用于根据构建的bolt模型建立线程池,所述线程池包括:数据接收线程、数据处理线程、数据发送线程;所述数据接收线程用于接收数据发送线程发送数据消息,所述数据处理线程用于从所述数据接收线程中获取数据进行计算处理;
配置模块,所述配置模块用于根据预设比例配置所述数据接收线程和所述数据处理线程的比例。
本发明实施例还提供一种计算机存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如上所述的高吞吐量流处理方法的步骤。
根据本发明实施例提供的高吞吐量流处理方法、装置以及计算机存储介质,通过数据接收线程判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据缓存到所述内存缓存中,否则,将接收到的数据保存到本地硬盘;数据处理线程从所述内存缓存中获取数据,对获取到的数据进行计算处理。数据接收Bolt采用内存缓存和硬盘缓存两级缓存,而数据处理Bolt没有独立的内存缓存,而是直接从数据接收Bolt中的内存缓存中获取数据进行计算处理,数据接收线程和数据处理线程相互独立。在一些实施方式中,提升了吞吐量,计算资源和存储资源利用率,提高了系统稳定性。
本发明其他特征和相应的有益效果在说明书的后面部分进行阐述说明,且应当理解,至少部分有益效果从本发明说明书中的记载变的显而易见。
附图说明
图1为本发明实施例一提供的高吞吐量流处理方法流程图;
图2为本发明实施例一提供的数据统一缓存状态图;
图3为本发明实施例一提供的统一任务调度状态图;
图4为本发明实施例二提供的一种高吞吐量流处理方法流程图;
图5为本发明实施例三提供的一种高吞吐量流处理装置图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
为了提高吞吐量,提升计算资源利用率,降低运维成本,本实施例提供一种高吞吐量流处理方法,请参见图1,该方法包括如下步骤:
S101、数据接收线程判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据缓存到所述内存缓存中,否则,将接收到的数据保存到本地硬盘;
S102、数据处理线程从所述内存缓存中获取数据,对获取到的数据进行计算处理。
本实施例中,所述高吞吐量流处理方法还包括:构建bolt模型,所述bolt模型包括:数据接收bolt模型,数据处理bolt模型,数据发送bolt模型;所述数据接收bolt模型用于接收数据发送bolt模型发送的数据消息,所述数据处理bolt模型用于从数据接收bolt模型中获取数据,并进行计算处理;
根据构建的bolt模型建立线程池,所述线程池包括:数据接收线程、数据处理线程、数据发送线程;所述数据接收线程用于接收数据发送线程发送数据消息,所述数据处理线程用于从所述数据接收线程中获取数据进行计算处理;
按照预设比例配置所述数据接收线程和所述数据处理线程的比例。
在Apache storm分布式实时计算系统中,常规的bolt模型为一级bolt接着一级bolt而形成一条完整的数据接收和处理链路,本发明实施例中,构建了多个维度的bolt模型,其中,包括数据接收bolt模型、数据处理bolt模型、数据发送bolt模型,三组相互地独立维度的bolt模型,即三条独立的数据链路,每条链路仅仅承担单一的职责,数据处理bolt模型用于处理数据,数据接收bolt模型用于接收数据,数据发送bolt模型用于发送数据。
本实施例中的数据接收bolt拥有两级存储空间,即数据内存缓存空间和本地硬盘存储空间,用于存储接收到的数据,数据接收线程接收到数据时会判断当前数据内存缓存的剩余缓存空间大小,若当前内存缓存的剩余空间大于预设阈值,则将接收到数据缓存到所述内存缓存中进行缓存,否则,将接收到到的数据保存本地硬盘中。而数据处理线程直接从所述内存缓存中获取需要处理的数据进行计算处理。本实施例中,可以在内存缓存空间剩余不足5%时,将接收到数据保存到本地硬盘中,或者在内存缓存空间存储满了的情况下即剩余缓存空间为0,再将接收到的数据保存到本地硬盘中,具体的阈值可灵活地进行设置,本实施例不做限定。所述处理线程直接从所述内存缓存中获取数据,数据处理线程采用进程级公共列队从所述内存缓存中主动去获取需要处理的数据,对内存缓存中缓存的数据源源不断的进行计算和处理。
本实施例的一种示例中,按照预设的比例配置数据接收线程和数据处理线程的比例,具体的,可配置10%的处理线程用于处理数据即可,其他的作为数据接收线程和数据发送线程。具体的比例可根据系统的数据处理需求灵活的进行配置,本实施例不做限定。
本实施例中,对接收到数据进行统一缓存,如图2所示,为本实施例提供的数据统一缓存状态图。所述数据接收线程利用spout从实时队列获取由数据发送线程下发的数据消息,spout将数据根据规则发送给数据接收线程。所述数据接收线程接收到数据后,会根据预设的规则对所获取到的数据进行分组,并判断当前内存缓存的剩余空间是否大于预设的阈值,若判断出当前的内存缓存剩余空间大于预设阈值,则将接收的数据插入到所述内存缓存的数据列表中,否则,将接收到的数据保存到本地硬盘中进行缓存。本实施例所述内存缓存的空间大小在系统启动的时候根据本机的内存按照一定比例自动完成初始化,为内存缓存分配缓存空间。
数据接收bolt的数据接收线程会动态计算接收到的数据需要被处理的时间,根据计算计算出的数据处理的时间动态调整数据缓存的粒度,从而保证数据的实时性不会受到任何的影响。
所述数据接收线程将实时的对所述内存缓存和所述本地硬盘中数据缓存情况进行扫描,所所述本地硬盘中存在缓存的数据,而所述内存缓存当前的剩余空间大于预设阈值,数据接收线程则将本地硬盘中缓存的数据缓存到内存缓存空间中,以供数据处理线程能及时的处理这些数据,因为,数据处理线程只会从所述内存缓存中去获取需要进行处理数据。
数据处理线程根据预设的时间间隔从所述内存缓存中获取数据进行计算处理,具体地,数据处理线程每隔预设的时间间隔主动地从所述内存缓存中获取一组元组tuple数据进行计算处理。数据处理线程从所述内存缓存中获取到数据就会及时地处理,处理完当前获取的数据后,立即主动获取下一组数据继续进行处理,从而源源不断地从所述内存缓存中获取数据、并处理该数据,保证所述内存缓存中的数据能够及时的被处理。若所述数据处理线程从所述内存缓存中未获取到数据,则处理线程会进入睡眠状态,睡眠预设的时间后重新从所述内存缓存中去获取数据进行处理。数据处理线程未获取到需要进行处理的数据时,进入睡眠状态能够节省CPU,避免闲时,若数据处理bolt频繁不断地访问获取所述内存缓存会导致导致CPU暴涨,严重浪费资源,因此,本实施例中,若数据处理线程未获取数据时,则进入预设时间的睡眠状态,等待重新处理数据。本实施例中,数据处理bolt源源不断地从所述内存缓存中获取数据进行处理,并在未获取到待处理数据时进入预设的睡眠状态,不会因为数据存在一定不均衡而导致服务器资源空闲,但是数据又不能得到及时处理的情况。
参考图3,图3所示为本实施例提供的统一任务调度的状态图,在worker节点中对内存缓存中缓存的待处理的任务数据进行统一的任务调度,通过任务分配器从所述内存缓存中获取待处理的任务分配给数据处理线程进行计算处理。数据处理线程通过该任务分配为其主动从所述内存缓存中获取待处理的数据任务进行处理。处理完一批数据后,重新请求新的待处理的数据继续进行处理,从而源源不断地从所述内存缓存中获取数据进行处理,保证所述内存缓存中的数据能够被及时地处理。
通过实际的测试结果显示,本发明提供的高吞吐量流处理方法,其吞吐量相比于原生系统提高了10倍,通过单台服务器整体的策略,将bolt模型分为三个维度的数据接收bolt,数据处理bolt,数据发送bolt,提升了系统整体的实时性,节省内存资源,应对突发性强,内存资源配置充足,数据接收bolt采用内存缓存和本地硬盘两级缓存,极大提升了系统的稳定性,接收线程和处理线程简单的比例化配置,不需要人工干预,不需要增加额外的硬件,降低了运维成本。
本发明实施例提供的高吞吐量流处理方法为:数据接收线程判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据缓存到所述内存缓存中,否则,将接收到的数据保存到本地硬盘;数据处理线程从所述内存缓存中获取数据,对获取到的数据进行计算处理。数据接收Bolt采用内存缓存和硬盘缓存两级缓存,而数据处理Bolt没有独立的内存缓存,而是直接从数据接收Bolt中的内存缓存中获取数据进行计算处理,数据接收线程和数据处理线程相互独立,数据的接收采用统一缓存,数据处理采用统一任务分配,提高了流处理系统的吞吐量,计算资源和存储资源利用率,提高了系统稳定性,降低了运维成本。
实施例二:
为了提高吞吐量,提升计算资源利用率,降低运维成本,本实施例提供一种高吞吐量流处理方法。
本实施例结合具体示例对所述高吞吐量流处理方法进行说明,现有某电信运营商A市当前的mr测量报告,要求把数据能实时进行处理。
如图4所示,为本实施例提供一种高吞吐量流处理方法流程图,包括如下步骤:
S401、在Worker内部开辟内存空间,作为统一内存缓存空间;
在Worker内部开辟内存空间,作为统一内存缓存空间,用于缓存接收bolt接收到的数据。
S402、初始化统一内存缓存空间大小;
统一内存缓存空间的大小在系统启动时,根据本机的内存大小按照一定的比例自动完成初始化。
S403、采用spout从实时队列获取数据;
采用spout从实时队列获取数据,并根据规则发送给数据接收bolt。
S404、数据接收bolt将接收到的数据,按照预设规则分组;
所述数据接收线程利用spout从实时队列获取由数据发送线程下发的数据消息,spout将数据根据规则发送给数据接收线程。所述数据接收线程接收到数据后,会根据预设的规则对所获取到的数据进行分组。
S405、判断当前内存缓存空间使用情况,是否达到100%;
数据接收线程接收到数据后判断当前的内存缓存的使用情况是否达到100%,若使用未达到100%,则进入步骤S406,将接收到的数据缓存到统一内存缓存空间中进行统一缓存;否则,进入步骤407,将接收到到数据保存在本地高速硬盘中进行统一缓存。
S408、实时扫描当前本地高速硬盘缓存情况,和统一内存缓存使用情况,若本地高速硬盘中存在数据,统一内存缓存空间使用未达到100%,则将本地高速硬盘中的数据缓存到统一内存中。
所述数据接收线程将实时的对所述内存缓存和所述本地硬盘中数据缓存情况进行扫描,所所述本地硬盘中存在缓存的数据,而所述内存缓存当前的剩余空间大于预设阈值,数据接收线程则将本地硬盘中缓存的数据缓存到内存缓存空间中,以供数据处理线程能及时的处理这些数据,因为,数据处理线程只会从所述内存缓存中去获取需要进行处理数据。
S409、数据处理bolt每隔100ms,主动获取统一内存缓存中一组数据进行处理;
S410、数据处理bolt未获取到数据,睡眠100ms;
数据处理线程根据预设的时间间隔从所述内存缓存中获取数据进行计算处理,具体地,数据处理线程每隔100ms的时间间隔主动地从所述内存缓存中获取一组元组tuple数据进行计算处理。数据处理线程从所述内存缓存中获取到数据就会及时地处理,处理完当前获取的数据后,立即主动获取下一组数据继续进行处理,从而源源不断地从所述内存缓存中获取数据、并处理该数据,保证所述内存缓存中的数据能够及时的被处理。若所述数据处理线程从所述内存缓存中未获取到数据,则处理线程会进入睡眠状态,睡眠100ms的时间后重新从所述内存缓存中去获取数据进行处理。
本发明实施例提供的高吞吐量流处理方法,数据接收Bolt采用内存缓存和硬盘缓存两级缓存,而数据处理Bolt没有独立的内存缓存,而是直接从数据接收Bolt中的内存缓存中获取数据进行计算处理,数据接收线程和数据处理线程相互独立,数据的接收采用统一缓存,数据处理采用统一任务分配,提高了流处理系统的吞吐量,计算资源和存储资源利用率,提高了系统稳定性,降低了运维成本。
实施例三:
为了提高吞吐量,提升计算资源利用率,降低运维成本,本实施例提供一种高吞吐量流处理方法。
本实施例提供一种高吞吐量流处理装置,如图5所述,为本实施例提供的一种高吞吐量流处理装置框图,包括数据接收模块,数据处理模块;
所述数据接收模块,用于接收数据并判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据缓存到所述内存缓存中,否则,将接收到的数据保存到本地硬盘中;
所述数据处理模块,用于从所述内存缓存中获取数据,并对获取到的数据进行计算处理。
本实施例提供的高吞吐量流处理装置,还包括:创建模块,所述创建模块用于构建bolt模型;所述bolt模型包括:数据接收bolt模型,数据处理bolt模型,数据发送bolt模型;所述数据接收bolt模型用于接收数据发送bolt模型发送的数据消息,所述数据处理bolt模型用于从数据接收bolt模型中获取数据,并进行计算处理;
所述创建模块还用于根据构建的bolt模型建立线程池,所述线程池包括:数据接收线程、数据处理线程、数据发送线程;所述数据接收线程用于接收数据发送线程发送数据消息,所述数据处理线程用于从所述数据接收线程中获取数据进行计算处理;
配置模块,所述配置模块用于根据预设比例配置所述数据接收线程和所述数据处理线程的比例。
在Apache storm分布式实时计算系统中,常规的bolt模型为一级bolt接着一级bolt而形成一条完整的数据接收和处理链路,本发明实施例中,构建了多个维度的bolt模型,其中,包括数据接收bolt模型、数据处理bolt模型、数据发送bolt模型,三组相互地独立维度的bolt模型,即三条独立的数据链路,每条链路仅仅承担单一的职责,数据处理bolt模型用于处理数据,数据接收bolt模型用于接收数据,数据发送bolt模型用于发送数据。
本实施例中的数据接收bolt拥有两级存储空间,即数据内存缓存空间和本地硬盘存储空间,用于存储接收到的数据,数据接收线程接收到数据时会判断当前数据内存缓存的剩余缓存空间大小,若当前内存缓存的剩余空间大于预设阈值,则将接收到数据缓存到所述内存缓存中进行缓存,否则,将接收到到的数据保存本地硬盘中。而数据处理线程直接从所述内存缓存中获取需要处理的数据进行计算处理。本实施例中,可以在内存缓存空间剩余不足5%时,将接收到数据保存到本地硬盘中,或者在内存缓存空间存储满了的情况下即剩余缓存空间为0,再将接收到的数据保存到本地硬盘中,具体的阈值可灵活地进行设置,本实施例不做限定。所述处理线程直接从所述内存缓存中获取数据,数据处理线程采用进程级公共列队从所述内存缓存中主动去获取需要处理的数据,对内存缓存中缓存的数据源源不断的进行计算和处理。
本实施例的一种示例中,按照预设的比例配置数据接收线程和数据处理线程的比例,具体的,可配置10%的处理线程用于处理数据即可,其他的作为数据接收线程和数据发送线程。具体的比例可根据系统的数据处理需求灵活的进行配置,本实施例不做限定。
所述数据接收模块将接收到的数据按照预设的规则进行分组后,判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据插入到所述内存缓存的数据列表中,否则,将接收到的数据保存到本地硬盘中。数据接收模块动态计算接收到的数据需要处理的时间,根据计算出的数据处理时间动态调整数据缓存的粒度。数据接收模块实时扫描所述本地硬盘和所述内存缓存中的数据缓存情况,若所述本地硬盘中存在数据,所述内存缓存的剩余缓存空间大于预设阈值,则将所述本地硬盘中的数据缓存到内存缓存中。
本实施例中,所述数据处理模块从所述内存缓存中获取数据,对获取到的数据进行计算处理包括:所述数据处理模块根据预设时间间隔从所述内存缓存中获取一组tuple数据进行计算处理;
若所述数据处理模块未从所述内存缓存中获取到数据,则进入预设时间的睡眠状态。
本实施例提供的一种高吞吐量流处理装置,包括:数据接收模块,数据处理模块;
所述数据接收模块,用于接收数据并判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据缓存到所述内存缓存中,否则,将接收到的数据保存到本地硬盘中;所述数据处理模块,用于从所述内存缓存中获取数据,并对获取到的数据进行计算处理;数据接收Bolt采用内存缓存和硬盘缓存两级缓存,而数据处理Bolt没有独立的内存缓存,而是直接从数据接收Bolt中的内存缓存中获取数据进行计算处理,数据接收线程和数据处理线程相互独立,数据的接收采用统一缓存,数据处理采用统一任务分配,提高了流处理系统的吞吐量,计算资源和存储资源利用率,提高了系统稳定性,降低了运维成本。
可见,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件(可以用计算装置可执行的计算机程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。
此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、计算机程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (16)
1.一种高吞吐量流处理方法,包括:数据接收线程判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据缓存到所述内存缓存中,否则,将接收到的数据保存到本地硬盘;
数据处理线程从所述内存缓存中获取数据,对获取到的数据进行计算处理。
2.如权利要求1所述的高吞吐量流处理方法,其特征在于,还包括:构建bolt模型,所述bolt模型包括:数据接收bolt模型,数据处理bolt模型,数据发送bolt模型;所述数据接收bolt模型用于接收数据发送bolt模型发送的数据消息,所述数据处理bolt模型用于从数据接收bolt模型中获取数据,并进行计算处理;
根据构建的bolt模型建立线程池,所述线程池包括:数据接收线程、数据处理线程、数据发送线程;所述数据接收线程用于接收数据发送线程发送数据消息,所述数据处理线程用于从所述数据接收线程中获取数据进行计算处理;
按照预设比例配置所述数据接收线程和所述数据处理线程的比例。
3.如权利要求2所述的高吞吐量流处理方法,其特征在于,所述数据发送线程利用spout从实时队列获取数据,并根据规则将获取到的数据发送给数据接收线程。
4.如权利要求3所述的高吞吐量流处理方法,其特征在于,所述数据接收线程将接收到的数据按照预设的规则进行分组后,判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据插入到所述内存缓存的数据列表中,否则,将接收到的数据保存到本地硬盘中。
5.如权利要求4所述的高吞吐量流处理方法,其特征在于,所述数据接收线程动态计算接收到的数据需要处理的时间,根据计算出的数据处理时间动态调整数据缓存的粒度。
6.如权利要求5所述的高吞吐量流处理方法,其特征在于,所述数据接收线程实时扫描所述本地硬盘和所述内存缓存中的数据缓存情况,若所述本地硬盘中存在数据,所述内存缓存的剩余缓存空间大于预设阈值,则将所述本地硬盘中的数据缓存到内存缓存中。
7.如权利要求1-6任一项所述的高吞吐量流处理方法,其特征在于,所述数据处理线程从所述内存缓存中获取数据,对获取到的数据进行计算处理包括:
所述数据处理线程根据预设时间间隔从所述内存缓存中获取一组tuple数据进行计算处理。
8.如权利要求7所述的高吞吐量流处理方法,其特征在于,若所述数据处理线程未从所述内存缓存中获取到数据,则进入预设时间的睡眠状态。
9.一种高吞吐量流处理装置,包括:数据接收模块,数据处理模块;
所述数据接收模块,用于接收数据并判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据缓存到所述内存缓存中,否则,将接收到的数据保存到本地硬盘中。
所述数据处理模块,用于从所述内存缓存中获取数据,并对获取到的数据进行计算处理。
10.如权利要求9所述的高吞吐量流处理装置,其特征在于,还包括:创建模块,所述创建模块用于构建bolt模型;所述bolt模型包括:数据接收bolt模型,数据处理bolt模型,数据发送bolt模型;所述数据接收bolt模型用于接收数据发送bolt模型发送的数据消息,所述数据处理bolt模型用于从数据接收bolt模型中获取数据,并进行计算处理;
所述创建模块还用于根据构建的bolt模型建立线程池,所述线程池包括:数据接收线程、数据处理线程、数据发送线程;所述数据接收线程用于接收数据发送线程发送数据消息,所述数据处理线程用于从所述数据接收线程中获取数据进行计算处理;
配置模块,所述配置模块用于根据预设比例配置所述数据接收线程和所述数据处理线程的比例。
11.如权利要求10所述的高吞吐量流处理装置,其特征在于,所述数据发送线程利用spout从实时队列获取数据,并根据规则将获取到的数据发送给数据接收线程。
12.如权利要求11所述的高吞吐量流处理装置,其特征在于,所述数据接收模块将接收到的数据按照预设的规则进行分组后,判断当前数据内存缓存的剩余缓存空间是否大于预设阈值,若是,则将接收到的数据插入到所述内存缓存的数据列表中,否则,将接收到的数据保存到本地硬盘中。
13.如权利要求12所述的高吞吐量流处理装置,其特征在于,所述数据接收模块动态计算接收到的数据需要处理的时间,根据计算出的数据处理时间动态调整数据缓存的粒度。
14.如权利要求13所述的高吞吐量流处理装置,其特征在于,所述数据接收模块实时扫描所述本地硬盘和所述内存缓存中的数据缓存情况,若所述本地硬盘中存在数据,所述内存缓存的剩余缓存空间大于预设阈值,则将所述本地硬盘中的数据缓存到内存缓存中。
15.如权利要求9-14任一项所述的高吞吐量流处理装置,其特征在于,所述数据处理模块从所述内存缓存中获取数据,对获取到的数据进行计算处理包括:
所述数据处理模块根据预设时间间隔从所述内存缓存中获取一组tuple数据进行计算处理。
16.如权利要求15所述的高吞吐量流处理装置,其特征在于,若所述数据处理模块未从所述内存缓存中获取到数据,则进入预设时间的睡眠状态。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010610083.1A CN113934531A (zh) | 2020-06-29 | 2020-06-29 | 一种高吞吐量流处理方法及装置 |
PCT/CN2021/094210 WO2022001430A1 (zh) | 2020-06-29 | 2021-05-17 | 一种高吞吐量流处理方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010610083.1A CN113934531A (zh) | 2020-06-29 | 2020-06-29 | 一种高吞吐量流处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113934531A true CN113934531A (zh) | 2022-01-14 |
Family
ID=79273115
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010610083.1A Pending CN113934531A (zh) | 2020-06-29 | 2020-06-29 | 一种高吞吐量流处理方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113934531A (zh) |
WO (1) | WO2022001430A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461144A (zh) * | 2022-01-19 | 2022-05-10 | 清华大学 | 协同驾驶的数据存储装置、数据处理方法及路侧设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100359474C (zh) * | 2005-06-24 | 2008-01-02 | 中国人民解放军国防科学技术大学 | 构建基于软流水结构的Web服务器的方法 |
CN106095921B (zh) * | 2016-06-07 | 2019-04-09 | 四川大学 | 面向海量数据流的实时并行分类方法 |
CN106850740B (zh) * | 2016-12-19 | 2019-07-23 | 中国科学院信息工程研究所 | 一种高吞吐数据流处理方法 |
CN107807983B (zh) * | 2017-10-30 | 2021-08-24 | 辽宁大学 | 一种支持大规模动态图数据查询的并行处理框架的设计方法 |
CN107995061A (zh) * | 2017-11-30 | 2018-05-04 | 北京卓讯科信技术有限公司 | 多规格10Gbps网络信号长时采集与回放系统和方法 |
-
2020
- 2020-06-29 CN CN202010610083.1A patent/CN113934531A/zh active Pending
-
2021
- 2021-05-17 WO PCT/CN2021/094210 patent/WO2022001430A1/zh active Application Filing
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114461144A (zh) * | 2022-01-19 | 2022-05-10 | 清华大学 | 协同驾驶的数据存储装置、数据处理方法及路侧设备 |
CN114461144B (zh) * | 2022-01-19 | 2024-04-19 | 清华大学 | 协同驾驶的数据存储装置、数据处理方法及路侧设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2022001430A1 (zh) | 2022-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10558498B2 (en) | Method for scheduling data flow task and apparatus | |
CN110222091B (zh) | 一种海量数据实时统计分析方法 | |
US8892827B2 (en) | Cooperative memory management | |
CN110858843B (zh) | 业务请求处理方法、装置及计算机可读存储介质 | |
US9110745B2 (en) | System and method for flow control in a messaging subsystem based on message-in/out rates | |
CN108023759B (zh) | 自适应的资源调度方法和装置 | |
US20120297216A1 (en) | Dynamically selecting active polling or timed waits | |
CN110647392A (zh) | 一种基于容器集群的智能弹性伸缩方法 | |
CN112398945A (zh) | 一种基于背压的业务处理方法及装置 | |
CN112559154A (zh) | 消息发送量增长的优化方法、系统、设备及可读存储介质 | |
US9667569B1 (en) | System and method for adaptive server shielding | |
CN112817772B (zh) | 一种数据通信方法、装置、设备及存储介质 | |
CN113934531A (zh) | 一种高吞吐量流处理方法及装置 | |
WO2021098773A1 (zh) | 传感器运行控制方法、装置、计算机设备和存储介质 | |
CN111427674A (zh) | 一种微服务管理方法、装置及系统 | |
CN110336884B (zh) | 服务器集群更新方法和装置 | |
CN110659132B (zh) | 请求处理的优化方法及计算机可读存储介质 | |
CN113127179A (zh) | 资源调度方法、装置、电子设备及计算机可读介质 | |
CN111857992A (zh) | 一种Radosgw模块中线程资源分配方法和装置 | |
CN103179051B (zh) | 一种流媒体的转发方法和系统 | |
CN115617553A (zh) | 一种数据库的熔断降级保护方法、装置及电子设备 | |
WO2022021858A1 (zh) | 实现分布式系统中高负载场景下服务高可用的方法、系统 | |
CN110838989A (zh) | 一种用于基于令牌进行网络限流的方法和装置 | |
CN115469966A (zh) | 容器云服务的弹性伸缩方法及装置 | |
CN109062706B (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 |