CN107766575B - 读写分离的数据库访问方法及装置 - Google Patents
读写分离的数据库访问方法及装置 Download PDFInfo
- Publication number
- CN107766575B CN107766575B CN201711121916.2A CN201711121916A CN107766575B CN 107766575 B CN107766575 B CN 107766575B CN 201711121916 A CN201711121916 A CN 201711121916A CN 107766575 B CN107766575 B CN 107766575B
- Authority
- CN
- China
- Prior art keywords
- latest
- delay
- slave database
- database
- preset
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000000926 separation method Methods 0.000 title claims abstract description 22
- 230000001360 synchronised effect Effects 0.000 claims abstract description 147
- 238000003860 storage Methods 0.000 claims abstract description 50
- 230000008859 change Effects 0.000 claims description 106
- 238000012545 processing Methods 0.000 claims description 40
- 238000004364 calculation method Methods 0.000 claims description 26
- 238000003745 diagnosis Methods 0.000 claims description 12
- 230000001934 delay Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 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
- 238000012423 maintenance Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种读写分离的数据库访问方法及装置。本发明的方法,通过在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态;若从数据库处于非同步延迟状态,从从数据库中读取数据;若从数据处于同步延迟状态,则获取从数据库最新时间戳和本次读取的目标数据的最晚存储时间;若从数据库最新时间戳晚于或者等于最晚存储时间,则从从数据库中读取数据;若从数据库最新时间戳早于最晚存储时间,则根据数据读取操作指令从主数据库中读取数据,可以在从数据库与主数据之间的同步延时较长时,切换为从主数据库读取数据,从而避免通过从数据库读取的数据与主数据库中的最新数据不一致的问题,大大提高了向用户提供的查询结果准确率。
Description
技术领域
本发明涉及数据访存技术领域,尤其涉及一种读写分离的数据库访问方法及装置。
背景技术
为了确保数据库产品的稳定性,很多数据库拥有双机热备功能,也就是采用读写分离技术,通过设置主数据库和从数据库,通过同步服务将主数据库中的数据变化实时同步到从数据库中。
现有的采用读写分离技术的数据库访问方法,通过结合ogg(Oracle GoldenGate)消息同步机制服务和kafka消息中间件技术的同步服务端,将原有oracle数据库(主库)中的数据变化通过消息的方式实时同步写入Hbase数据库(从库)中。在数据库的使用过程中,主数据库(例如Oracle)负责对外提供增、删、改业务;从数据库(通常为分布式数据库Hbase)负责对外提供读业务。在主数据库发生数据变化时,通过ogg服务生成数据变化信息,kafka的生产者服务将数据变化信息封装成具有指定格式的数据变化消息,kafka的消费者服务根据数据变化消息解封装,得到数据变化信息,并根据数据变化信息将主数据发生的数据变化同步到从数据库,因此,从数据库与主数据库之间存在一定的同步延时。
现有的采用读写分离技术的数据库访问方法,在业务处理过程中,当遇到业务高峰期时,增、删、改业务量较大,主数据库中数据变化频繁,需要从主数据库向从数据库同步的数据量很大,会导致从数据库与主数据库之间的同步延时大大增加,有时可达到小时级,从而导致通过从数据库读取的数据与主数据库中的最新数据不一致,并最终导致向用户提供的查询结果准确率低。
发明内容
本发明提供一种读写分离的数据库访问,用以解决现有技术中当从数据库与主数据库之间的同步延时较大时,导致通过从数据库读取的数据与主数据库中的最新数据不一致,并最终导致向用户提供的查询结果准确率低的问题。
本发明的一个方面是提供一种读写分离的数据库访问方法,包括:
在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态;
若确定所述从数据库处于非同步延迟状态,则根据所述数据读取操作指令从所述从数据库中读取数据;
若确定所述从数据库处于同步延迟状态,则获取所述从数据库最新时间戳;
根据所述数据读取操作指令确定本次读取的目标数据的最晚存储时间;
若所述从数据库最新时间戳晚于或者等于所述最晚存储时间,则根据所述数据读取操作指令从所述从数据库中读取数据;
若所述从数据库最新时间戳早于所述最晚存储时间,则根据所述数据读取操作指令从主数据库中读取数据。
本发明的另一个方面是提供一种读写分离的数据库访问装置,包括:
第一确定模块,用于在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态;
第一数据读取模块,用于若确定所述从数据库处于非同步延迟状态,则根据所述数据读取操作指令从所述从数据库中读取数据;
获取模块,用于若确定所述从数据库处于同步延迟状态,则获取所述从数据库最新时间戳;
第二确定模块,用于根据所述数据读取操作指令确定本次读取的目标数据的最晚存储时间;
所述第一数据读取模块还用于若所述从数据库最新时间戳晚于或者等于所述最晚存储时间,则根据所述数据读取操作指令从所述从数据库中读取数据;
第二数据读取模块,用于若所述从数据库最新时间戳早于所述最晚存储时间,则根据所述数据读取操作指令从主数据库中读取数据。
本发明提供的读写分离的数据库访问方法及装置,本发明实施例通过在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态;若确定所述从数据库处于非同步延迟状态,则直接从所述从数据库中读取数据;若确定所述从数据处于同步延迟状态,则获取所述从数据库最新时间戳和本次读取的目标数据的最晚存储时间;若所述从数据库最新时间戳晚于或者等于所述最晚存储时间,则从所述从数据库中读取数据;若所述从数据库最新时间戳早于所述最晚存储时间,则根据所述数据读取操作指令从主数据库中读取数据,可以在从数据库与主数据之间的同步延时较长时,切换为从主数据库读取数据,从而避免通过从数据库读取的数据与主数据库中的最新数据不一致的问题,大大提高了向用户提供的查询结果准确率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1为本发明实施例一提供的读写分离的数据库访问方法流程图;
图2为本发明实施例二提供的读写分离的数据库访问方法流程图;
图3为本发明实施例三提供的读写分离的数据库访问方法流程图;
图4为本发明实施例四提供的读写分离的数据库访问装置的结构示意图;
图5为本发明实施例五提供的读写分离的数据库访问装置的结构示意图;
图6为本发明实施例六提供的读写分离的数据库访问装置的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
图1为本发明实施例一提供的读写分离的数据库访问方法流程图。本发明实施例针对现有技术中当从数据库与主数据库之间的同步延时较大时,导致通过从数据库读取的数据与主数据库中的最新数据不一致,并最终导致向用户提供的查询结果准确率低的问题,提供了读写分离的数据库访问方法。如图1,该方法具体步骤如下:
步骤S101、在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态。
其中,数据读取操作指令中包括要查询的目标数据的最晚存储时间。
在实际应用中,当接收到用户通过客户端发送的数据查询请求时,需要读取数据库中的数据,根据数据查询请求生成数据读取操作指令,通过执行数据读取操作指令可以读取到用户想要查询的目标数据。另外,数据读取操作指令携带读取目标数据的查询条件,例如,查询条件可以包括目标数据的存储时间、目标数据的来源数据表、目标数据涉及到的字段名等等。
本实施例中,接收到的用户通过客户端发送的数据查询请求中会携带有一个查询时间戳,该查询时间戳记录了本次查询的目标数据的最晚的存储时间,例如,当前时间为2017年7月19日,用户查询的目标数据为2017年7月1日至18日的信息,那么数据查询请求中会携带一个18号23点59分59秒的时间戳。那么根据该数据查询请求生成的数据读取操作指令中包括该时间戳,也即是数据读取操作指令中包括目标数据的最晚的存储时间。
在实际应用中,主数据库可以为Oracle数据库,从数据库可以为Hbase数据库。采用读写分离技术的数据库访问方法通过结合ogg(Oracle GoldenGate)消息同步机制服务和kafka消息中间件技术的同步服务端,将原有oracle数据库(主库)中的数据变化通过消息的方式实时同步写入Hbase数据库(从库)中。在主数据库发生数据变化时,通过ogg服务生成数据变化信息,kafka的生产者服务将数据变化信息封装成具有指定格式的数据变化消息,kafka的消费者服务根据数据变化消息解封装,得到数据变化信息,并根据数据变化信息将主数据发生的数据变化同步到从数据库,因此,从数据库与主数据库之间存在一定的同步延时。
本实施例中,当从数据库与主数据库之间的同步延时较长,也即是从数据库的同步延时较长,超过预先设定的阈值时,通过从数据库向用户提供的查询业务的查询结果准确率较低,从数据库进入同步延迟状态;当从数据库的同步延时较短,并且从数据库的同步延时呈缩短趋势时,从数据库进入非同步延迟状态。
步骤S102、若确定从数据库处于非同步延迟状态,则根据数据读取操作指令从从数据库中读取数据。
若上述步骤S101中确定从数据库处于非同步延迟状态,可以认为从数据库的同步延时较短,并且从数据库的同步延时呈缩短趋势,可以根据数据读取操作指令从从数据库中读取数据。
步骤S103、若确定从数据库处于同步延迟状态,则获取从数据库最新时间戳。
若上述步骤S101中确定从数据库处于同步延迟状态,可以认为未来的预设时间段内从数据库的同步延时大于或者等于预设延时阈值,该步骤中通过获取从数据库最新时间戳,来确定从数据库中最近一次同步的时间,也就是最近一次数据更新的时间。
其中,从数据库最新时间戳是指从数据库最近一次完成的数据同步的时间。通常,数据库具有唯一标识一次数据更新的更新版本标识号以及与更新版本标识号对应的记录了本次更新时间的时间戳。例如Oracle数据库的SCN(System Change Number,简称SCN)号,是当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字。
该步骤中,获取从数据库最新时间戳,具体可以采用如下方式实现:
采集从数据库当前的更新版本标识号,获取从数据库当前的更新版本标识号对应的时间戳,即可得到从数据库最近一次的数据更新时间,也即是从数据库最新时间戳。
步骤S104、根据数据读取操作指令确定本次读取的目标数据的最晚存储时间。
其中,目标数据的最晚存储时间是指目标数据的存储时间中最晚的存储时间。通常数据库中的数据在进行存储是会记录有存储时间,例如,保存数据时记录的存储时间、可以是数据修改后重新保存的时间、或者是新建数据时的存储时间等。
步骤S105、判断从数据库最新时间戳是否晚于或者等于最晚存储时间。
该步骤中,判断从数据库最新时间戳是否晚于或者等于最晚存储时间;若判断结果为从数据库最新时间戳晚于或者等于最晚存储时间,则可以确定当前从数据库中对应于本次数据读取的目标数据在上次同步后没有更新,执行步骤S106,根据数据读取操作指令从从数据库中读取数据;若判断结果为从数据库最新时间戳早于最晚存储时间,则可以确定当前从数据库中对应于本次数据读取的目标数据在上次同步后又被更新过,但是从数据库还未将后续的更新进行同步,执行步骤S107,根据数据读取操作指令从主数据库中读取数据。
步骤S106、若从数据库最新时间戳晚于或者等于最晚存储时间,则根据数据读取操作指令从从数据库中读取数据。
若从数据库最新时间戳晚于或者等于最晚存储时间,以从数据库作为操作对象执行数据读取操作指令,从从数据库中读取到目标数据。
步骤S107、若从数据库最新时间戳早于最晚存储时间,则根据数据读取操作指令从主数据库中读取数据。
若从数据库最新时间戳早于最晚存储时间,以主数据库作为操作对象执行数据读取操作指令,从主数据库中读取到目标数据。
另外,本实施例中,所采集的数据和计算得到的中间数据可以存储到预设的采集库中。例如,采集库可以是预设的内存区域、或者redis(REmote DIctionary Server)等内存库。在进行数据计算时,直接从预设采集库中获取数据即可进行计算。
本实施例的执行主体可以为数据源路由器、或者独立于数据源路由器的计算机设备。其中,数据源路由器并非普通网络中的路由器,是对不同数据库链接的程序实现,程序内存储从数据库库和主数据库的链接,可以分别访问从数据库和主数据库根据数据。
本发明实施例通过在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态;若确定从数据库处于非同步延迟状态,则直接从从数据库中读取数据;若确定从数据处于同步延迟状态,则获取从数据库最新时间戳和本次读取的目标数据的最晚存储时间;若从数据库最新时间戳晚于或者等于最晚存储时间,则从从数据库中读取数据;若从数据库最新时间戳早于最晚存储时间,则根据数据读取操作指令从主数据库中读取数据,可以在从数据库与主数据之间的同步延时较长时,切换为从主数据库读取数据,从而避免通过从数据库读取的数据与主数据库中的最新数据不一致的问题,大大提高了向用户提供的查询结果准确率。
实施例二
图2为本发明实施例二提供的读写分离的数据库访问方法流程图。在上述实施例一的基础上,本实施例中,当接收到数据读取操作指令时,确定从数据库是否处于同步延迟状态之前,还包括:周期性地计算从数据库的同步延时;根据最近的第一预设数量周期内的从数据库的同步延时,计算未来的预设时刻从数据库的同步延时;若预设时刻从数据库的同步延时大于或者等于预设时刻的预设延时阈值,则将从数据库设置为同步延迟状态。如图2所示,在确定从数据库是否处于同步延迟状态之前,该方法还包括以下步骤:
步骤S201、周期性地计算从数据库的同步延时。
本实施例中,周期性地计算从数据库的同步延时,具体可以采用如下方式实现:
周期性地采集主数据库的最新时间戳和从数据库的最新时间戳;计算主数据库的最新时间戳与从数据库的最新时间戳的差值,得到从数据库的同步延时。
其中,从数据库最新时间戳是指从数据库最近一次完成的数据同步的时间,主数据库最新时间戳是指主数据库最近一次完成的数据同步的时间。通常,数据库具有唯一标识一次数据更新的更新版本标识号以及与更新版本标识号对应的记录了本次更新时间的时间戳。例如Oracle数据库的SCN(System Change Number,简称SCN)号,是当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字。
可选地,周期性地采集主数据库的最新时间戳和从数据库的最新时间戳之后,将采集的数据存储到预设的采集库中。例如,采集库可以是预设的内存区域、或者redis(REmote DIctionary Server)等内存库。
本实施例中,计算从数据库的同步延时的周期可以由技术人员根据实际需要进行设定,本实施例对于周期的长度不做具体限定。例如,周期可以是3秒、5秒、10秒、20秒、1分钟、3分钟等。
步骤S202、根据最近的第一预设数量周期的从数据库的同步延时,计算未来的预设时刻从数据库的同步延时。
其中,第一预设数量周期可以由技术人员进行设定,例如最近的5个、6个、10个、20个周期等,选取的第一预设数量的周期越多,计算未来的预设时刻从数据库的同步延时越精确。预设时刻是最近一个周期结束之后的一个时刻,可以由技术人员根据实际需要进行设定,本实施例对此不做具体限定。例如,预设时刻可以是最近一个周期结束之后的若干秒、或者若干分钟的时刻,如可以是最近一个周期结束之后的10秒、1分钟、5分钟、10分钟或者30分钟的时刻。
本实施例中,根据最近的第一预设数量周期内的从数据库的同步延时,计算未来的预设时刻从数据库的同步延时,具体可以采用如下方式实现:
根据最近的第一预设数量周期的从数据库的同步延时,计算最近的第二预设数量周期中每个周期的同步延时增量,任一周期的同步延时增量为该周期的从数据库的同步延时相对于前一个周期的从数据库的同步延时的增量;其中,第二预设数量=第一预设数量-1;计算最近一个周期与预设时刻之间间隔的周期数,记为n;比较最近的第一预设数量周期中任意相邻的两个周期内从数据库的同步延时的大小,确定最近的第一预设数量周期中每个周期内从数据库的同步延时是否依次增大;根据判断结果进行以下处理:
(1)若是依次增大,则计算最近的第二预设数量周期中任意相邻的两个周期的同步延时增量的差值;计算各差值的平均值,记为t;根据所述最近的第二预设数量周期中每个周期的同步延时增量、所述最近一个周期与所述预设时刻之间间隔的周期数、所述各所述差值的平均值、所述最近一个周期的所述从数据库的同步延时、以及所述最近一个周期的所述同步延时增量,计算得到所述预设时刻所述从数据库的同步延时。
可选地,可以根据以下公式(1)计算预设时刻从数据库的同步延时T:
其中,T0为最近一个周期的从数据库的同步延时,t0为最近一个周期的同步延时增量。
本实施例中,第一预设数量可以由技术人员根据实际需要进行设定,第一预设数量大于2。
另外,最近一个周期与预设时刻之间间隔的周期数可以是最近一个周期结束的时刻与预设时间之间间隔的周期数。若两者之间间隔的时间不是周期的整数倍,则可以是两者之间间隔的完整的周期数,或者是两者之间间隔的完整的周期数加1。
例如,假设周期为1分钟,选取的第一预设数量为6,第二预设数量为5,近6个周期从数据库的同步延时按照时间先后顺序分别为:第1个周期从数据库的同步延时为10秒,第2个周期从数据库的同步延时为15秒,第3个周期从数据库的同步延时为25秒,第4个周期从数据库的同步延时为45秒,第5个周期从数据库的同步延时为70秒,第6个周期从数据库的同步延时为110秒;可以计算出最近5个周期的同步延时增量分别为:15-10=5,25-15=10,45-25=20,75-45=30,110-75=35;进一步可以计算出最近5个周期终任意相邻的两个周期的同时延时增量的差值分别为:10-5=5,20-10=10,30-20=10,35-30=5;可以计算出各差值的平均值t=(5+10+10+5)÷4=7.5;并可以得知最近一个周期的从数据库的同步延时T0=110秒,最近一个周期的同步延时增量t0=35。
假设预设时刻为最近一个周期结束之后10分钟的时刻,可以计算出最近的第一预设数量周期中最近一个周期与预设时刻之间间隔的周期数为10,也即是n=10。
(2)若不是依次增大,则计算最近的第二预设数量周期的平均延时增量,平均延时增量是最近的第二预设数量周期中各周期的同步延时增量的平均值;根据所述最近一个周期的所述从数据库的同步延时、所述最近一个周期与所述预设时刻之间间隔的周期数、以及所述平均延时增量,计算所述预设时刻所述从数据库的同步延时。
可选地,可以通过以下方式计算预设时刻从数据库的同步延时:
预设时刻从数据库的同步延时=最近一个周期的从数据库的同步延时+最近一个周期与预设时刻之间间隔的周期数×平均延时增量。
步骤S203、判断预设时刻从数据库的同步延时是否大于或者等于预设时刻的预设延时阈值。
若该步骤中判断结果为预设时刻从数据库的同步延时大于或者等于预设时刻的预设延时阈值,执行步骤S204;若该步骤中判断结果为预设时刻从数据库的同步延时小于预设时刻的预设延时阈值,执行步骤S205-S206。
步骤S204、若预设时刻从数据库的同步延时大于或者等于预设时刻的预设延时阈值,则将从数据库设置为同步延迟状态。
本实施例中,若预设时刻从数据库的同步延时大于或者等于预设时刻的预设延时阈值,将从数据库设置为同步延迟状态,此后从数据库进入同步延迟状态,直至重新将从数据库设置为非同步延迟状态。
其中,预设延时阈值可以由技术人员根据实际需要进行设定,本实施例此处不做具体限定。
可选地,在将从数据库设置为同步延迟状态之后,还可以根据预设预警规则发出预警信息,以提示相关工作人员从数据库的同步延迟情况严重,从而可以使得相关人员能够及时发现问题并进行处理。
另外,预设预警规则可以由技术人员根据实际需要进行设定,本实施例此处不做具体限定。例如,可以语音播放预警信息,和/或,可以向预设的手机号、预设邮箱推送预警信息,和/或,还可以通过微信公众号等方式推送预警信息。
步骤S205、若预设时刻从数据库的同步延时小于预设时刻的预设延时阈值,按照第一预设数量周期的先后顺序,确定第一预设数量周期的从数据库的同步延时是否依次减小。
本实施例中,该步骤具体可以采用如下方式实现:
若预设时刻从数据库的同步延时小于预设时刻的预设延时阈值,可以先确定从数据库是否处于同步延时状态,若从数据库处于同步延时状态,则通过按照第一预设数量周期的先后顺序确定第一预设数量周期的从数据库的同步延时是否依次减小,来确定是否将从数据库设置为非同步延时状态;若从数据库已经处于非同步延时状态,则无需再确定第一预设数量周期的从数据库的同步延时是否依次减小,也无需执行后续步骤。
步骤S206、若是依次减小,则将从数据库设置为非同步延迟状态。
若上述步骤S204中确定按照第一预设数量周期的先后顺序,第一预设数量周期的从数据库的同步延时依次减小,则可以将从数据库设置为非同步延迟状态,此后从数据库进入非同步延迟状态,直至重新将从数据库设置为同步延迟状态。
另外,本实施例中,所采集的数据和计算得到的中间数据可以存储到预设的采集库中。例如,采集库可以是预设的内存区域、或者redis(REmote DIctionary Server)等内存库。在进行数据计算时,直接从预设采集库中获取数据即可进行计算。
可选地,还可以将获取到的数据、计算得到的数据按照对应的周期的时序绘制统计图、和/或生成统计表,并将统计图和/或统计表进行展示。例如,将统计图、和/或生成统计表通过预设的终端进行显示,以帮助运维人员了解从数据库的同步情况、系统运行状态、统计数据量,并依据显示的数据信息分析同步服务的性能瓶颈。
本发明实施例通过周期性地计算从数据库的同步延时;根据最近的第一预设数量周期的从数据库的同步延时,计算未来的预设时刻从数据库的同步延时;若预设时刻从数据库的同步延时大于或者等于预设时刻的预设延时阈值,则将从数据库设置为同步延迟状态;若预设时刻从数据库的同步延时小于预设时刻的预设延时阈值,按照第一预设数量周期的先后顺序,确定第一预设数量周期的从数据库的同步延时是否依次减小;若是依次减小,则将从数据库设置为非同步延迟状态,通过设置从数据库是否处于同步延迟状态,可以在从数据库与主数据之间的同步延时较长时,方便地实现切换为从主数据库读取数据,从而避免通过从数据库读取的数据与主数据库中的最新数据不一致的问题,大大提高了向用户提供的查询结果准确率。
实施例三
图3为本发明实施例三提供的读写分离的数据库访问方法流程图。在上述实施例二的基础上,本实施例中,周期性地计算从数据库的同步延时之后,还包括:周期性地计算生产者服务生成的数据变化消息的增量和消费者服务对数据变化消息的处理量;根据最近的第一预设数量周期的生产者服务生成的数据变化消息的增量,计算每周期内数据变化消息的平均增量和平均处理量;计算未来的预设时刻与最近一个周期之间的间隔的周期数;根据预设时刻与最近一个周期之间的间隔的周期数、每周期内数据变化消息的平均增量和平均处理量、以及最近一个周期内未处理的数据变化消息的总量,计算出预设时刻的未处理的数据变化数量。如图3所示,在周期性地计算从数据库的同步延时之后,该方法还包括以下步骤:
步骤S301、周期性地计算生产者服务生成的数据变化消息的增量和消费者服务对数据变化消息的处理量。
本实施例中,周期性地计算生产者服务生成的数据变化消息的增量,具体可以采用如下方式实现:
周期性地采集生产者服务生成的最新的数据变化消息的偏移量,根据本次采集的最新的数据变化消息的偏移量、以及上一次采集的最新的数据变化消息的偏移量,本周期计算得到的生产者服务生成的数据变化消息的增量等于:本次采集的最新的数据变化消息的偏移量与上一次采集的最新的数据变化消息的偏移量的差值。
周期性地消费者服务对数据变化消息的处理量,具体可以采用如下方式实现:
周期性地采集消费者服务最新处理的数据变化消息的偏移量;根据本次采集的最新处理的数据变化消息的偏移量、以及上一次采集的最新处理的数据变化消息的偏移量,本周期计算得到的消费者服务对数据变化消息的处理量等于:本次采集的最新处理的数据变化消息的偏移量与上一次采集的最新处理的数据变化消息的偏移量的差值。
需要说明的是,本实施例中,计算生产者服务生成的数据变化消息的增量和消费者服务对数据变化消息的处理量,可以与上述实施例二中计算从数据库的同步延时在同一周期内进行。
步骤S302、根据最近的第一预设数量周期的生产者服务生成的数据变化消息的增量和消费者服务对数据变化消息的处理量,计算每周期内数据变化消息的平均增量和平均处理量。
具体地,根据最近的第一预设数量周期的生产者服务生成的数据变化消息的增量,计算各周期的生产者服务生成的数据变化消息的增量的平均值,作为每周期内数据变化消息的平均增量;根据最近的第一预设数量周期的消费者服务对数据变化消息的处理量,计算各周期的消费者服务对数据变化消息的处理量的平均值,作为每周期内数据变化消息的平均处理量。
步骤S303、计算未来的预设时刻与最近一个周期之间的间隔的周期数。
其中,最近一个周期与预设时刻之间间隔的周期数可以是最近一个周期结束的时刻与预设时间之间间隔的周期数。若两者之间间隔的时间不是周期的整数倍,则可以是两者之间间隔的完整的周期数,或者是两者之间间隔的完整的周期数加1。
步骤S304、根据预设时刻与最近一个周期之间的间隔的周期数、每周期内数据变化消息的平均增量和平均处理量、以及最近一个周期内未处理的数据变化消息的总量,计算出预设时刻的未处理的数据变化数量。
具体地,该步骤具体可以采用如下方式实现:
获取最近一个周期内未处理的数据变化消息的总量:
最近一个周期内未处理的数据变化消息的总量=最近一个周期采集的生产者服务生成的最新的数据变化消息的偏移量-消费者服务最新处理的数据变化消息的偏移量;
根据最近一个周期未处理的数据变化消息的总量、平均增量、平均处理量、以及预设时刻与最近一个周期之间的间隔的周期数,计算预设时刻的未处理的数据变化数量。
可选地,根据最近一个周期未处理的数据变化消息的总量、平均增量、平均处理量、以及预设时刻与最近一个周期之间的间隔的周期数,计算预设时刻的未处理的数据变化数量,具体可以采用如下方式实现:
预设时刻的未处理的数据变化数量=最近一个周期未处理的数据变化消息的总量+(平均增量-平均处理量)×预设时刻与最近一个周期之间的间隔的周期数。
另外,在本申请的另一实施例中,计算预设时刻的未处理的数据变化数量还可以采用上述实施例二中步骤S202中根据最近的第一预设数量周期内的从数据库的同步延时计算未来的预设时刻从数据库的同步延时相似的方法来计算,本实施例此处不再赘述。
步骤S305、根据每周期内数据变化消息的平均增量和平均处理量、预设时刻的未处理的数据变化数量、以及预设时刻从数据库的同步延时,生成诊断报告信息。
该诊断报告信息至少包括每周期内数据变化消息的平均增量和平均处理量、预设时刻的未处理的数据变化数量、以及预设时刻从数据库的同步延时。通过该诊断报告信息,可以使相关人员据此分析出是生产量增长了还是处理量降低了,以方便定位导致从数据库同步延迟现象严重的问题是主数据库变更的记录太多导致同步服务处理不过来,还是同步系统本身的处理量下降了。
步骤S306、根据预设推送规则,推送诊断报告信息。
本实施例中,预设推送规则可以由技术人员根据实际需要进行设定,本实施例此处不做具体限定。例如,可以向预设的手机号、预设邮箱推送诊断报告信息,或者还可以通过微信公众号等方式推送诊断报告信息。
可选地,还可以将获取到的数据、计算得到的数据按照对应的周期的时序绘制统计图、和/或生成统计表,并将统计图和/或统计表进行展示。例如,将统计图、和/或生成统计表通过预设的终端进行显示,以帮助运维人员了解从数据库的同步情况、系统运行状态、统计数据量,并依据显示的数据信息分析同步服务的性能瓶颈。
本发明实施例中通过周期性地计算出预设时刻的未处理的数据变化数量,并且根据每周期内数据变化消息的平均增量和平均处理量、预设时刻的未处理的数据变化数量、以及预设时刻从数据库的同步延时,生成诊断报告信息;根据预设推送规则,向相关人员推送诊断报告信息,从而为定位导致从数据库的同步延迟问题严重的原因提供数据依据。
实施例四
图4为本发明实施例四提供的读写分离的数据库访问装置的结构示意图。本发明实施例提供的读写分离的数据库访问装置可以执行读写分离的数据库访问方法实施例提供的处理流程。如图4所示,该装置40包括:第一确定模块401、第一数据读取模块402、获取模块403、第二确定模块404和第二数据读取模块405。
具体地,第一确定模块401用于在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态。
第一数据读取模块402用于若确定从数据库处于非同步延迟状态,则根据数据读取操作指令从从数据库中读取数据。
获取模块403用于若确定从数据库处于同步延迟状态,则获取从数据库最新时间戳。
第二确定模块404用于根据数据读取操作指令确定本次读取的目标数据的最晚存储时间。
第一数据读取模块402还用于若从数据库最新时间戳晚于或者等于最晚存储时间,则根据数据读取操作指令从从数据库中读取数据。
第二数据读取模块405用于若从数据库最新时间戳早于最晚存储时间,则根据数据读取操作指令从主数据库中读取数据。
本发明实施例提供的装置可以具体用于执行上述实施例一所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态;若确定从数据库处于非同步延迟状态,则直接从从数据库中读取数据;若确定从数据处于同步延迟状态,则获取从数据库最新时间戳和本次读取的目标数据的最晚存储时间;若从数据库最新时间戳晚于或者等于最晚存储时间,则从从数据库中读取数据;若从数据库最新时间戳早于最晚存储时间,则根据数据读取操作指令从主数据库中读取数据,可以在从数据库与主数据之间的同步延时较长时,切换为从主数据库读取数据,从而避免通过从数据库读取的数据与主数据库中的最新数据不一致的问题,大大提高了向用户提供的查询结果准确率。
实施例五
图5为本发明实施例五提供的读写分离的数据库访问装置的结构示意图。在上述实施例四的基础上,本实施例中,如图5所示,该装置40还包括:第一计算模块406、第二计算模块407、第一状态设置模块408和第二状态设置模块409。
具体地,第一计算模块406用于周期性地计算从数据库的同步延时;
第二计算模块407用于根据最近的第一预设数量周期的从数据库的同步延时,计算未来的预设时刻从数据库的同步延时;
第一状态设置模块408用于若预设时刻从数据库的同步延时大于或者等于预设时刻的预设延时阈值,则将从数据库设置为同步延迟状态。
第二状态设置模块409用于:
若预设时刻从数据库的同步延时小于预设时刻的预设延时阈值,按照第一预设数量周期的先后顺序,确定第一预设数量周期的从数据库的同步延时是否依次减小;若是依次减小,则将从数据库设置为非同步延迟状态。
可续地,第一计算模块406包括:采集子模块和第一计算子模块。
采集子模块用于周期性地采集主数据库的最新时间戳和从数据库的最新时间戳。
第一计算子模块用于计算主数据库的最新时间戳与从数据库的最新时间戳的差值,得到从数据库的同步延时。
可选地,第二计算模块407包括:第二计算子模块和第三计算子模块。
具体地,第二计算子模块用于:
根据最近的第一预设数量周期的从数据库的同步延时,计算最近的第二预设数量周期中每个周期的同步延时增量,任一周期的同步延时增量为该周期的从数据库的同步延时相对于前一个周期的从数据库的同步延时的增量;其中,第二预设数量=第一预设数量-1;
计算最近一个周期与预设时刻之间间隔的周期数,记为n;
比较最近的第一预设数量周期中任意相邻的两个周期的从数据库的同步延时的大小,确定最近的第一预设数量周期中每个周期的从数据库的同步延时是否依次增大;
若是依次增大,则计算最近的第二预设数量周期中任意相邻的两个周期的同步延时增量的差值;
根据所述最近的第二预设数量周期中每个周期的同步延时增量、所述最近一个周期与所述预设时刻之间间隔的周期数、所述各所述差值的平均值、所述最近一个周期的所述从数据库的同步延时、以及所述最近一个周期的所述同步延时增量,计算得到所述预设时刻所述从数据库的同步延时。
第三计算子模块用于:
若不是依次增大,则计算最近的第二预设数量周期的平均延时增量,平均延时增量是最近的第二预设数量周期中各周期的同步延时增量的平均值;
根据所述最近一个周期的所述从数据库的同步延时、所述最近一个周期与所述预设时刻之间间隔的周期数、以及所述平均延时增量,计算所述预设时刻所述从数据库的同步延时。
本发明实施例提供的装置可以具体用于执行上述实施例二所提供的方法实施例,具体功能此处不再赘述。
本发明实施例通过周期性地计算从数据库的同步延时;根据最近的第一预设数量周期的从数据库的同步延时,计算未来的预设时刻从数据库的同步延时;若预设时刻从数据库的同步延时大于或者等于预设时刻的预设延时阈值,则将从数据库设置为同步延迟状态;若预设时刻从数据库的同步延时小于预设时刻的预设延时阈值,按照第一预设数量周期的先后顺序,确定第一预设数量周期的从数据库的同步延时是否依次减小;若是依次减小,则将从数据库设置为非同步延迟状态,通过设置从数据库是否处于同步延迟状态,可以在从数据库与主数据之间的同步延时较长时,方便地实现切换为从主数据库读取数据,从而避免通过从数据库读取的数据与主数据库中的最新数据不一致的问题,大大提高了向用户提供的查询结果准确率。
实施例六
图6为本发明实施例六提供的读写分离的数据库访问装置的结构示意图。在上述实施例五的基础上,本实施例中,如图6所示,该装置40还包括:第三计算模块410。
第三计算模块410用于:
周期性地计算生产者服务生成的数据变化消息的增量和消费者服务对数据变化消息的处理量;根据最近的第一预设数量周期的生产者服务生成的数据变化消息的增量和消费者服务对数据变化消息的处理量,计算每周期内数据变化消息的平均增量和平均处理量;计算未来的预设时刻与最近一个周期之间的间隔的周期数;根据预设时刻与最近一个周期之间的间隔的周期数、每周期内数据变化消息的平均增量和平均处理量、以及最近一个周期内未处理的数据变化消息的总量,计算出预设时刻的未处理的数据变化数量。
可选地,该装置40还可以包括:诊断报告生成模块411和信息推送模块412。
其中,诊断报告生成模块411用于根据每周期内数据变化消息的平均增量和平均处理量、预设时刻的未处理的数据变化数量、以及预设时刻从数据库的同步延时,生成诊断报告信息。
信息推送模块412用于根据预设推送规则,推送诊断报告信息。
本发明实施例提供的装置可以具体用于执行上述实施例三所提供的方法实施例,具体功能此处不再赘述。
本发明实施例中通过周期性地计算出预设时刻的未处理的数据变化数量,并且根据每周期内数据变化消息的平均增量和平均处理量、预设时刻的未处理的数据变化数量、以及预设时刻从数据库的同步延时,生成诊断报告信息;根据预设推送规则,向相关人员推送诊断报告信息,从而为定位导致从数据库的同步延迟问题严重的原因提供数据依据。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。
Claims (12)
1.一种读写分离的数据库访问方法,其特征在于,包括:
在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态;
若确定所述从数据库处于非同步延迟状态,则根据所述数据读取操作指令从所述从数据库中读取数据;
若确定所述从数据库处于同步延迟状态,则获取所述从数据库最新时间戳;
根据所述数据读取操作指令确定本次读取的目标数据的最晚存储时间;
若所述从数据库最新时间戳晚于或者等于所述最晚存储时间,则根据所述数据读取操作指令从所述从数据库中读取数据;
若所述从数据库最新时间戳早于所述最晚存储时间,则根据所述数据读取操作指令从主数据库中读取数据;
所述在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态之前,还包括:
周期性地计算所述从数据库的同步延时;
根据最近的第一预设数量周期的所述从数据库的同步延时,计算未来的预设时刻所述从数据库的同步延时;
若所述预设时刻所述从数据库的同步延时大于或者等于所述预设时刻的预设延时阈值,则将所述从数据库设置为同步延迟状态;
所述根据最近的第一预设数量周期的所述从数据库的同步延时,计算未来的预设时刻所述从数据库的同步延时之后,还包括:
若所述预设时刻所述从数据库的同步延时小于所述预设时刻的预设延时阈值,按照所述第一预设数量周期的先后顺序,确定所述第一预设数量周期的所述从数据库的同步延时是否依次减小;
若是依次减小,则将所述从数据库设置为非同步延迟状态。
2.根据权利要求1所述的方法,其特征在于,所述周期性地计算所述从数据库的同步延时,包括:
周期性地采集所述主数据库的最新时间戳和所述从数据库的最新时间戳;
计算所述主数据库的最新时间戳与所述从数据库的最新时间戳的差值,得到所述从数据库的同步延时。
3.根据权利要求1或2所述的方法,其特征在于,所述根据最近的第一预设数量周期的所述从数据库的同步延时,计算未来的预设时刻所述从数据库的同步延时,包括:
根据最近的第一预设数量周期的所述从数据库的同步延时,计算最近的第二预设数量周期中每个周期的同步延时增量,任一周期的所述同步延时增量为该周期的从数据库的同步延时相对于前一个周期的从数据库的同步延时的增量;其中,第二预设数量=第一预设数量-1;
计算最近一个周期与所述预设时刻之间间隔的周期数;
比较所述最近的第一预设数量周期中任意相邻的两个周期的所述从数据库的同步延时的大小,确定所述最近的第一预设数量周期中每个周期的所述从数据库的同步延时是否依次增大;
若是依次增大,则计算所述最近的第二预设数量周期中任意相邻的两个周期的同步延时增量的差值;
计算各所述差值的平均值;
根据所述最近的第二预设数量周期中每个周期的同步延时增量、所述最近一个周期与所述预设时刻之间间隔的周期数、所述各所述差值的平均值、所述最近一个周期的所述从数据库的同步延时、以及所述最近一个周期的所述同步延时增量,计算得到所述预设时刻所述从数据库的同步延时。
4.根据权利要求3所述的方法,其特征在于,所述根据最近的第一预设数量周期的所述从数据库的同步延时,比较所述最近的第一预设数量周期中任意相邻的两个周期的所述从数据库的同步延时的大小,确定所述最近的第一预设数量周期中每个周期的所述从数据库的同步延时是否依次增大之后,还包括:
若不是依次增大,则计算所述最近的第二预设数量周期的平均延时增量,所述平均延时增量是所述最近的第二预设数量周期中各周期的同步延时增量的平均值;
根据所述最近一个周期的所述从数据库的同步延时、所述最近一个周期与所述预设时刻之间间隔的周期数、以及所述平均延时增量,计算所述预设时刻所述从数据库的同步延时。
5.根据权利要求1所述的方法,其特征在于,所述周期性地计算所述从数据库的同步延时之后,还包括:
周期性地计算生产者服务生成的数据变化消息的增量和消费者服务对数据变化消息的处理量;
根据所述最近的第一预设数量周期的所述生产者服务生成的数据变化消息的增量和消费者服务对数据变化消息的处理量,计算每周期内数据变化消息的平均增量和平均处理量;
计算所述预设时刻与最近一个周期之间的间隔的周期数;
根据所述预设时刻与最近一个周期之间的间隔的周期数、每周期内数据变化消息的平均增量和平均处理量、以及最近一个周期内未处理的数据变化消息的总量,计算出所述预设时刻的未处理的数据变化数量。
6.根据权利要求5所述的方法,其特征在于,计算出所述预设时刻的未处理的数据变化数量之后,还包括:
根据每周期内数据变化消息的平均增量和平均处理量、所述预设时刻的未处理的数据变化数量、以及所述预设时刻所述从数据库的同步延时,生成诊断报告信息;
根据预设推送规则,推送所述诊断报告信息。
7.一种读写分离的数据库访问装置,其特征在于,包括:
第一确定模块,用于在执行数据读取操作指令之前,确定从数据库是否处于同步延迟状态;
第一数据读取模块,用于若确定所述从数据库处于非同步延迟状态,则根据所述数据读取操作指令从所述从数据库中读取数据;
获取模块,用于若确定所述从数据库处于同步延迟状态,则获取所述从数据库最新时间戳;
第二确定模块,用于根据所述数据读取操作指令确定本次读取的目标数据的最晚存储时间;
所述第一数据读取模块还用于若所述从数据库最新时间戳晚于或者等于所述最晚存储时间,则根据所述数据读取操作指令从所述从数据库中读取数据;
第二数据读取模块,用于若所述从数据库最新时间戳早于所述最晚存储时间,则根据所述数据读取操作指令从主数据库中读取数据;
所述的装置还包括:
第一计算模块,用于周期性地计算所述从数据库的同步延时;
第二计算模块,用于根据最近的第一预设数量周期的所述从数据库的同步延时,计算未来的预设时刻所述从数据库的同步延时;
第一状态设置模块,用于若所述预设时刻所述从数据库的同步延时大于或者等于所述预设时刻的预设延时阈值,则将所述从数据库设置为同步延迟状态;
所述的装置还包括:第二状态设置模块,所述第二状态设置模块用于:
若所述预设时刻所述从数据库的同步延时小于所述预设时刻的预设延时阈值,按照所述第一预设数量周期的先后顺序,确定所述第一预设数量周期的所述从数据库的同步延时是否依次减小;
若是依次减小,则将所述从数据库设置为非同步延迟状态。
8.根据权利要求7所述的装置,其特征在于,所述第一计算模块包括:
采集子模块,用于周期性地采集所述主数据库的最新时间戳和所述从数据库的最新时间戳;
第一计算子模块,用于计算所述主数据库的最新时间戳与所述从数据库的最新时间戳的差值,得到所述从数据库的同步延时。
9.根据权利要求7或8所述的装置,其特征在于,所述第二计算模块,包括:第二计算子模块,
所述第二计算子模块用于:
根据最近的第一预设数量周期的所述从数据库的同步延时,计算最近的第二预设数量周期中每个周期的同步延时增量,任一周期的所述同步延时增量为该周期的从数据库的同步延时相对于前一个周期的从数据库的同步延时的增量;其中,第二预设数量=第一预设数量-1;
计算最近一个周期与所述预设时刻之间间隔的周期数;
比较所述最近的第一预设数量周期中任意相邻的两个周期的所述从数据库的同步延时的大小,确定所述最近的第一预设数量周期中每个周期的所述从数据库的同步延时是否依次增大;
若是依次增大,则计算所述最近的第二预设数量周期中任意相邻的两个周期的同步延时增量的差值;
计算各所述差值的平均值;
根据所述最近的第二预设数量周期中每个周期的同步延时增量、所述最近一个周期与所述预设时刻之间间隔的周期数、所述各所述差值的平均值、所述最近一个周期的所述从数据库的同步延时、以及所述最近一个周期的所述同步延时增量,计算得到所述预设时刻所述从数据库的同步延时。
10.根据权利要求9所述的装置,其特征在于,所述第二计算模块,还包括:第三计算子模块,
所述第三计算子模块用于:
若不是依次增大,则计算所述最近的第二预设数量周期的平均延时增量,所述平均延时增量是所述最近的第二预设数量周期中各周期的同步延时增量的平均值;
根据所述最近一个周期的所述从数据库的同步延时、所述最近一个周期与所述预设时刻之间间隔的周期数、以及所述平均延时增量,计算所述预设时刻所述从数据库的同步延时。
11.根据权利要求7所述的装置,其特征在于,还包括:第三计算模块,
所述第三计算模块用于:
周期性地计算生产者服务生成的数据变化消息的增量和消费者服务对数据变化消息的处理量;
根据所述最近的第一预设数量周期的所述生产者服务生成的数据变化消息的增量和消费者服务对数据变化消息的处理量,计算每周期内数据变化消息的平均增量和平均处理量;
计算所述预设时刻与最近一个周期之间的间隔的周期数;
根据所述预设时刻与最近一个周期之间的间隔的周期数、每周期内数据变化消息的平均增量和平均处理量、以及最近一个周期内未处理的数据变化消息的总量,计算出所述预设时刻的未处理的数据变化数量。
12.根据权利要求11所述的装置,其特征在于,还包括:
诊断报告生成模块,用于根据每周期内数据变化消息的平均增量和平均处理量、所述预设时刻的未处理的数据变化数量、以及所述预设时刻所述从数据库的同步延时,生成诊断报告信息;
信息推送模块,用于根据预设推送规则,推送所述诊断报告信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711121916.2A CN107766575B (zh) | 2017-11-14 | 2017-11-14 | 读写分离的数据库访问方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711121916.2A CN107766575B (zh) | 2017-11-14 | 2017-11-14 | 读写分离的数据库访问方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107766575A CN107766575A (zh) | 2018-03-06 |
CN107766575B true CN107766575B (zh) | 2020-04-07 |
Family
ID=61273745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711121916.2A Active CN107766575B (zh) | 2017-11-14 | 2017-11-14 | 读写分离的数据库访问方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107766575B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108616587B (zh) * | 2018-04-24 | 2022-01-25 | 新华三技术有限公司 | 一种表项同步方法、装置及网络设备 |
CN109189851B (zh) * | 2018-06-29 | 2021-06-01 | 网宿科技股份有限公司 | 数据访问方法、数据库设备以及主从数据库实例系统 |
CN109684410B (zh) * | 2018-12-24 | 2021-06-15 | 浙江大华技术股份有限公司 | 一种确定主从数据库同步时延的系统、方法及储存介质 |
CN110489092B (zh) * | 2019-08-27 | 2022-08-16 | 四川长虹电器股份有限公司 | 一种数据库读写分离架构下读取数据延迟问题的解决方法 |
CN111581238B (zh) * | 2020-04-01 | 2023-10-24 | 北京奇艺世纪科技有限公司 | 信息查询方法及装置、电子设备、计算机可读存储介质 |
CN111611252B (zh) * | 2020-04-01 | 2023-07-18 | 石化盈科信息技术有限责任公司 | 数据同步过程中安全数据的监控、装置、设备和存储介质 |
CN113761051A (zh) * | 2020-07-01 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 消息推送方法、数据获取方法、装置、系统、设备和介质 |
CN111880954B (zh) * | 2020-08-03 | 2024-09-06 | 浪潮云信息技术股份公司 | 一种基于文本数据的读写分离方法 |
CN112699325B (zh) * | 2021-01-14 | 2022-07-26 | 福建天晴在线互动科技有限公司 | 一种缓存二次淘汰保障数据一致性的方法及其系统 |
CN112699139A (zh) * | 2021-01-14 | 2021-04-23 | 福建天晴在线互动科技有限公司 | 一种利用数据服务中心来保证数据一致性的方法及其系统 |
CN113094431A (zh) * | 2021-03-30 | 2021-07-09 | 北京达佳互联信息技术有限公司 | 读写分离方法、装置及服务器 |
CN113076343B (zh) * | 2021-04-30 | 2024-04-05 | 北京京东振世信息技术有限公司 | 数据查询方法、装置、设备及存储介质 |
CN113836231B (zh) * | 2021-09-23 | 2022-10-21 | 武汉达梦数据库股份有限公司 | 一种数据库主备环境下的日志解析服务切换的方法及设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102129434B (zh) * | 2010-01-13 | 2015-06-10 | 腾讯科技(北京)有限公司 | 读写分离数据库的方法及系统 |
CN106874281B (zh) * | 2015-12-11 | 2020-02-07 | 北京新媒传信科技有限公司 | 实现数据库读写分离的方法和装置 |
CN107122357A (zh) * | 2016-02-24 | 2017-09-01 | 阿里巴巴集团控股有限公司 | 数据库读写分离方法、装置和系统 |
CN106453297B (zh) * | 2016-09-30 | 2020-10-23 | 重庆伏特猫科技有限公司 | 检测主从延时方法、装置和系统 |
-
2017
- 2017-11-14 CN CN201711121916.2A patent/CN107766575B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107766575A (zh) | 2018-03-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766575B (zh) | 读写分离的数据库访问方法及装置 | |
CN110321387B (zh) | 数据同步方法、设备及终端设备 | |
CN107038162B (zh) | 基于数据库日志的实时数据查询方法和系统 | |
CN109739929B (zh) | 数据同步方法、装置及系统 | |
US10176208B2 (en) | Processing time series data from multiple sensors | |
CN106648446B (zh) | 一种用于时序数据的存储方法、装置及电子设备 | |
CN109918349B (zh) | 日志处理方法、装置、存储介质和电子装置 | |
CN104809201B (zh) | 一种数据库同步的方法和装置 | |
CN109241175A (zh) | 数据同步方法、装置、存储介质及电子设备 | |
CN104899295B (zh) | 一种异构数据源数据关联分析方法 | |
CN106649828B (zh) | 一种数据查询方法及系统 | |
CN105183860B (zh) | 数据同步方法和系统 | |
CN109634970B (zh) | 表数据同步方法、设备、存储介质及装置 | |
CN105512336A (zh) | 一种基于Hadoop的海量数据处理方法和装置 | |
CN111222089B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN113407623B (zh) | 数据的处理方法、装置及服务器 | |
CN110321383A (zh) | 大数据平台数据同步方法、装置、计算机设备及存储介质 | |
WO2018095299A1 (zh) | 一种时序数据管理方法、设备和装置 | |
CN113672627B (zh) | Elasticsearch搜索引擎索引构建方法及装置 | |
CN107423404B (zh) | 流程实例数据同步处理方法和装置 | |
CN109298978B (zh) | 一种指定位置的数据库集群的恢复方法及系统 | |
CN108319617A (zh) | 确定数据库主从差异的方法、装置及切换控制方法、装置 | |
CN104317957A (zh) | 一种报表处理的开放平台、系统及报表处理方法 | |
CN111158999B (zh) | 一种格式化时间的计算方法和装置 | |
CN114416868B (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 |