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

数据库读写分离的方法、系统、存储介质与流程

2022-02-24 18:32:34 来源:中国专利 TAG:


1.本公开涉及接口调用数据库读写安全领域,更具体地,本公开涉及提升数据库读写分离安全的数据库读写分离的方法、系统、存储介质。


背景技术:

2.随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的页面浏览量无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。
3.为了减轻系统数据库服务器的使用压力,现行系统很多采用多机同步数据,配置读写分离的架构模式。所谓读写分离是将数据库读写操作分散到不同的节点上。图1中示出了现有技术的读写分离系统的结构示意图。在图1中,服务器向数据库连接池发送读写的请求,而针对来自服务器的请求主要靠识别方法体的方法名进行切面表达式匹配的方式来识别该方法是读或写。然后在数据库连接池放置多个数据库连接,当识别出读方法的情况下就进入读库连接,当识别出写方法的情况下就进入写库连接。这里所谓的读库连接又可以称之为与从库连接,而写库连接又可以称之为与主库连接。写库与读库之间建立数据主从复制关系,读库监听写库的log-bin,当写库数据改变时,读库同步更新数据。


技术实现要素:

4.然而,在当前的技术中,读写方法主要靠代码的匹配识别,当代码出现误匹配时(人为因素较多,比如为读方法匹配上写识别、或漏匹配等),尤其当读方法后面紧跟写方法时,由于没有匹配正则,导致执行数据库交互时系统不切换数据库连接,从而导致数据修改在读库进行,例如新增一条数据,由此会使得从库数据日志 1。但是主库数据日志未增加,于是从库数据日志比主库日志多1。由于在读库中能看到这条数据,所以后面当用户再次修改这条数据时,因为写库中不存在这条数据而导致操作失败,之后当用户再次在主库中执行数据写操作时,主库数据日志 1,从库数据日志中已经有id一样的记录,所以无法复制主库的操作记录过来。数据的主从复制关系会被中断,导致后面操作的一系列数据紊乱。这时需要维护人员手工修复数据且重新建立数据的主从复制关系。由此后续需要繁琐的人工纠错维护,影响数据库读写分离,从而造成系统无法正常运行。
5.本公开是针对上述这样的问题而被提出的,提供一种能够提升数据库读写分离安全的数据库读写分离的方法、系统、存储介质。
6.在下文中给出了关于本公开的简要概述,以便提供关于本公开的一些方面的基本理解。但是,应当理解,这个概述并不是关于本公开的穷举性概述。它并不是意图用来确定本公开的关键性部分或重要部分,也不是意图用来限定本公开的范围。其目的仅仅是以简化的形式给出关于本公开的某些概念,以此作为稍后给出的更详细描述的前序。
7.根据本公开的数据库读写分离的方法,其特征在于,具有:
8.操作识别判定步骤,对操作是写操作还是读操作进行识别判定;
9.标注步骤,对在所述操作识别判定步骤中识别判定出的读操作和写操作分别标注读标记和写标记;
10.连接步骤,根据在所述标注步骤中对读操作和写操作标注的所述读标记和所述写标记,使被标注的操作分别进入与所述读标记和所述写标记对应的数据库;以及
11.执行步骤,在对应的数据库中执行与来自所述连接步骤的被标注的操作对应的数据操作。
12.根据本公开的数据库读写分离的系统,其特征在于,具备:
13.服务器,对操作是写操作还是读操作进行识别判定;
14.网关,对由所述服务器识别判定出的读操作和写操作分别标注读标记和写标记;
15.数据库连接池,根据由所述网关对读操作和写操作标注的所述读标记和所述写标记,使被标注的操作分别进入与所述读标记和所述写标记对应的数据库;以及
16.数据库,执行与所述数据库连接池发送来的被标注的操作对应的数据操作。
17.根据本公开的计算机可读取的存储介质,所述计算机可读取的存储介质存储有计算机程序,其特征在于,所述计算机程序使计算机执行数据库读写分离的方法,所述数据库读写分离的方法包括:
18.操作识别判定步骤,对操作是写操作还是读操作进行识别判定;
19.标注步骤,对在所述操作识别判定步骤中识别判定出的读操作和写操作分别标注读标记和写标记;
20.连接步骤,根据在所述标注步骤中对读操作和写操作标注的所述读标记和所述写标记,使被标注的操作分别进入与所述读标记和所述写标记对应的数据库;以及
21.执行步骤,在对应的数据库中执行与来自所述连接步骤的被标注的操作对应的数据操作。
22.根据本公开的一个或多个实施例,能够提升数据库读写分离安全。
附图说明
23.构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
24.参照附图,根据下面的详细描述,可以更清楚地理解本公开,其中:
25.图1示出了现有技术的读写分离系统的结构示意图。
26.图2是本公开的数据库读写分离系统的结构示意图。
27.图3是表示数据库的读写分离的方法的概略的流程图。
28.图4是将写操作错误地作为读操作来处理时的纠错流程图。
具体实施方式
29.现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
30.同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
31.以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
32.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
33.在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
34.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
35.图2是本公开的数据库的读写分离系统的结构示意图。以下,参照图2说明本公开的读写分离系统的结构。
36.在图2中,服务器201是用来接收来自客户端的读操作和写操作并对其进行管理的服务器。此外,服务器201还对用户建立不同的操作权限,例如使一个用户具有写权限,使其他用户只有读权限。服务器201还接收到的操作是对操作还是写操作进行识别判定,将识别判定的结果发送给网关202。在网关202中对识别判定出的读操作和写操作分别标注不同的标记。例如,在判断出是读操作的情况下,网关对读操作标注为s,在判断出是写操作的情况下,网关对写操作标注为m。当然,这里的标注不限于此,也可以是s、m以外的标记,只要是能够区分读操作和写操作的标记,则可以是任意标记。网关对读操作和写操作标注之后,将标注后的读操作或者写操作发送给数据库连接池203。数据库连接池203负责分配、管理和释放数据库连接。在数据库连接池203中,配置成拥有写权限的用户登录连接主库(写库),配置成只有读权限的用户登录连接从库(读库)。这样,数据库连接池203将读操作分配给从库205、206,将写操作分配给主库204。在主库204执行写操作,而在从库205、206执行读操作。此外,从库205、206监听例如写库204的log-bin,当写库数据改变时,读库同步更新数据,从而实现主从同步。这里从库的数量不限于2个,可以为任意个。
37.以下,参照图3说明本公开的数据库读写分离的方法的流程。图3是表示数据库的读写分离的方法的概略的流程图。
38.首先,在图3的步骤s301中,由服务器201建立不同操作权限的用户,例如,其中一个用户有写权限,其他用户只有读权限。当然,除此以外也可以是一个写权限用户,一个读权限用户,例如在有多个从库(读库)时,可以都使用这一个读权限用户连接访问。这里不作特别的限制。
39.接下来,在步骤s302中,数据库连接池203被配置成拥有写权限的用户登录连接主库(写库),配置只有读权限的用户登录连接从库(读库)。此处的配置可以防止写操作被分配错给从库时对从库进行误写入。即、保证了写操作不会在从库(读库)中被执行。从而保证了数据主从复制关系不会被破坏。
40.接下来在步骤s303中,由服务器201对操作类型进行识别,判定是写操作还是读操作。接下来在步骤s304中,网关202根据服务器201的判定结果,分别对不同操作进行不同标注。这里,对读操作标注为s,意为要在从库执行,对写操作标注为m,意为要在主库执行。然后在步骤s305中,数据库连接池203根据由网关202标注的内容来决定用户进入的库连接。当数据库连接池203判定出是被标注为s的读操作时,走读库连接进行数据操作,也即走从库连接来进行数据读操作。当数据库连接池203判定出是被标注为m的写操作时,走写库连
接进行数据操作,也即走主库连接来进行数据写操作。在走从库连接来进行数据读操作的情况下,进入步骤s306。在步骤s306中,在从库(从数据库)中进行读操作,然后自从库返回读出的数据。在走主库连接来进行数据写操作的情况下,进入步骤s307,在主库(主数据库)中进行写操作,从而主库的数据发生变化。这时,从库发现主库数据改变而复制主库数据。
41.当一旦出现标注错误的情况下,例如当写操作被误识别成读操作、或者未被识别而在上一步读操作后没有切换数据库连接的情况下,通过本公开能够进行纠错,从而使写操作不会在从库中被执行,而且会被再次分发到主库正确执行。
42.以下,使用图4来说明当标注错误时所进行的操作的详细内容。图4是将写操作错误地作为读操作来处理时的纠错流程图。在这里,省略说明步骤s301的数据库建立不同操作权限的步骤、步骤s302的数据库连接池配置的步骤以及步骤303的服务器对操作类型进行识别判定的步骤,而从步骤s304的由网关对操作进行标注的步骤开始详细展开。
43.首先,步骤s401中,由网关202对要在数据库执行的操作事先做标注。这里,网关202根据由服务器201判定出的操作来进行标注。在为写操作的情况下标注为m,意为要在主库执行,在为读操作的情况下标注为s,意为要在从库执行。
44.然后被标注m的操作在数据库连接池中走主库的连接进入主库来进行数据操作(步骤s407),被标注s的操作在数据库连接池中走从库的连接进入从库来进行数据操作(步骤s402)。其中,在被网关标注为s之后,在步骤s402中,由数据库连接池203根据其标注内容s将读操作送入从库。然后在步骤s403中,如果该标注正确的话,那么在从库执行该读操作,然后进入步骤s410,自从库返回被读出的数据。
45.如果该标注错误的话,即当写操作被误识别成读操作(或未被识别,在上一步读操作后没有切换数据库连接)在从库(读库)中执行的情况下,由于从库连接用户是没有写权限的,所以无法执行写操作。也即数据库执行权限写操作不会在从库执行。故而,执行写操作失败(步骤s404)。从库仍然对主库数据日志进行监听。接下来进入步骤s405,由数据库报错无写权限,例如发送报错信息。这里可以举例子为发行错误代码err1290。当然也可以是其他表示报错的代码,这里没有特别的限定。然后在步骤s406,服务器捕获自从库发出的例如表示没有写权限而无法执行写操作的异常的报错信息而通知网关该操作要二次执行。例如通过由服务器捕获该报错的代码来发现上述异常。之后通知网关202进行二次分发。然后重新从步骤s401开始二次标注,将该操作标注为m。
46.当操作被标注为m的情况下,进入步骤s407。其中,操作被标注为m的情况既包含写操作在最开始被网关202正确的标注为m的情况,也包含一开始写操作被错误标记为s,被发现出错之后被服务器通知网关202为了二次分发而被标注为m的情况。在步骤s407根据被标注的内容,数据库连接池203将其送入主库连接,然后进入步骤s408。在步骤s408中,在主库中执行数据写操作,主库数据被修改。然后进入步骤s409,从库监听到主库数据发生变化而更新自己的数据。读写分离机制仍然正常运行。
47.根据上述公开,避免繁琐的人工纠错维护,写操作不会在从库中被执行,而且会被再次分发到主库正确执行,数据主从复制关系不会被破坏,数据库读写分离机制不会受影响,系统仍然会正常运行。
48.由于本发明通过网关进行了标注,所以当发现错误之后,可以不用再次重新判断,而通过改变标注的内容就能够改变经由数据库连接池进入的数据库,从而可以减少发现错
误之后再次判断操作类型的工夫和时间。此外,由于对用户分配了不同的权限,从而能够防止发生现有技术中存在的在从库进行了写操作而导致数据主从关系被破坏的问题。在本发明中增加了网关标注,使得数据库的读写分离安全性提高。
49.应当理解,本说明书中“实施例”或类似表达方式的引用是指结合该实施例所述的特定特征、结构、或特性系包括在本公开的至少一具体实施例中。因此,在本说明书中,“在本公开的实施例中”及类似表达方式的用语的出现未必指相同的实施例。
50.本领域技术人员应当知道,本公开被实施为一系统、方法或作为计算机程序产品的计算机可读媒体(例如非瞬态存储介质)。因此,本公开可以实施为各种形式,例如完全的硬件实施例、完全的软件实施例(包括固件、常驻软件、微程序代码等),或者也可实施为软件与硬件的实施形式,在以下会被称为“电路”、“模块”或“系统”。此外,本公开也可以任何有形的媒体形式实施为计算机程序产品,其具有计算机可使用程序代码存储于其上。
51.本公开的相关叙述参照根据本公开具体实施例的系统、方法及计算机程序产品的流程图和/或框图来进行说明。可以理解每一个流程图和/或框图中的每一个块,以及流程图和/或框图中的块的任何组合,可以使用计算机程序指令来实施。这些计算机程序指令可供通用型计算机或特殊计算机的处理器或其它可编程数据处理装置所组成的机器来执行,而指令经由计算机或其它可编程数据处理装置处理以便实施流程图和/或框图中所说明的功能或操作。
52.在附图中显示根据本公开各种实施例的系统、方法及计算机程序产品可实施的架构、功能及操作的流程图及框图。因此,流程图或框图中的每个块可表示一模块、区段、或部分的程序代码,其包括一个或多个可执行指令,以实施指定的逻辑功能。另外应当注意,在某些其它的实施例中,块所述的功能可以不按图中所示的顺序进行。举例来说,两个图示相连接的块事实上也可以同时执行,或根据所涉及的功能在某些情况下也可以按图标相反的顺序执行。此外还需注意,每个框图和/或流程图的块,以及框图和/或流程图中块的组合,可藉由基于专用硬件的系统来实施,或者藉由专用硬件与计算机指令的组合,来执行特定的功能或操作。
53.以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
再多了解一些

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

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

相关文献