提高数据库可用性的系统的制作方法

文档序号:27447733发布日期:2021-11-18 00:21阅读:90来源:国知局
提高数据库可用性的系统的制作方法

1.本发明属于数据库技术领域,具体涉及一种提高数据库可用性的系统。


背景技术:

2.数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
3.随着公司业务量的增长,分库分表数据库越来越多,如果应用直接访问数据库,存在安全隐患。相关技术中,现在主要采用集成中间件访问数据库或采用集成分库分表代码连接数据库,但是现有中间件代码复杂不利用维护,且不利于集中管理。


技术实现要素:

4.有鉴于此,本发明的目的在于克服现有技术的不足,提供一种提高数据库可用性的系统,以解决现有中间件代码复杂不利于维护的问题。
5.为实现以上目的,本发明采用如下技术方案:一种提高数据库可用性的系统,包括:中间件、haproxy服务器、proxy代理以及数据库,所述中间件、haproxy服务器、proxy代理以及数据库依次连接;
6.所述中间件用于接收所述客户端的数据访问请求;
7.所述haproxy服务器用于接收所述数据访问请求并转发至所述proxy代理;
8.所述proxy代理用于对所述数据访问请求中的数据进行分析并根据分析结果分发至所述数据库,对所述数据库中的分析结果进行判断,根据判断结果获取结果集;
9.所述数据库用于存储分析结果;
10.其中,所述haproxy服务器包括haproxy主服务器和haproxy从服务器,所述haproxy主服务器的虚拟ip地址挂载中间件以接收所述中间件发送的所述数据访问请求,在所述haproxy主服务器故障时,将所述haproxy从服务器的虚拟ip地址漂移挂载中间件。
11.进一步的,当所述haproxy主服务器故障恢复后,发送信号至所述haproxy从服务器,并作为备服务器。
12.进一步的,所述数据库包括多个分数据库;每个分数据库均包括主数据库和从数据库;
13.所述主数据库用于存储写语句;
14.所述从数据库用于存储读语句。
15.进一步的,对所述数据访问请求中的数据进行分析并根据分析结果分发至数据库,包括:
16.proxy代理接收数据访问请求,并对数据中的语句进行词法分析、语法分析以及拆
分语句,得到读语句和写语句;
17.将写语句分发至主数据库;
18.将读语句分发至从数据库。
19.进一步的,所述对所述数据库中的分析结果进行判断,根据判断结果获取结果集,包括:
20.当所述写语句或读语句为查询语句时,proxy代理根据预设的分库分表访问规则,判断主数据库与从数据库是否有延时,如果没有延时,则转发所述查询语句到从数据库进行查询,获取结果集;
21.当所述写语句或读语句为dml语句时,proxy代理根据预设的分库分表访问规则,将所述dml语句转发到与其对应的表中。
22.进一步的,所述数据库接收客户端所注册的客户端信息并存储。
23.进一步的,proxy代理在接收数据访问请求之前,还包括:
24.对所述haproxy服务器进行安全访问验证,如果通过验证则继续访问数据库,否则结束流程。
25.进一步的,所述结果集按原路反馈至所述客户端。
26.进一步的,所述proxy代理包括多个。
27.本发明采用以上技术方案,能够达到的有益效果包括:
28.本发明提供一种提高数据库可用性的系统,包括中间件、haproxy服务器、proxy代理以及数据库;中间件接收客户端的数据访问请求;haproxy服务器接收数据访问请求并转发至proxy代理;proxy代理对数据进行分析并根据分析结果分发至数据库,对数据库中的分析结果进行判断,根据判断结果获取结果集;数据库存储分析结果;其中,haproxy服务器包括haproxy主服务器和haproxy从服务器,haproxy主服务器的虚拟ip地址挂载中间件以接收中间件发送的数据访问请求,在haproxy主服务器故障时,将haproxy从服务器的虚拟ip地址漂移挂载中间件,以保证提供数据库服务。本发明采用中间件可以减轻代码复杂度,在线调整数据访问策略,使用ha代理,提高了ha功能,不依赖代码,可在线更改。
附图说明
29.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
30.图1为本发明提高数据库可用性的系统的结构示意图。
具体实施方式
31.为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
32.下面结合附图介绍本技术实施例中提供的一个具体的提高数据库可用性的系统。
33.如图1所示,本技术实施例中提供的提高数据库可用性的系统,包括:中间件、haproxy服务器、proxy代理以及数据库,所述中间件、haproxy服务器、proxy代理以及数据库依次连接;
34.所述中间件用于接收客户端的数据访问请求;
35.所述haproxy服务器用于接收所述数据访问请求并转发至proxy代理;
36.所述proxy代理用于对所述数据访问请求中的数据进行分析并根据分析结果分发至数据库,对数据库中的分析结果进行判断,根据判断结果获取结果集;
37.所述数据库用于存储分析结果;
38.其中,所述haproxy服务器包括haproxy主服务器和haproxy从服务器,所述haproxy主服务器的虚拟ip地址挂载中间件以接收所述中间件发送的数据访问请求,在所述haproxy主服务器故障时,将所述haproxy从服务器的虚拟ip地址漂移挂载中间件,以保证提供数据库服务。
39.提高数据库可用性的系统的工作原理为:haproxy服务器通过访问中间件vip,proxy代理接收应用缓存语句,并对应用语句做词法分析、语法分析、拆分语句,开启全局事务锁、分发语句到数据库,获取结果集,汇总排序返回给应用,结束分局事务锁。其中,haproxy服务器包括haproxy主服务器和haproxy从服务器,所述haproxy主服务器的虚拟ip地址挂载中间件以接收所述中间件发送的数据访问请求,在所述haproxy主服务器故障时,将所述haproxy从服务器的虚拟ip地址漂移挂载中间件,以保证提供数据库服务。例如:中间件vip的虚拟ip地址是192.168.0.100先挂在192.168.0.99与192.168.0.98,其中,192.168.0.100==>192.168.0.99为主。当192.168.0.99挂掉时,中间件vip进行切换192.168.0.100==>192.168.0.98,整个过程中代码不需要调整。保证整个系统继续访问数据库,提高haproxy服务器功能,以及提高了数据库的可用性。
40.本技术应用服务器采用集成中间件,通过分库分表的规则访问数据库,可以把统计的任务交给中间件来处理,可以减少资源的投入,达到降本增效的作用。
41.其中,proxy代理采用sharding proxy,sharding

