CN107729559B - 数据库读写异步访问的方法、系统、设备及存储介质 - Google Patents

数据库读写异步访问的方法、系统、设备及存储介质 Download PDF

Info

Publication number
CN107729559B
CN107729559B CN201711092591.XA CN201711092591A CN107729559B CN 107729559 B CN107729559 B CN 107729559B CN 201711092591 A CN201711092591 A CN 201711092591A CN 107729559 B CN107729559 B CN 107729559B
Authority
CN
China
Prior art keywords
data
request
queue
read
module
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
Application number
CN201711092591.XA
Other languages
English (en)
Other versions
CN107729559A (zh
Inventor
周宜兵
郑佰云
邢钦华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ctrip Travel Network Technology Shanghai Co Ltd
Original Assignee
Ctrip Travel Network Technology Shanghai Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ctrip Travel Network Technology Shanghai Co Ltd filed Critical Ctrip Travel Network Technology Shanghai Co Ltd
Priority to CN201711092591.XA priority Critical patent/CN107729559B/zh
Publication of CN107729559A publication Critical patent/CN107729559A/zh
Application granted granted Critical
Publication of CN107729559B publication Critical patent/CN107729559B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/549Remote execution

Abstract

本发明提供了数据库读写异步访问的方法、系统、设备及存储介质,其中,方法包括以下步骤:将请求数据先缓存在请求队列中;主线程从请求队列里取出数据根据数据路由方法,分配给工作线程;工作线程从自身请求队列取请求数据;判断请求队列是否有数据,若是对请求数据进行分组处理;判断分组数据映射集合中是否有滞留数据,若是,则判断分组数据映射集合中是否有数据,若是,则依次处理分组映射集合里各分组数据,对数据库进行相应读写操作;判断读写操作是否正常,若是,则将请求产生的结果放入响应队列。本发明通过对数据库异步读写访问线程的不同状态控制及数据的聚合操作,以达到读写线程充分利用有限的系统资源完成尽可能多的读写请求。

Description

数据库读写异步访问的方法、系统、设备及存储介质
技术领域
本发明涉及数据处理领域,具体地说,涉及数据库读写异步访问的方法、系统、设备及存储介质。
背景技术
随着互联网应用越来越多,业务量成倍的增长。随之而来就会产生几何级的数据量的增长。应用的压力也会越来越大,对数据库频繁的读写访问严重影响了应用的服务性能和可用性。一些实时性响应要求很高的系统访问数据库来讲,由于需要支持大规模的并发访问且能高效响应,在数据库访问组件中,并不能让客户端对数据的请求阻塞掉服务。数据库的访问制约着系统实时处理性能。有必要对数据库的读写访问进行异步化,批量化处理。异步数据库的访问能够极大的提高应用程序的性能。
因此,本发明提供了一种数据库读写异步访问的方法、系统、设备及存储介质。
发明内容
针对现有技术中的问题,本发明的目的在于提供数据库读写异步访问的方法、系统、设备及存储介质,通过对数据库异步读写访问线程的不同状态控制及数据的聚合操作,以达到读写线程充分利用有限的系统资源完成尽可能多的读写请求。
本发明的实施例提供一种数据库读写异步访问的方法,包括以下步骤:
S101、将请求数据先缓存在请求队列中;
S102、主线程从所述请求队列里取出数据根据数据路由方法,分配给工作线程;
S103、所述工作线程从自身请求队列取请求数据;
S104、判断请求队列是否有数据,若是,则执行步骤S105,若否,则执行步骤S107;
S105、对请求数据进行分组处理;
S106、判断分组数据映射集合中是否有滞留数据,若是,则执行步骤S108,若否,则执行步骤S112;
S107、判断分组数据映射集合中是否有数据,若是,则执行步骤S108,若否,则返回步骤S103;
S108、依次处理分组映射集合里各分组数据,对数据库进行相应读写操作;
S109、判断读写操作是否正常,若是,则执行步骤S110,若否,则执行步骤S111;
S110、将请求产生的结果放入响应队列,执行步骤S112;
S111、处理过程产生异常或失败的请求数据回写到失效队列,执行步骤S112;以及
S112、结束。
优选地,所述步骤S102之后,步骤S103之前还包括所述工作线程运行时如果应用或系统为休眠状态,则所述工作线程进入休眠,待唤醒。
优选地,所述步骤S105中包括对请求数据根据分组策略进行分组聚合得到分组数据映射集合。
优选地,所述分组数据有一个分组数据映射集合持有。
优选地,所述步骤S106中所述滞留数据是指该数据在分组映射集合里待的时间超过预设阈值。
优选地,所述步骤S108中,所述工作线程依次对分组数据映射集合里的各分组数据进行批量操作,按照请求数据的类型对数据库进行相应的读写操作。
优选地,所述步骤S110中,主线程会依次处理工作线程放置在响应队列里的响应数据,对响应数据根据定义的回调方法采用同步或者异步的方式对响应进行回调处理。
优选地,所述步骤S111中,从失效队列里将请求重新推送到主线程的请求队列里,让主线程重新处理。
本发明的实施例还提供一种数据库读写异步访问的系统,用于上述的数据库读写异步访问的方法,所述数据库读写异步访问的系统包括:
数据队列模块,将请求数据先缓存在请求队列中;
数据分配模块,主线程从所述请求队列里取出数据根据数据路由方法,分配给工作线程;
数据抓取模块,所述工作线程从自身请求队列取请求数据;
第一判断模块,判断请求队列是否有数据,若是,则执行数据分组模块,若否,则执行第三判断模块;
数据分组模块,对请求数据进行分组处理;
第二判断模块,判断分组数据映射集合中是否有滞留数据,若是,则执行数据处理模块,若否,则返回数据队列模块;
第三判断模块,判断分组数据映射集合中是否有数据,若是,则执行数据处理模块,若否,则返回数据抓取模块;
数据处理模块,依次处理分组映射集合里各分组数据,对数据库进行相应读写操作;
第四判断模块,判断读写操作是否正常,若是,则执行响应队列模块,若否,则执行失效队列模块;
响应队列模块,将请求产生的结果放入响应队列,返回数据队列模块;以及
失效队列模块,处理过程产生异常或失败的请求数据回写到失效队列,返回数据队列模块。
本发明的实施例还提供一种数据库读写异步访问的设备,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述数据库读写异步访问的方法的步骤。
本发明的实施例还提供一种计算机可读存储介质,用于存储程序,所述程序被执行时实现上述数据库读写异步访问的方法的步骤。
本发明的数据库读写异步访问的方法、系统、设备及存储介质通过数据分组聚合,减少读写操作,加大单次处理的数据量,平衡CPU和网络读写操作,在有限的CPU使用时间里,做更多的数据读写操作。本发明通过对数据库异步读写访问线程的不同状态控制及数据的聚合操作,以达到读写线程充分利用有限的系统资源完成尽可能多的读写请求。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。
图1是本发明的数据库读写异步访问的方法的流程图;
图2是本发明的数据库读写异步访问的系统的模块示意图;
图3是本发明的数据库读写异步访问的设备的结构示意图;以及
图4是本发明一实施例的计算机可读存储介质的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使得本发明将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。
图1是本发明的数据库读写异步访问的方法的流程图。如图1所示,本发明的实施例提供一种数据库读写异步访问的方法,包括以下步骤:
S101、将请求数据先缓存在请求队列中;
S102、主线程从所述请求队列里取出数据根据数据路由方法,分配给工作线程;
S103、所述工作线程从自身请求队列取请求数据;
S104、判断请求队列是否有数据,若是,则执行步骤S105,若否,则执行步骤S107;
S105、对请求数据进行分组处理;
S106、判断分组数据映射集合中是否有滞留数据,若是,则执行步骤S108,若否,则执行步骤S112;
S107、判断分组数据映射集合中是否有数据,若是,则执行步骤S108,若否,则返回步骤S103;
S108、依次处理分组映射集合里各分组数据,对数据库进行相应读写操作;
S109、判断读写操作是否正常,若是,则执行步骤S110,若否,则执行步骤S111;
S110、将请求产生的结果放入响应队列,执行步骤S112;
S111、处理过程产生异常或失败的请求数据回写到失效队列,执行步骤S112;以及
S112、结束。
在一个优选实施例中,所述步骤S102之后,步骤S103之前还包括所述工作线程运行时如果应用或系统为休眠状态,则所述工作线程进入休眠,待唤醒。
在一个优选实施例中,所述步骤S105中包括对请求数据根据分组策略进行分组聚合得到分组数据映射集合。
在一个优选实施例中,所述分组数据有一个分组数据映射集合持有。
在一个优选实施例中,所述步骤S106中所述滞留数据是指该数据在分组映射集合里待的时间超过预设阈值。
在一个优选实施例中,所述步骤S108中,所述工作线程依次对分组数据映射集合里的各分组数据进行批量操作,按照请求数据的类型对数据库进行相应的读写操作。
在一个优选实施例中,所述步骤S110中,主线程会依次处理工作线程放置在响应队列里的响应数据,对响应数据根据定义的回调方法采用同步或者异步的方式对响应进行回调处理。
在一个优选实施例中,所述步骤S111中,从失效队列里将请求重新推送到主线程的请求队列里,让主线程重新处理。
本发明中的主线程是指当一个程序启动时,就有一个进程被操作系统(OS)创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程(Main Thread),因为它是程序开始时就执行的,如果你需要再创建线程,那么创建的线程就是这个主线程的子线程。
本发明中的数据路由一段数据通过路由协议发现到达目的地址的过程。在分布式环境中,对于一个请求而言,总是要决策到哪里去读/写,这就是数据路由问题,也是一个基本问题。写操作决定了读操作,因此写操作中针对具体的设计目标如何分而治之就成为了问题的关键。但是反过来说也是正确的,读的需求决定写的方式,而且应该这样考虑,因为写的目的不仅仅是存在那里,更是要考虑读的过程如何发挥价值。换句话说,数据路由首先要解决写到哪里和如何写的问题,但它是为如何读而准备的。关于写的设计应当是服从于读的方式、方法、形式和策略。
本发明提供了一套高效异步数据库读写的实现,能够基于状态机来控制工作线程的工作状态让其充分利用系统资源处理更多请求;利用映射化简的思想,先对数据进行分组聚合以达到对同表的操作可以进行批处理;同时加入故障转移机制对处理失败的数据进行回写和重试。主要工作流程如下:
(1)请求数据缓冲与搬移。首先让数据库操作请求进入请求队列,如果应用/系统标识为休眠状态(markdown状态)忽略请求。主线程从请求队列(Request Queue)中取出请求并根据定义的affinitive策略(数据路由方法),从工作线程组里选取相应的线程,将请求放入线程的私有请求队列。
(2)请求数据分组聚合。工作线程运行时如果应用/系统为休眠状态,工作线程进入睡眠,待唤醒。正常工作时,线程先尝试从自身请求队列里拿取数据,如果拿到请求则对请求数据进行映射集合(Map,Map是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象。Map没有继承于Collection接口从Map集合中检索元素时,只要给出键对象,就会返回对应的值对象。)处理,即将数据按照classify策略(分组策略),将数据分配到相应的组(分组数据由一个分组数据映射集合持有)中,并检查分组数据映射集合里是否有数据滞留(数据在分组映射集合里待的时间超过预设阈值),并对滞留数据处理,同(3)所述;如果从请求队列拿不到数据则进入下个步骤。
(3)请求的异步批处理。在工作线程的请求队列没有数据时,工作线程回去对分组数据映射集合进行检查,如果分组映射集合里没数据,工作线程就一直等待请求队列里的数据;否则工作线程依次对分组数据映射集合里的各分组数据进行批量操作,即按照请求数据的类型对数据库进行相应的读写操作。在请求处理的过程中产生的所有结果都会放入共享的响应队列(Response Queue)里;在处理过程中如果产生异常/或请求对数据库操作失败等非正常情况,会将请求放入“失败”请求队列(Fail Request Queue)
(4)统一响应与回调。主线程会依次处理工作线程放置在响应队列里的响应数据,对响应数据根据定义的回调方法(可在请求数据里进行回调定义和可根据请求类型定义回调方法),采用同步/异步(可配置)的方式对响应进行回调处理。
(5)失效回写与重试。对于(3)中处理失败的请求会回写到失效队列(FailRequest Queue)里,我们会有一个失效重试的工作者,不断地从失效队列里将请求重新push到主线程的请求队列里,让主线程重新处理。对于达到指定重试次数的失败请求可以根据相应策略对其丢弃或其它。如果主线程处于繁忙状态或暂不可用,让失效重试工作者去处理这个请求。
所以,本发明的数据库读写异步访问的方法通过数据分组聚合,减少读写操作,加大单次处理的数据量,平衡CPU和网络读写操作,在有限的CPU使用时间里,做更多的数据读写操作。本发明通过对数据库异步读写访问线程的不同状态控制及数据的聚合操作,以达到读写线程充分利用有限的系统资源完成尽可能多的读写请求。
图2是本发明的数据库读写异步访问的系统的模块示意图。如图2所示,本发明的实施例还提供一种数据库读写异步访问的系统9包括:
数据队列模块901,将请求数据先缓存在请求队列中;
数据分配模块902,主线程从所述请求队列里取出数据根据数据路由方法,分配给工作线程;
数据抓取模块903,所述工作线程从自身请求队列取请求数据;
第一判断模块904,判断请求队列是否有数据,若是,则执行数据分组模块,若否,则执行第三判断模块;
数据分组模块905,对请求数据进行分组处理;
第二判断模块906,判断分组数据映射集合中是否有滞留数据,若是,则执行数据处理模块908,若否,则返回数据队列模块901;
第三判断模块907,判断分组数据映射集合中是否有数据,若是,则执行数据处理模块908,若否,则返回数据抓取模块903;
数据处理模块908,依次处理分组映射集合里各分组数据,对数据库进行相应读写操作;
第四判断模块909,判断读写操作是否正常,若是,则执行响应队列模块910,若否,则执行失效队列模块911;
响应队列模块910,将请求产生的结果放入响应队列,返回数据队列模块901;以及
失效队列模块911,处理过程产生异常或失败的请求数据回写到失效队列,返回数据队列模块901。
本发明的数据库读写异步访问的系统通过数据分组聚合,减少读写操作,加大单次处理的数据量,平衡CPU和网络读写操作,在有限的CPU使用时间里,做更多的数据读写操作。本发明通过对数据库异步读写访问线程的不同状态控制及数据的聚合操作,以达到读写线程充分利用有限的系统资源完成尽可能多的读写请求。
本发明实施例还提供一种数据库读写异步访问的设备,包括处理器。存储器,其中存储有处理器的可执行指令。其中,处理器配置为经由执行可执行指令来执行的数据库读写异步访问的方法的步骤。
如上,本发明的数据库读写异步访问的系统通过数据分组聚合,减少读写操作,加大单次处理的数据量,平衡CPU和网络读写操作,在有限的CPU使用时间里,做更多的数据读写操作。本发明通过对数据库异步读写访问线程的不同状态控制及数据的聚合操作,以达到读写线程充分利用有限的系统资源完成尽可能多的读写请求。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为系统、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“平台”。
图3是本发明的数据库读写异步访问的设备的结构示意图。下面参照图3来描述根据本发明的这种实施方式的电子设备600。图3显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图3所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元610可以执行如图1中所示的步骤。
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(ROM)6203。
存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本发明实施例还提供一种计算机可读存储介质,用于存储程序,程序被执行时实现的数据库读写异步访问的方法的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述电子处方流转处理方法部分中描述的根据本发明各种示例性实施方式的步骤。
如上所示,本发明的计算机可读存储介质中的程序被执行时通过数据分组聚合,减少读写操作,加大单次处理的数据量,平衡CPU和网络读写操作,在有限的CPU使用时间里,做更多的数据读写操作。本发明通过对数据库异步读写访问线程的不同状态控制及数据的聚合操作,以达到读写线程充分利用有限的系统资源完成尽可能多的读写请求。
图4是本发明的计算机可读存储介质的结构示意图。参考图4所示,描述了根据本发明的实施方式的用于实现上述方法的程序产品800,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
综上,本发明的数据库读写异步访问的方法、系统、设备及存储介质通过数据分组聚合,减少读写操作,加大单次处理的数据量,平衡CPU和网络读写操作,在有限的CPU使用时间里,做更多的数据读写操作。本发明通过对数据库异步读写访问线程的不同状态控制及数据的聚合操作,以达到读写线程充分利用有限的系统资源完成尽可能多的读写请求。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。

Claims (4)

1.一种数据库读写异步访问的方法,其特征在于,包括以下步骤:
S101、将请求数据先缓存在请求队列中;
S102、主线程从所述请求队列里取出数据根据数据路由方法,分配给工作线程,所述工作线程运行时如果应用或系统为休眠状态,则所述工作线程进入休眠,待唤醒;
S103、所述工作线程从自身请求队列取请求数据;
S104、判断请求队列是否有数据,若是,则执行步骤S105,若否,则执行步骤S107;
S105、对请求数据进行分组处理,请求数据根据分组策略进行分组聚合得到分组数据映射集合,所述分组数据有一个分组数据映射集合持有;
S106、判断分组数据映射集合中是否有滞留数据,所述滞留数据是指该数据在分组映射集合里待的时间超过预设阈值,若是,则执行步骤S108,若否,则执行步骤S112;
S107、判断分组数据映射集合中是否有数据,若是,则执行步骤S108,若否,则返回步骤S103;
S108、依次处理分组映射集合里各分组数据,对数据库进行相应读写操作,所述工作线程依次对分组数据映射集合里的各分组数据进行批量操作,按照请求数据的类型对数据库进行相应的读写操作;
S109、判断读写操作是否正常,若是,则执行步骤S110,若否,则执行步骤S111;
S110、将请求产生的结果放入响应队列,主线程依次处理工作线程放置在响应队列里的响应数据,对响应数据根据定义的回调方法采用同步或者异步的方式对响应进行回调处理,执行步骤S112;
S111、处理过程产生异常或失败的请求数据回写到失效队列,从失效队列里将请求重新推送到主线程的请求队列里,让主线程重新处理,执行步骤S112;以及
S112、结束。
2.一种数据库读写异步访问的系统,用于实现权利要求1所述的数据库读写异步访问的方法,其特征在于,所述数据库读写异步访问的系统包括:
数据队列模块,将请求数据先缓存在请求队列中;
数据分配模块,主线程从所述请求队列里取出数据根据数据路由方法,分配给工作线程;
数据抓取模块,所述工作线程从自身请求队列取请求数据;
第一判断模块,判断请求队列是否有数据,若是,则执行数据分组模块,若否,则执行第三判断模块;
数据分组模块,对请求数据进行分组处理;
第二判断模块,判断分组数据映射集合中是否有滞留数据,若是,则执行数据处理模块,若否,则返回数据队列模块;
第三判断模块,判断分组数据映射集合中是否有数据,若是,则执行数据处理模块,若否,则返回数据抓取模块;
数据处理模块,依次处理分组映射集合里各分组数据,对数据库进行相应读写操作;
第四判断模块,判断读写操作是否正常,若是,则执行响应队列模块,若否,则执行失效队列模块;
响应队列模块,将请求产生的结果放入响应队列,返回数据队列模块;以及
失效队列模块,处理过程产生异常或失败的请求数据回写到失效队列,返回数据队列模块。
3.一种数据库读写异步访问的设备,其特征在于,包括:
处理器;
存储器,其中存储有所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1所述数据库读写异步访问的方法的步骤。
4.一种计算机可读存储介质,用于存储程序,其特征在于,所述程序被执行时实现权利要求1所述数据库读写异步访问的方法的步骤。
CN201711092591.XA 2017-11-08 2017-11-08 数据库读写异步访问的方法、系统、设备及存储介质 Active CN107729559B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711092591.XA CN107729559B (zh) 2017-11-08 2017-11-08 数据库读写异步访问的方法、系统、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711092591.XA CN107729559B (zh) 2017-11-08 2017-11-08 数据库读写异步访问的方法、系统、设备及存储介质

Publications (2)

Publication Number Publication Date
CN107729559A CN107729559A (zh) 2018-02-23
CN107729559B true CN107729559B (zh) 2020-06-23

Family

ID=61221903

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711092591.XA Active CN107729559B (zh) 2017-11-08 2017-11-08 数据库读写异步访问的方法、系统、设备及存储介质

Country Status (1)

Country Link
CN (1) CN107729559B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110069493A (zh) * 2019-02-28 2019-07-30 平安科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质
CN112085490A (zh) * 2019-06-13 2020-12-15 百度在线网络技术(北京)有限公司 异步计费方法、装置、设备及计算机可读存储介质
CN112783421A (zh) * 2019-11-07 2021-05-11 北京京东尚科信息技术有限公司 一种基于环形缓冲区的异步消费方法和装置
CN112799585A (zh) * 2019-11-14 2021-05-14 百度在线网络技术(北京)有限公司 数据处理方法、装置、电子设备及可读存储介质
CN111191179B (zh) * 2019-12-30 2023-11-14 合肥工大高科信息科技股份有限公司 一种ajax异步访问数据调度方法及系统
CN113553372A (zh) * 2020-04-26 2021-10-26 北京沃东天骏信息技术有限公司 针对数据库的写入方法、装置、计算设备及介质
CN112417455A (zh) * 2020-11-05 2021-02-26 北京八分量信息科技有限公司 一种基于可信计算的异步存储数据访问方法及使用方法
CN113190614B (zh) * 2020-12-30 2022-07-01 江苏方天电力技术有限公司 短时数据写库的实现方法、系统及电子设备
CN113722078A (zh) * 2021-11-02 2021-11-30 西安热工研究院有限公司 一种基于线程池高并发数据库访问方法、系统及设备
CN115904369B (zh) * 2022-11-02 2023-10-13 长扬科技(北京)股份有限公司 一种网络安全源数据高效聚合及关联分析的方法与系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101512482A (zh) * 2005-02-08 2009-08-19 思科技术公司 多线程分组处理体系结构
CN104714835A (zh) * 2013-12-16 2015-06-17 中国移动通信集团公司 一种数据访问处理方法及装置
CN105162837A (zh) * 2015-07-30 2015-12-16 四川长虹电器股份有限公司 海量数据存储环境下提升i/o吞吐率的方法及系统
CN105893286A (zh) * 2015-12-14 2016-08-24 乐视网信息技术(北京)股份有限公司 数据处理的方法和装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6981027B1 (en) * 2000-04-10 2005-12-27 International Business Machines Corporation Method and system for memory management in a network processing system
US9342411B2 (en) * 2012-10-22 2016-05-17 International Business Machines Corporation Reducing memory overhead of highly available, distributed, in-memory key-value caches

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101512482A (zh) * 2005-02-08 2009-08-19 思科技术公司 多线程分组处理体系结构
CN104714835A (zh) * 2013-12-16 2015-06-17 中国移动通信集团公司 一种数据访问处理方法及装置
CN105162837A (zh) * 2015-07-30 2015-12-16 四川长虹电器股份有限公司 海量数据存储环境下提升i/o吞吐率的方法及系统
CN105893286A (zh) * 2015-12-14 2016-08-24 乐视网信息技术(北京)股份有限公司 数据处理的方法和装置

Also Published As

Publication number Publication date
CN107729559A (zh) 2018-02-23

Similar Documents

Publication Publication Date Title
CN107729559B (zh) 数据库读写异步访问的方法、系统、设备及存储介质
US8588228B1 (en) Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner
US10614004B2 (en) Memory transaction prioritization
US11556391B2 (en) CPU utilization for service level I/O scheduling
US20190028554A1 (en) Function Based Dynamic Traffic Management for Network Services
CN113765980A (zh) 一种限流方法、装置、系统、服务器和存储介质
JP2017091512A (ja) サービスの再活性化時間を短縮するための方法、システム、およびプログラム
KR20210108973A (ko) 입/출력 저장 명령의 처리
JP2021517683A (ja) コンピューティング・クラスタにおけるデータ・アクセス認識によるワークロード管理
CN110851276A (zh) 一种业务请求处理方法、装置、服务器和存储介质
WO2021114848A1 (zh) 数据库的数据读写方法及装置
US20160292009A1 (en) Execution offloading through syscall trap interface
CN112600761A (zh) 一种资源分配的方法、装置及存储介质
US9568986B2 (en) System-wide power conservation using memory cache
US20180287954A1 (en) Technologies for offloaded management of communication
US10616317B2 (en) Method and system for affinity load balancing
US8924644B2 (en) Extending cache in a multi-processor computer
CN114449040B (zh) 基于云平台的配置下发方法及装置
US8938588B2 (en) Ensuring forward progress of token-required cache operations in a shared cache
US11178216B2 (en) Generating client applications from service model descriptions
US11016666B2 (en) Memory system and operating method thereof
US20080307190A1 (en) System and Method for Improved Virtual Real Memory
CN112087474B (zh) 一种基于集群的端口信息的获取方法及装置
US20170322893A1 (en) Computing node to initiate an interrupt for a write request received over a memory fabric channel
US10169115B1 (en) Predicting exhausted storage for a blocking API

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