CN111831446A - 一种基于Disruptor的数据读写方法、装置及介质 - Google Patents
一种基于Disruptor的数据读写方法、装置及介质 Download PDFInfo
- Publication number
- CN111831446A CN111831446A CN202010680093.2A CN202010680093A CN111831446A CN 111831446 A CN111831446 A CN 111831446A CN 202010680093 A CN202010680093 A CN 202010680093A CN 111831446 A CN111831446 A CN 111831446A
- Authority
- CN
- China
- Prior art keywords
- ringbuffer
- data
- writing
- reading
- service
- 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
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000010223 real-time analysis Methods 0.000 claims abstract description 4
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/522—Barrier synchronisation
-
- 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)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种基于Disruptor的数据读写方法、装置及介质,所述方法包括:实时解析服务任务中的数据信息通过多线程写入所述数据信息对应的第一RingBuffer中;多线程异步读取对应的第一RingBuffer进行对应的业务处理和业务合并,处理完成后写入第二RingBuffer中;多线程异步读取对应的第二RingBuffer,批量写入到底层存储单元中。本发明降低了主机CPU、内存的开销,提升了实时营销服务性能,本发明还解决了大部分由于锁等待引起线程池过载,导致应用挂起无法提供能力。
Description
技术领域
本发明涉及Disruptor和内存数据读写技术领域,尤其是涉及一种基于Disruptor的数据读写方法、装置及介质。
背景技术
智能营销产品中为了保证实时性和准确性,数据都是实时入库和校验,由于服务的并发量大(20~50笔/s)保证数据库入库的稳定性采用批量入库;
系统中使用有界的数组和MAP作为底层的队列数据存储,多线程进行写入队列和多线程读队列;
为了保证数据的有序性和完整性,队列的操作中增加了锁机制。
以上的技术运用带来了如下的问题:
增加了主机CPU、内存的开销,影响了服务性能;以及由于网络、数据库等资源不稳定,导致线程挂死,从而导致应用无法提供服务。
发明内容
现有技术存在的问题:现有技术为了保证数据的有序性和完整性,队列的操作中增加了锁机制,导致增加了主机CPU、内存的开销,影响了服务性能的技术问题。
针对现有技术存在的缺陷,第一方面,本发明提供了一种基于Disruptor的数据读写方法,包括:
实时解析服务任务中的数据信息通过多线程写入所述数据信息对应的第一RingBuffer中;
多线程异步读取对应的第一RingBuffer进行对应的业务处理和业务合并,处理完成后写入第二RingBuffer中;
多线程异步读取对应的第二RingBuffer,批量写入到底层存储单元中。
进一步,所述的第一RingBuffer和所述的第二RingBuffer中的槽的数量为2n,n为正整数。
进一步,所述数据信息的类型包括以下数据信息类型之一:日志信息、业务工单信息或批次记录信息。
进一步,所述批量写入到底层存储单元中之前,还包括:
判断缓存中处理数据的条数是否大于10000或者存储缓存数据的时间是否大于1min,若是则执行后续步骤,若不是则继续执行所述多线程异步读取对应的第一RingBuffer进行对应的业务处理和业务合并,处理完成后写入第二RingBuffer中的步骤。
第二方面,本发明提供了一种基于Disruptor的数据读写装置,包括:
解析模块,用于实时解析服务任务中的数据信息通过多线程写入所述数据信息对应的第一RingBuffer中;
处理模块,用于多线程异步读取对应的第一RingBuffer进行对应的业务处理和业务合并,处理完成后写入第二RingBuffer中;
写入模块,用于多线程异步读取对应的第二RingBuffer,批量写入到底层存储单元中。
进一步,所述的第一RingBuffer和所述的第二RingBuffer中的槽的数量为2n,n为正整数。
进一步,所述数据信息的类型包括以下数据信息类型之一:日志信息、业务工单信息或批次记录信息。
进一步,还包括:
判断模块,用于判断缓存中处理数据的条数是否大于10000或者存储缓存数据的时间是否大于1min,若是则执行后续步骤,若不是则继续执行所述处理模块的步骤流程。
第三方面,本发明提供了一种计算机存储介质,其上存储有计算机程序指令,所述程序指令被处理器执行时用于实现上述的基于Disruptor的数据读写方法对应的步骤。
本发明的有益效果是:
1、降低了主机CPU、内存的开销,提升了实时营销服务性能。
2、解决了大部分由于等待引起线程池过载,导致应用挂起无法提供能力。
附图说明
图1是本发明的一种基于Disruptor的数据读写方法的流程示意图;
图2是本发明的一种基于Disruptor的数据读写装置的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定装备结构、接口、技术之类的具体细节,以便透彻理解本发明。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
如图1所示,第一方面,本发明提供了一种基于Disruptor的数据读写方法,包括:
S1:实时解析服务任务中的数据信息通过多线程写入所述数据信息对应的第一RingBuffer中;例如,服务任务中可以是对营销产品的商业任务的处理,包括对产品数据的展示任务、调取任务、批次记录的处理任务等。
S2:多线程异步读取对应的第一RingBuffer进行对应的业务处理和业务合并,处理完成后写入第二RingBuffer中;
S3:多线程异步读取对应的第二RingBuffer,批量写入到底层存储单元中。
所述底层存储单元为内存或缓存。
在一些说明性实施例中,所述的第一RingBuffer和所述的第二RingBuffer中的槽的数量为2n,n为正整数。
在一些说明性实施例中,所述数据信息的类型包括以下数据信息类型之一:日志信息、业务工单信息或批次记录信息。
在一些说明性实施例中,所述批量写入到底层存储单元中之前,还包括:
判断缓存中处理数据的条数是否大于10000或者存储缓存数据的时间是否大于1min,若是则执行后续步骤,若不是则继续执行所述S2的步骤。
如图2所示,第二方面,本发明提供了一种基于Disruptor的数据读写装置,包括:
解析模块100,用于实时解析服务任务中的数据信息通过多线程写入所述数据信息对应的第一RingBuffer中;
处理模块200,用于多线程异步读取对应的第一RingBuffer进行对应的业务处理和业务合并,处理完成后写入第二RingBuffer中;
写入模块300,用于多线程异步读取对应的第二RingBuffer,批量写入到底层存储单元中。
在一些说明性实施例中,所述的第一RingBuffer和所述的第二RingBuffer中的槽的数量为2n,n为正整数。
在一些说明性实施例中,所述数据信息的类型包括以下数据信息类型之一:日志信息、业务工单信息或批次记录信息。
在一些说明性实施例中,还包括:
判断模块,用于判断缓存中处理数据的条数是否大于10000或者存储缓存数据的时间是否大于1min,若是则执行后续步骤,若不是则继续执行所述处理模块的步骤流程。
第三方面,本发明提供了一种计算机存储介质,其上存储有计算机程序指令,所述程序指令被处理器执行时用于实现上述的基于Disruptor的数据读写方法对应的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,物流管理服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (9)
1.一种基于Disruptor的数据读写方法,其特征在于,包括:
实时解析服务任务中的数据信息通过多线程写入所述数据信息对应的第一RingBuffer中;
多线程异步读取对应的第一RingBuffer进行对应的业务处理和业务合并,处理完成后写入第二RingBuffer中;
多线程异步读取对应的第二RingBuffer,批量写入到底层存储单元中。
2.根据权利要求1所述的基于Disruptor的数据读写方法,其特征在于,所述的第一RingBuffer和所述的第二RingBuffer中的槽的数量为2n,n为正整数。
3.根据权利要求1所述的基于Disruptor的数据读写方法,其特征在于,所述数据信息的类型包括以下数据信息类型之一:日志信息、业务工单信息或批次记录信息。
4.根据权利要求1所述的基于Disruptor的数据读写方法,其特征在于,所述批量写入到底层存储单元中之前,还包括:
判断缓存中处理数据的条数是否大于10000或者存储缓存数据的时间是否大于1min,若是则执行后续步骤,若不是则继续执行所述多线程异步读取对应的第一RingBuffer进行对应的业务处理和业务合并,处理完成后写入第二RingBuffer中的步骤。
5.一种基于Disruptor的数据读写装置,其特征在于,包括:
解析模块,用于实时解析服务任务中的数据信息通过多线程写入所述数据信息对应的第一RingBuffer中;
处理模块,用于多线程异步读取对应的第一RingBuffer进行对应的业务处理和业务合并,处理完成后写入第二RingBuffer中;
写入模块,用于多线程异步读取对应的第二RingBuffer,批量写入到底层存储单元中。
6.根据权利要求5所述的基于Disruptor的数据读写装置,其特征在于,所述的第一RingBuffer和所述的第二RingBuffer中的槽的数量为2n,n为正整数。
7.根据权利要求5所述的基于Disruptor的数据读写装置,其特征在于,所述数据信息的类型包括以下数据信息类型之一:日志信息、业务工单信息或批次记录信息。
8.根据权利要求5所述的基于Disruptor的数据读写装置,其特征在于,还包括:
判断模块,用于判断缓存中处理数据的条数是否大于10000或者存储缓存数据的时间是否大于1min,若是则执行后续步骤,若不是则继续执行所述处理模块的步骤流程。
9.一种计算机存储介质,其上存储有计算机程序指令,其特征在于,所述程序指令被处理器执行时用于实现权利要求1~4中任一项所述的基于Disruptor的数据读写方法对应的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010680093.2A CN111831446A (zh) | 2020-07-15 | 2020-07-15 | 一种基于Disruptor的数据读写方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010680093.2A CN111831446A (zh) | 2020-07-15 | 2020-07-15 | 一种基于Disruptor的数据读写方法、装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831446A true CN111831446A (zh) | 2020-10-27 |
Family
ID=72924227
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010680093.2A Pending CN111831446A (zh) | 2020-07-15 | 2020-07-15 | 一种基于Disruptor的数据读写方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831446A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103236938A (zh) * | 2013-03-27 | 2013-08-07 | 广东全通教育股份有限公司 | 一种基于缓存及异步处理技术的用户行为采集方法及系统 |
JP2013532853A (ja) * | 2010-10-26 | 2013-08-19 | 株式会社日立製作所 | ストレージ装置及びデータ制御方法 |
CN105224445A (zh) * | 2015-10-28 | 2016-01-06 | 北京汇商融通信息技术有限公司 | 分布式跟踪系统 |
CN105978968A (zh) * | 2016-05-11 | 2016-09-28 | 山东合天智汇信息技术有限公司 | 一种海量数据的实时传输处理方法、服务器及处理系统 |
CN106802824A (zh) * | 2016-12-22 | 2017-06-06 | 上海大汉三通数据通信有限公司 | 一种基于Disruptor的数据收发方法 |
CN108184162A (zh) * | 2017-12-07 | 2018-06-19 | 深圳微步信息股份有限公司 | 一种基于android系统的自动分段录像方法及系统 |
CN109151762A (zh) * | 2018-10-19 | 2019-01-04 | 海南易乐物联科技有限公司 | 一种高并发采集数据的异步处理系统及处理方法 |
CN110135917A (zh) * | 2019-05-28 | 2019-08-16 | 北京京东尚科信息技术有限公司 | 数据处理方法、数据处理装置和系统 |
CN110191168A (zh) * | 2019-05-23 | 2019-08-30 | 北京百度网讯科技有限公司 | 在线业务数据的处理方法、装置、计算机设备和存储介质 |
CN110473113A (zh) * | 2019-07-08 | 2019-11-19 | 中国平安人寿保险股份有限公司 | 基于disruptor提高业务系统吞吐量方法、装置及介质、服务器 |
-
2020
- 2020-07-15 CN CN202010680093.2A patent/CN111831446A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013532853A (ja) * | 2010-10-26 | 2013-08-19 | 株式会社日立製作所 | ストレージ装置及びデータ制御方法 |
CN103236938A (zh) * | 2013-03-27 | 2013-08-07 | 广东全通教育股份有限公司 | 一种基于缓存及异步处理技术的用户行为采集方法及系统 |
CN105224445A (zh) * | 2015-10-28 | 2016-01-06 | 北京汇商融通信息技术有限公司 | 分布式跟踪系统 |
CN105978968A (zh) * | 2016-05-11 | 2016-09-28 | 山东合天智汇信息技术有限公司 | 一种海量数据的实时传输处理方法、服务器及处理系统 |
CN106802824A (zh) * | 2016-12-22 | 2017-06-06 | 上海大汉三通数据通信有限公司 | 一种基于Disruptor的数据收发方法 |
CN108184162A (zh) * | 2017-12-07 | 2018-06-19 | 深圳微步信息股份有限公司 | 一种基于android系统的自动分段录像方法及系统 |
CN109151762A (zh) * | 2018-10-19 | 2019-01-04 | 海南易乐物联科技有限公司 | 一种高并发采集数据的异步处理系统及处理方法 |
CN110191168A (zh) * | 2019-05-23 | 2019-08-30 | 北京百度网讯科技有限公司 | 在线业务数据的处理方法、装置、计算机设备和存储介质 |
CN110135917A (zh) * | 2019-05-28 | 2019-08-16 | 北京京东尚科信息技术有限公司 | 数据处理方法、数据处理装置和系统 |
CN110473113A (zh) * | 2019-07-08 | 2019-11-19 | 中国平安人寿保险股份有限公司 | 基于disruptor提高业务系统吞吐量方法、装置及介质、服务器 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101702321B1 (ko) | 칼럼형 데이터베이스의 히스토그램을 이용한 효율적인 질의 처리 | |
US7457933B2 (en) | Methods and systems for archiving data | |
US7693890B2 (en) | Methods and systems for moving data objects | |
US20100037226A1 (en) | Grouping and dispatching scans in cache | |
CN103019890A (zh) | 一种块级别的磁盘数据保护系统及其方法 | |
CN112181902B (zh) | 数据库的存储方法、装置及电子设备 | |
CN107688626B (zh) | 慢查询日志处理方法、装置及电子设备 | |
CN103136215A (zh) | 存储系统的数据读写方法和装置 | |
US7693881B2 (en) | Methods and systems for moving data using locks | |
US20060149736A1 (en) | Electronic data structure for controlling access to data objects using locks | |
CN105808451B (zh) | 一种数据缓存方法以及相关装置 | |
CN111857600B (zh) | 一种数据读写方法及装置 | |
US7653667B2 (en) | Methods and systems for data moving using locks | |
CN115840654B (zh) | 消息的处理方法、系统、计算设备及可读存储介质 | |
CN117349326A (zh) | 一种静态数据查询方法和系统 | |
CN111831446A (zh) | 一种基于Disruptor的数据读写方法、装置及介质 | |
US20060149696A1 (en) | Method and systems for controlling access to a data object by means of locks | |
CN110647527B (zh) | 基于大数据的无效标签清除方法及装置、设备与可读介质 | |
CN113468105A (zh) | 数据快照的数据结构、相关数据处理方法及装置和系统 | |
CN111611104A (zh) | 一种InfluxDB数据备份方法、系统及终端设备 | |
CN114238419B (zh) | 基于多租户SaaS应用系统的数据缓存方法及装置 | |
CN109271277A (zh) | 数据库宕机后的访问方法、装置和系统 | |
US20080294842A1 (en) | Implementing feedback directed deferral of nonessential dasd operations | |
CN115115433B (zh) | 订单数据处理方法、装置、计算机设备和存储介质 | |
CN116662328A (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 |