proxy是一个分布式数据库中间件。
42.优选的,所述proxy代理包括多个。
43.可以理解的是,sharding proxy包括多个,如果sharding proxy为两个,则可根据语句的数量进行接收,例如根据语句的奇数和偶数进行接收。或者还可以设置为一个sharding proxy对多可接收预设数量的语句,当接收到足够数量的语句时,则下一个sharding proxy继续进行接收。
44.一些实施例中,当haproxy主服务器故障恢复后,发送信号至haproxy从服务器,并作为备服务器。
45.可以理解的是,当haproxy主服务器会自动重启,重启后发心跳包给,haproxy从服务器证明已正常运行,但是仍由haproxy从服务器继续运行,而haproxy主服务器作为备用。
46.一些实施例中,所述数据库包括多个分数据库;每个分数据库均包括主数据库和从数据库;
47.所述主数据库用于存储写语句;
48.所述从数据库用于存储读语句。
49.可以理解的是,多个数据库均是同一类型的数据库,可以都是mysql数据库或者都是oracle数据库。
50.一些实施例中,对所述数据访问请求中的数据进行分析并根据分析结果分发至数据库,包括:
51.proxy代理接收数据访问请求,并对数据中的语句进行词法分析、语法分析以及拆分语句,得到读语句和写语句;
52.将写语句分发至主数据库;
53.将读语句分发至从数据库。
54.具体的,proxy代理接收应用缓存语句,并对应用缓存语句做词法分析、语法分析、拆分语句,开启全局事务锁、分发语句到数据库;其中,写语句分发至主数据库,读语句分发至从数据库。
55.优选的,所述对数据库中的分析结果进行判断,根据判断结果获取结果集,包括:
56.当所述写语句或读语句为查询语句时,proxy代理根据预设的分库分表访问规则,判断主数据库与从数据库是否有延时,如果没有延时,则转发所述查询语句到从数据库进行查询,获取结果集;
57.当所述写语句或读语句为dml语句时,proxy代理根据预设的分库分表访问规则,将所述dml语句转发到与其对应的表中。
58.具体的,在读语句与写语句存储至数据库后,进行判断,根据预设的分库分表访问规则,判断主数据库与从数据库是否有延时,如果没有延时,则转发这个查询语句到从数据库进行查询,获取结果集;在从数据库中进行判断防止延时影响。
59.当所述写语句或读语句为dml语句时,proxy代理根据预设的分库分表访问规则,将所述dml语句转发到与其对应的表中,表为财务表。然后sharding proxy在获取结果集,汇总排序返回给应用,结束分局事务锁。
60.优选的,在整个系统运行之前,数据库接收客户端所注册的客户端信息并存储。
61.优选的,proxy代理在接收数据访问请求之前,还包括:
62.对haproxy服务器进行安全访问验证,如果通过验证则继续访问数据库,否则结束流程。
63.可以理解的是,数据库中间件服务器sharding proxy n,分对ha过来的访问,做一次简单的安全访问验证,验证用户信息与对象名,继续访问数据库。
64.优选的,所述结果集按原路反馈至客户端。
65.综上所述,本发明提供一种提高数据库可用性的系统,包括包括中间件、haproxy服务器、proxy代理以及数据库;中间件接收客户端的数据访问请求;haproxy服务器接收数据访问请求并转发至proxy代理;proxy代理对数据进行分析并根据分析结果分发至数据库,对数据库中的分析结果进行判断,根据判断结果获取结果集;数据库存储分析结果;其中,haproxy服务器包括haproxy主服务器和haproxy从服务器,haproxy主服务器的虚拟ip地址挂载中间件以接收中间件发送的数据访问请求,在haproxy主服务器故障时,将haproxy从服务器的虚拟ip地址漂移挂载中间件,以保证提供数据库服务。本发明采用中间件可以减轻代码复杂度,在线调整数据访问策略,使用ha代理,提高了ha功能,不依赖代码,可在线更改。除此之外,本技术还能提供白名单功能,保证安全访问;还可实现数据库级连
接负载均衡,除此之外,还可水平扩展。
66.可以理解的是,上述提供的系统实施例与上述的装置实施例对应,相应的具体内容可以相互参考,在此不再赘述。
67.本领域内的技术人员应明白,本技术的实施例可提供为系统、装置、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
68.本技术是参照根据本技术实施例的系统、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
69.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
70.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
71.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1