一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据读取方法及终端与流程

2021-12-08 00:45:00 来源:中国专利 TAG:


1.本发明涉及计算机技术领域,特别涉及一种数据读取方法及终端。


背景技术:

2.移动互联网蓬勃发展的今天,存在着各种各样的数据库,而由于互联网海量用户的使用,将会带来大量的数据,进而给数据库带来很大的压力。为了缓解数据库的压力,现在数据库的通用架构方式都为分布式部署,以提高数据库的qps(query per second,每秒查询率)数据。
3.但是,随着用户量的继续增大,对数据库的qps有着更高的要求,这种时候,一般会采用主从数据库的读写分离架构方式,写数据在主节点上,读取数据在从节点上。使用此种读写分离架构能够更进一步地提高数据的qps,这也是现在数据库的通用读写分离架构方式。可是,在这样的读写分离架构方式之下,由于数据由主节点同步到各个从节点上会有一定的延迟,如果网络抖动或者其他异常情况造成主从延迟,此时,客户端从从节点上将读取不到数据,或者读取到的为脏数据,造成业务异常。


技术实现要素:

4.本发明所要解决的技术问题是:提供了一种数据读取方法及终端,能够保证数据读取的准确性。
5.为了解决上述技术问题,本发明采用的技术方案为:
6.一种数据读取方法,包括步骤:
7.建立数据库代理层,若接收到数据的变更操作时,则通过所述代理层对数据库主节点内的数据进行变更,并将变更后的更新数据缓存至所述代理层;
8.若接收到数据的读取操作时,判断数据库主节点与从节点的同步是否存在延迟,若是,则根据延迟时间以及所述数据库的每秒事务数计算延迟数据量,将所述延迟数据量中包含的数据与所述代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据;
9.通过所述代理层在所述从节点中读取所述已同步数据,在所述主节点中读取所述未同步数据。
10.为了解决上述技术问题,本发明采用的另一种技术方案为:
11.一种数据读取终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
12.建立数据库代理层,若接收到数据的变更操作时,则通过所述代理层对数据库主节点内的数据进行变更,并将变更后的更新数据缓存至所述代理层;
13.若接收到数据的读取操作时,判断数据库主节点与从节点的同步是否存在延迟,若是,则根据延迟时间以及所述数据库的每秒事务数计算延迟数据量,将所述延迟数据量中包含的数据与所述代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数
据;
14.通过所述代理层在所述从节点中读取所述已同步数据,在所述主节点中读取所述未同步数据。
15.本发明的有益效果在于:通过建立数据库代理层,能够在接收到数据变更操作时,对主节点内的数据进行变更,并将变更后的更新数据保存在代理层中;在接收到数据读取操作时,判断主从同步是否延迟,若是,则根据延迟时间以及数据库的每秒事务数计算延迟数据量,将延迟数据量中包含的数据与代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据,通过代理层与数据库进行交互,能够在从节点读取已同步数据,在主节点读取未同步数据,避免客户端在从节点上读取不到数据或者读取到脏数据,造成业务异常的现象,从而保证数据读取的准确性,同时,减少了主节点的读取量,在一定程度下减少主节点的压力。
附图说明
16.图1为本发明实施例的一种数据读取方法的流程图;
17.图2为本发明实施例的一种数据读取终端的示意图。
具体实施方式
18.为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。
19.请参照图1,本发明实施例提供了一种数据读取方法,包括步骤:
20.建立数据库代理层,若接收到数据的变更操作时,则通过所述代理层对数据库主节点内的数据进行变更,并将变更后的更新数据缓存至所述代理层;
21.若接收到数据的读取操作时,判断数据库主节点与从节点的同步是否存在延迟,若是,则根据延迟时间以及所述数据库的每秒事务数计算延迟数据量,将所述延迟数据量中包含的数据与所述代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据;
22.通过所述代理层在所述从节点中读取所述已同步数据,在所述主节点中读取所述未同步数据。
23.从上述描述可知,本发明的有益效果在于:通过建立数据库代理层,能够在接收到数据变更操作时,对主节点内的数据进行变更,并将变更后的更新数据保存在代理层中;在接收到数据读取操作时,判断主从同步是否延迟,若是,则根据延迟时间以及数据库的每秒事务数计算延迟数据量,将延迟数据量中包含的数据与代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据,通过代理层与数据库进行交互,能够在从节点读取已同步数据,在主节点读取未同步数据,避免客户端在从节点上读取不到数据或者读取到脏数据,造成业务异常的现象,从而保证数据读取的准确性,同时,减少了主节点的读取量,在一定程度下减少主节点的压力。
24.进一步地,所述若接收到数据的变更操作时,则通过所述代理层对数据库主节点内的数据进行变更,并将变更后的更新数据缓存至所述代理层包括:
25.接收到数据的变更操作,通过所述代理层在所述主节点中变更数据,并将变更后
的所述更新数据的标识及其所在的数据库表的表名缓存至所述代理层。
26.由上述描述可知,当接收到的数据变更操作时,通过代理层在主节点中进行数据变更,并将变更后的更新数据的标识及其所在的数据库表的表名缓存至代理层;因此以数据为单位进行缓存,在后续数据读取时能够在同一张表中根据不同的数据选择不同的读取方式,在一定程度下减少主节点的压力。
27.进一步地,所述判断数据库主节点与从节点的同步是否存在延迟包括:
28.实时监控主节点与从节点同步的延迟情况,记录延时时间以及主节点的每秒事务数;
29.根据预设时间间隔,将所述延时时间以及主节点的每秒事务数缓存至所述代理层;
30.判断所述延时时间是否超过预设延时阈值,若是,则所述数据库主节点与从节点的同步存在延迟,否则,所述数据库主节点与从节点的同步不存在延迟。
31.由上述描述可知,通过实时记录主从节点的延时时间以及主节点的每秒事务数,能够根据延时时间是否超过预设延时阈值来判断数据库主节点与从节点的同步是否存在延迟,因此能够及时准确地获取到主从节点的延时情况,从而保证后续数据读取的准确性。
32.进一步地,所述根据延迟时间以及所述数据库的每秒事务数计算延迟数据量包括:
33.根据不同时间段的数据库每秒事物数和延迟时间,计算每一个时间段对应的延迟数据总量。
34.由上述描述可知,通过计算不同时间段的数据库每秒事物数和延迟时间,能够得到每一个时间段对应的延迟数据总量,便于后续对每一个时间段的数据进行针对分析。
35.进一步地,将所述延迟数据量中包含的数据与所述代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据包括:
36.将每一个时间段的所述延迟数据总量对应的从节点数据与所述代理层中缓存的所述更新数据进行比对,判断所述从节点数据与所述更新数据是否相同,若是,则所述时间段的数据是已同步数据,否则,所述时间段的数据是未同步数据。
37.由上述描述可知,将每一个时间段的延迟总量与代理层中本地缓存的更新数据比较,可以得出延迟时间段内哪些数据是未同步成功的,哪些数据是已经同步成功的,以便于在各个时间段内代理层进一步合并处理数据并返回结果数据。
38.请参照图2,本发明另一实施例提供了一种数据读取终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
39.建立数据库代理层,若接收到数据的变更操作时,则通过所述代理层对数据库主节点内的数据进行变更,并将变更后的更新数据缓存至所述代理层;
40.若接收到数据的读取操作时,判断数据库主节点与从节点的同步是否存在延迟,若是,则根据延迟时间以及所述数据库的每秒事务数计算延迟数据量,将所述延迟数据量中包含的数据与所述代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据;
41.通过所述代理层在所述从节点中读取所述已同步数据,在所述主节点中读取所述
未同步数据。
42.由上述描述可知,通过建立数据库代理层,能够在接收到数据变更操作时,对主节点内的数据进行变更,并将变更后的更新数据保存在代理层中;在接收到数据读取操作时,判断主从同步是否延迟,若是,则根据延迟时间以及数据库的每秒事务数计算延迟数据量,将延迟数据量中包含的数据与代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据,通过代理层与数据库进行交互,能够在从节点读取已同步数据,在主节点读取未同步数据,避免客户端在从节点上读取不到数据或者读取到脏数据,造成业务异常的现象,从而保证数据读取的准确性,同时,减少了主节点的读取量,在一定程度下减少主节点的压力。
43.进一步地,所述若接收到数据的变更操作时,则通过所述代理层对数据库主节点内的数据进行变更,并将变更后的更新数据缓存至所述代理层包括:
44.接收到数据的变更操作,通过所述代理层在所述主节点中变更数据,并将变更后的所述更新数据的标识及其所在的数据库表的表名缓存至所述代理层。
45.由上述描述可知,当接收到的数据变更操作时,通过代理层在主节点中进行数据变更,并将变更后的更新数据的标识及其所在的数据库表的表名缓存至代理层;因此以数据为单位进行缓存,在后续数据读取时能够在同一张表中根据不同的数据选择不同的读取方式,在一定程度下减少主节点的压力。
46.进一步地,所述判断数据库主节点与从节点的同步是否存在延迟包括:
47.实时监控主节点与从节点同步的延迟情况,记录延时时间以及主节点的每秒事务数;
48.根据预设时间间隔,将所述延时时间以及主节点的每秒事务数缓存至所述代理层;
49.判断所述延时时间是否超过预设延时阈值,若是,则所述数据库主节点与从节点的同步存在延迟,否则,所述数据库主节点与从节点的同步不存在延迟。
50.由上述描述可知,通过实时记录主从节点的延时时间以及主节点的每秒事务数,能够根据延时时间是否超过预设延时阈值来判断数据库主节点与从节点的同步是否存在延迟,因此能够及时准确地获取到主从节点的延时情况,从而保证后续数据读取的准确性。
51.进一步地,所述根据延迟时间以及所述数据库的每秒事务数计算延迟数据量包括:
52.根据不同时间段的数据库每秒事物数和延迟时间,计算每一个时间段对应的延迟数据总量。
53.由上述描述可知,通过计算不同时间段的数据库每秒事物数和延迟时间,能够得到每一个时间段对应的延迟数据总量,便于后续对每一个时间段的数据进行针对分析。
54.进一步地,将所述延迟数据量中包含的数据与所述代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据包括:
55.将每一个时间段的所述延迟数据总量对应的从节点数据与所述代理层中缓存的所述更新数据进行比对,判断所述从节点数据与所述更新数据是否相同,若是,则所述时间段的数据是已同步数据,否则,所述时间段的数据是未同步数据。
56.由上述描述可知,将每一个时间段的延迟总量与代理层中本地缓存的更新数据比
较,可以得出延迟时间段内哪些数据是未同步成功的,哪些数据是已经同步成功的,以便于在各个时间段内代理层进一步合并处理数据并返回结果数据。
57.本发明的一种数据读取方法及终端,适用于主从分离数据库的数据读取,能够保证数据读取的准确性,以下通过具体实施方式进行说明:
58.实施例一
59.请参照图1,一种数据读取方法,包括步骤:
60.s1、建立数据库代理层,若接收到数据的变更操作时,则通过所述代理层对数据库主节点内的数据进行变更,并将变更后的更新数据缓存至所述代理层。
61.具体的,在本实施例中,存在一个mysql代理层proxy,所有客户端需要操作mysql数据库,都需通过该代理层进行统一的处理。
62.其中,所述若接收到数据的变更操作时,则通过所述代理层对数据库主节点内的数据进行变更,并将变更后的更新数据缓存至所述代理层包括:
63.接收到数据的变更操作,通过所述代理层在所述主节点中变更数据,并将变更后的所述更新数据的标识及其所在的数据库表的表名缓存至所述代理层。
64.具体的,在本实施例中,假设proxy中存在对于mysql集群中的1个主节点和1个从节点,数据库连接的主要操作方式为:当sql为新增、修改或者删除类型语句时,向主节点进行数据操作。
65.当为新增类型时,预先操作主节点,当操作成功时,会返回主键id,此时,再次写入本地内存;
66.当为修改或者删除类型时需要在代理层的本地缓存中记录一定数量的操作sql,缓存格式为:key(表名 数据主键id),value(可为空)。
67.s2、若接收到数据的读取操作时,判断数据库主节点与从节点的同步是否存在延迟,若是,则根据延迟时间以及所述数据库的每秒事务数计算延迟数据量,将所述延迟数据量中包含的数据与所述代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据。
68.其中,所述判断数据库主节点与从节点的同步是否存在延迟包括:
69.实时监控主节点与从节点同步的延迟情况,记录延时时间以及主节点的每秒事务数;
70.根据预设时间间隔,将所述延时时间以及主节点的每秒事务数缓存至所述代理层;
71.判断所述延时时间是否超过预设延时阈值,若是,则所述数据库主节点与从节点的同步存在延迟,否则,所述数据库主节点与从节点的同步不存在延迟。
72.具体的,存在一个监控程序,对于主从同步延迟进行实时监控,并记录每秒钟的主从同步延迟情况,其中,需要记录主从同步的延迟时间以及每秒钟主节点的写入tps(transactions per second,每秒事务数)数值;
73.代理层每隔一段时间将会同步监控程序中的信息至本地内存中。
74.根据主从同步延迟时间以及每秒tps,可以得到主从同步延迟数量,此时,可以默认该延迟数量之内的id都是未同步成功的,则该数量之外的id则可以继续从各个从节点进行数据的读取。
75.s3、通过所述代理层在所述从节点中读取所述已同步数据,在所述主节点中读取所述未同步数据。
76.在本实施例中,只有当主从同步存在延迟时,才会从缓存中读取数据,判断是否读主库,在非延迟时间段内,是不会再次查询缓存数据的。
77.因此,通过一个数据库代理层来屏蔽数据库对外的功能,客户端只与该代理层进行交互,由该代理层与数据库进行交互,并且能够在主从同步延迟场景下,通过代理层解决一部分延迟数据的查询处理,而非延迟数据则可以继续查询从节点,通过本实施例从一定程度上,能够解决客户端在从节点上将读取不到数据,或者读取到的为脏数据,造成业务异常的问题。
78.实施例二
79.一种数据读取方法,本实施例与实施例一的不同之处在于,进一步限定了如何确认未同步数据和已同步数据,具体的:
80.所述根据延迟时间以及所述数据库的每秒事务数计算延迟数据量包括:
81.根据不同时间段的数据库每秒事物数和延迟时间,计算每一个时间段对应的延迟数据总量。
82.其中,将所述延迟数据量中包含的数据与所述代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据包括:
83.将每一个时间段的所述延迟数据总量对应的从节点数据与所述代理层中缓存的所述更新数据进行比对,判断所述从节点数据与所述更新数据是否相同,若是,则所述时间段的数据是已同步数据,否则,所述时间段的数据是未同步数据。
84.具体的,在本实施例中,当主从数据库有主从同步延迟时,查询主从同步延迟时间为根据不同时间段的数据库写入tps与延迟时间,可以得出对应的延迟数据总量,根据不同时间段中从节点的延迟总量的数据与对应的代理层中本地缓存的更新数据进行比较,可以得出延迟时间段内哪些数据是未同步成功的,哪些数据是已经同步成功的,则当此延迟场景下,代理层能够进一步合并处理数据,并返回结果数据。
85.实施例三
86.请参照图2,一种数据读取终端,包括存储器、处理器以及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现实施例一或二的一种数据读取方法的各个步骤。
87.综上所述,本发明提供的一种数据读取方法及终端,通过建立数据库代理层,能够在接收到数据变更操作时,对主节点内的数据进行变更,并将变更后的更新数据保存在代理层中,其中,将变更后的更新数据的标识及其所在的数据库表的表名缓存至代理层,能够以数据为单位进行缓存,在后续数据读取时能够在同一张表中根据不同的数据选择不同的读取方式,在一定程度下减少主节点的压力;在接收到数据读取操作时,判断主从同步是否延迟,若是,则根据延迟时间以及数据库的每秒事务数计算延迟数据量,将延迟数据量中包含的数据与代理层中缓存的所述更新数据进行比对,得到未同步数据和已同步数据;因此,将每一个时间段的延迟总量与代理层中本地缓存的更新数据比较,可以得出延迟时间段内哪些数据是未同步成功的,哪些数据是已经同步成功的,以便于在各个时间段内代理层进一步合并处理数据并返回结果数据,避免客户端在从节点上读取不到数据或者读取到脏数
据,造成业务异常的现象,从而保证数据读取的准确性,同时,减少了主节点的读取量,在一定程度下减少主节点的压力。
88.以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献