CN104462488B - 数据库的高可用解决方法和装置 - Google Patents
数据库的高可用解决方法和装置 Download PDFInfo
- Publication number
- CN104462488B CN104462488B CN201410800009.0A CN201410800009A CN104462488B CN 104462488 B CN104462488 B CN 104462488B CN 201410800009 A CN201410800009 A CN 201410800009A CN 104462488 B CN104462488 B CN 104462488B
- Authority
- CN
- China
- Prior art keywords
- connection
- address
- client
- lvs
- port numbers
- 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 63
- 238000012360 testing method Methods 0.000 claims description 19
- 230000004048 modification Effects 0.000 claims description 10
- 238000012986 modification Methods 0.000 claims description 10
- 238000001514 detection method Methods 0.000 claims description 7
- 238000006243 chemical reaction Methods 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001035 drying Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000005303 weighing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
Abstract
本发明实施例提供了一种数据库的高可用解决方法和装置,属于计算机领域。该方法通过在接收传入的LVS IP地址后,将LVS IP地址转换为对应数据库的IP地址,使得对应数据库驱动可根据转换得到的对应数据库的IP地址在连接管理器中查找与其对应的连接,进而复用该连接,解决了在LVS与对应数据库在结合使用时,数据库驱动不能查找与LVS IP地址对应的连接从而需要重新建立连接的问题,进而非常有效的减少了客户端对数据库进行访问时产生的性能开销,避免了对应的数据库存在大量并发请求时由于服务连接数满而无法提供服务的问题。
Description
技术领域
本发明涉及计算机领域,具体涉及一种数据库的高可用解决方法和装置。
背景技术
MongoDB,是目前在IT行业非常流行的一种非关系型数据库(NoSQL),其灵活的数据存储方式,备受当前IT从业人员的青睐。随着互联网Web2.0网站的兴起,NoSQL在国内掀起一阵热潮,其中风头最劲的莫过于MongoDB了。越来越多的业界公司已经将MongoDB投入实际的应用环境,很多创业团队也将MongoDB作为自己的首选数据库,创造出非常之多的移动互联网应用。
在目前的MongoDB数据库中,客户端与数据库是直接连接的,客户端向MongoDB数据库请求某种服务时,直接向对应的MongoDB数据库的IP地址发送连接请求,并在连接建立后获取所需数据。
当客户端第一次访问MongoDB数据库时,会为客户端建立连接,并将建立好的连接保存在MongoDB驱动的连接管理器中,当客户端第二次访问时,即可对连接管理器中已保存的连接进行复用。
但是,当对于MongoDB数据库的数据节点发生变化时,会造成已有连接无法复用,从而因连接失败而需要重新建立针对数据节点的连接的操作,产生大量的性能消耗以及重复操作。而目前并未有有效技术能够解决这一技术问题。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据库的高可用解决方法和相应地装置。
依据本发明的一个方面,提供了一种数据库的高可用解决方法,包括:
接收客户端传入的LVS(Linux Virtual Server,Linux虚拟服务器)IP地址、端口号,并通过LVS将所述LVS IP地址、端口号解析为对应数据库的IP地址、端口号;
检测连接管理器中是否存在与所述对应数据库的IP地址、端口号对应的连接;以及
当存在与所述对应数据库的IP地址、端口号对应的连接时,将所述连接返回给所述客户端;
其中,所述连接用于所述客户端访问所述对应数据库。
可选地,当不存在与所述对应数据库的IP地址、端口号对应的连接时,所述方法进一步包括:
创建与所述LVS IP地址、端口号对应的第一连接,并将所述第一连接注册在所述连接管理器中。
可选地,在所述连接管理器中建立与所述LVS IP地址、端口号对应的第一连接之后,所述方法进一步包括:
确定所述LVS IP地址是否与所述对应数据库的IP地址匹配;以及
当确定不匹配后,删除所述第一连接。
可选地,在确定所述LVS IP地址与所述对应数据库的IP地址不匹配后,所述方法进一步包括:
获取所述对应数据库中的全部可用数据节点的IP地址、端口号;
检测所述连接管理器中是否存在与所述可用数据节点的IP地址、端口号对应的连接;以及
当不存在时,创建与每一所述可用数据节点的IP地址、端口号对应的第二连接,并将所述第二连接注册在所述连接管理器中。
可选地,所述方法进一步包括:
根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端。
可选地,所述数据库为主从式结构,且所述根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端的步骤进一步包括:
当所述客户端业务为数据写入操作或数据修改操作时,将对应于主数据节点的第二连接返回给所述客户端;以及
当所述客户端业务为数据读取操作时,根据读优先策略将对应于主数据节点或者从数据节点的第二连接返回给所述客户端。
可选地,根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端之后,所述方法进一步包括:
测试返回的所述第二连接对应的数据节点是否可用;
若所述数据节点不可用,则将所述数据节点加入到预设的黑名单中。
依据本发明的一个方面,还提供了一种数据库的高可用解决装置,包括:
转换模块,适于接收客户端传入的LVS IP地址、端口号,并通过LVS将所述LVS IP地址、端口号解析为对应数据库的IP地址、端口号;
连接管理模块,适于检测连接管理器中是否存在与所述对应数据库的IP地址、端口号对应的连接;
结果返回模块,适于当存在与所述对应数据库的IP地址、端口号对应的连接时,将所述连接返回给所述客户端;
其中,所述连接用于所述客户端访问所述对应数据库。
可选地,所述装置进一步包括:
第一创建模块,适于当不存在与所述对应数据库的IP地址、端口号对应的连接时,创建与所述LVS IP地址、端口号对应的第一连接,并将所述第一连接注册在所述连接管理器中。
可选地,所述装置进一步包括地址匹配模块,所述地址匹配模块,包括:
判断单元,适于在所述连接管理器中建立与所述LVS IP地址、端口号对应的第一连接之后,确定所述LVS IP地址是否与所述对应数据库的IP地址匹配;
删除单元,用于在所述判断单元确定不匹配后,删除所述第一连接。
可选地,所述装置进一步包括第二创建模块,所述第二创建模块,包括:
获取单元,适于在确定所述LVS IP地址与所述对应数据库的IP地址不匹配后,获取所述对应数据库中的全部可用数据节点的IP地址、端口号;
检测单元,适于检测所述连接管理器中是否存在与所述可用数据节点的IP地址、端口号对应的连接;
创建单元,适于当不存在时,创建与每一所述可用数据节点的IP地址、端口号对应的第二连接,并将所述第二连接注册在所述连接管理器中。
可选地,所述第二创建模块进一步包括:
返回单元,适于根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端。
可选地,所述数据库为主从式结构,且所述返回单元适于按照如下方式将对应于所述客户端业务的所述第二连接返回给所述客户端:
当所述客户端业务为数据写入操作或数据修改操作时,将对应于主数据节点的第二连接返回给所述客户端;以及
当所述客户端业务为数据读取操作时,根据读优先策略将对应于主数据节点或者从数据节点的第二连接返回给所述客户端。
可选地,所述装置进一步包括测试模块,所述测试模块包括:
测试单元,适于根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端之后,测试返回的所述第二连接对应的数据节点是否可用;
记录单元,适于当所述数据节点不可用时,将所述数据节点加入到预设的黑名单中。
本发明实施例提供了一种数据库的高可用解决方法和装置,通过在接收传入的LVS IP地址后,将LVS IP地址转换为对应数据库的IP地址,使得对应数据库驱动可根据转换得到的对应数据库的IP地址在连接管理器中查找与其对应的连接,进而复用该连接,解决了在LVS与对应数据库在结合使用时,数据库驱动不能查找与LVS IP地址对应的连接从而需要重新建立连接的问题,进而非常有效的减少了客户端对数据库进行访问时产生的性能开销,避免了对应的数据库存在大量并发请求时由于服务连接数满而无法提供服务的问题。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明一个实施例提供的客户端与数据库的访问结构示意图;
图2是本发明一个实施例提供的一种MongoDB数据库的高可用解决方法流程示意图;
图3是现有的MongoDB数据库的访问系统的详细架构示意图;
图4是本发明一个实施例提供的一种改进的MongoDB数据库的访问系统的架构示意图;
图5是本发明一个实施例提供的一种MongoDB数据库的高可用解决方法具体流程示意图;
图6是本发明一个实施例提供的一种数据库的高可用解决装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应该被这里阐述的实施例所限制。相反,提供这些实施例是为了能够透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种使数据库高可用的解决方案,其可以通过在客户端和数据库之间建立连接控制装置(亦可称为中间层)或通过对连接管理器进行改进来实现。其中,该连接控制装置可以通过部署在客户端与数据库之间的服务器来实现。
LVS是一个虚拟的服务器集群系统,其中IP负载均衡技术是在负载调度器的实现技术中效率最高的。在本发明中,MongoDB数据库集群的部署中采用LVS+MongoDB的方式。如图1所示,为本发明提供的客户端与数据库的访问结构示意图。
应可理解,本发明并不限定数据库的类型,只要可以应用本发明下述方案以达到高可用目的的数据库都适用于此。此外,所述连接控制装置也不限定于通过服务器来实现,本领域技术人员在阅读本发明的基础上亦可以其他方式来实施所述的连接控制装置,其皆应涵盖在本发明的范围内。
以下,将以MongoDB数据库为例说明本发明的技术方案:
实施例一
本发明实施例提供了一种MongoDB数据库的高可用解决方法。其可以通过对连接管理器进行改进实现,使得LVS的IP地址也可以复用连接管理器中的已有连接,从而达到MongoDB数据库的访问系统的高可用。
图2是本实施例提供的一种MongoDB数据库的高可用解决方法流程图。该方法具体包括步骤S202至步骤S206。
S202:接收客户端传入的LVS IP地址、端口号,并通过LVS将该LVS IP地址、端口号解析为MongoDB IP地址、端口号。
S204:检测连接管理器中是否存在与MongoDB IP地址、端口号对应的连接。
S206:当存在与MongoDB IP地址、端口号对应的连接时,将连接返回给客户端。
其中,连接用于客户端连接MongoDB数据库。
本发明实施例提供了一种MongoDB数据库的高可用解决方法,在接收传入的LVSIP地址后,将LVS IP地址转换为对应的MongoDB IP地址,使得MongDB驱动可根据转换得到的MongoDB IP地址在连接管理器中查找与其对应的连接,进而复用该连接,解决了在LVS与MongoDB数据库结合使用时,MongDB驱动不能查找与LVS IP地址对应的连接从而需要重新建立连接的问题,进而非常有效的减少了客户端对MongoDB数据库进行访问时产生的性能开销,避免了MongoDB数据库存在大量并发请求时由于MongoDB服务连接数满而无法提供服务的问题。
实施例二
本实施例为上述实施例一的一种具体应用场景,通过本实施例,能够更加清楚、具体地阐述本发明所提供的方法。
为了能够更加清楚的对本发明的改进进行说明,在对本实施例进行说明之前,首先说明一下现有的MongoDB数据库的访问系统的架构。图3所示为现有的MongoDB数据库的访问系统的详细架构图,包括:
客户端、LVS、MongoDB驱动和MongoDB数据库。
下面分别对客户端、LVS、MongoDB驱动和MongoDB数据库进行介绍。
客户端即为对MongoDB数据库发起访问的设备,可以是客户端或其他具有前端业务的终端。
例如:当用户手机中内置的某个APP需要调取后台数据的时候,可能会向MongoDB数据库发起访问请求;
或,当用户进行网络游戏时,网络游戏的服务器需要在MongoDB数据库中调取多个用户的数据。
LVS为虚拟的服务器集群系统,可负责对于MongoDB数据库的集群服务器的负载均衡,可以将来自不同客户端的访问请求分配到MongoDB数据库的集群服务器中的不同节点上,使得MongoDB数据库的集群服务器中的某一个节点不会因为负载过大而导致宕机。
MongoDB驱动,负责为建立客户端与MongoDB数据库的集群服务器中的节点建立连接,并保存可用连接,以供客户端再次访问MongoDB数据库时进行复用。其中,MongoDB驱动中包括有连接管理器,用于保存在已建立的连接。
其中,需要说明的是,MongoDB驱动在连接管理器中保存连接时,是根据MongoDB数据库的集群服务器中的节点的IP地址(后续简称MongoDB IP地址)与连接的对应关系进行保存的。
MongoDB数据库,是一种关系型数据库,可以用于存储较复杂的数据类型。在本实施例中,MongoDB数据库可以部署在一台服务器上,也可以是部署在集群服务器上,其中,每台用于部署MongoDB数据库的服务器均可以认为是一个数据库节点。
但是,由于在图3所示的MongoDB数据库的访问系统中使用的是LVS,其接收客户端的访问请求后,LVS向MongoDB驱动传递的为LVS IP地址,而连接管理器中保存的为MongoDBIP地址与连接的对应关系,所以对于该客户端,即使连接管理器中保存有连接,由于不能识别LVS IP,也不能找到连接进行复用。因此,MongoDB驱动需要为该客户端重新建立连接,而在MongoDB数据库的访问系统中,每次建立连接需要耗费大量的计算资源当对于MongoDB数据库的并发访问量过高时,就有可能造成MongoDB服务连接数满而无法提供服务的问题。
为了解决上述问题,本发明实施例提供了一种解决方案,如图4所示,为本发明实施例提供的一种改进的MongoDB数据库的访问系统的架构图,在客户端和MongoDB数据库之间增加转换模块,可以将传入的LVS IP地址转换为MongoDB IP地址,从而使用复用连接管理器中的连接。从而大量减少了MongoDB数据库的访问系统的计算量,最大限度的避免并发时导致的宕机问题。本领域技术人员应可理解,所述转换模块可以独立于MongoDB驱动,或驻留于MongoDB驱动中。进一步来说,若转换模块驻留在MongoDB驱动中,其也可以独立于连接管理器,或位于连接管理器中。虽然图4中所示转换模块位于MongoDB驱动中且独立于连接管理器,但本发明并不以此为限。
为了更清楚的说明本发明,下面以在改进的MongoDB数据库的访问架构下客户端访问MongoDB数据库的方法进行详细说明。
图5是本发明一个实施例提供的一种MongoDB数据库的高可用解决具体方法流程图,所述方法可应用于图4所示的装置,该方法包括步骤S501至S506。
首先,执行步骤S501,客户端通过LVS发起向MongoDB数据库的访问请求。
其中,对于MongoDB数据库的访问请求,可以是针对任意MongoDB数据库所能提供的服务的请求。
例如:
当客户端为浏览器时,可能是用户登录网络存储器对应的网站,发起的查询或下载个人数据的请求;
当客户端为游戏程序时,则可能获取用户在游戏中的人物的属性信息、对战等的数据请求。
具体地,在客户端通过LVS发起向MongoDB数据库的访问请求时,由LVS负责执行负载均衡操作,将用户的请求转向其分配的LVS IP地址、端口号。
在LVS接收到用户对MongoDB数据库的访问请求后,将该用户的请求转向对应的LVS IP地址、端口号,执行步骤S502,向MongoDB驱动传入携带有LVS IP地址、端口号的访问请求。
其中,在客户端与MongoDB数据库的集群服务器的节点建立连接时,IP地址和端口号为两个必要元素,除此之外,还可以包括与访问请求相关联的用户名、密码等。
MongoDB驱动接收到传入的LVS IP地址后,执行步骤S503,MongoDB通过LVS将上述LVS IP地址、端口号转换为MongoDB IP地址、端口号。
其中,本步骤S503所执行的操作即由图3所示的转换模块完成。在现有技术情况下,当传入MongoDB驱动中的为LVS IP地址时,MongoDB驱动是无法根据其在连接管理器中查询连接的,会将针对该LVS IP地址的请求建立新的连接,执行一个新的连接建立流程。
在本发明中实施例中,在LVS中保存有LVS IP地址和MongoDB IP地址的对应关系,因此,转换模块可以通过LVS将LVS IP地址解析为MongoDB IP地址。
在转换得到与LVS IP地址、端口号对应的MongoDB IP地址和端口号之后,执行步骤S504,MongoDB驱动检测连接管理器中是否保存有与该MongoDB IP地址、端口号对应的连接。
若在连接管理器中保存有与该MongoDB IP地址、端口号对应的连接时,执行步骤S505,将该连接返回给客户端,客户端根据该连接进行读写操作。
若在连接管理器中未保存有与该MongoDB IP地址、端口号对应的连接时,执行步骤S506,为传入的LVS IP地址、端口号启动建立新的连接的流程。
其中,为传入的LVS IP地址、端口号建立新的连接的方法具体可以包括如下步骤:
(1)创建与传入的LVS IP地址、端口号对应的第一连接,并将该第一连接注册在连接管理器中。
(2)检测传入的LVS IP地址是否与MongoDB的IP地址匹配。
其中,检测传入的LVS IP地址是否与MongoDB的IP地址匹配的方式可以为:
获取MongoDB中的全部节点的IP地址,判断传入的LVS IP地址是否在其中,如果不在,则说明不匹配。
在本实施例中,由于传入的为LVS IP地址,因此不匹配,此时可执行步骤(3)。
(3)删除上述创建的第一连接。
(4)获取MongoDB中的全部可用数据节点的IP地址和端口号。
(5)检测连接管理器中是否存在与上述可用数据节点的IP地址和端口号对应的连接。
在本实施例中,若存在对应的连接,则将该连接返回给客户端,若不存在,则执行步骤(6)。
(6)创建与每一可用数据节点的IP地址、端口号对应的第二连接,并将第二连接注册在连接管理器中。
(7)根据预设条件将对应于客户端业务的第二连接返回给客户端。
其中,由于数据库一般采用主从结构,因此,且该步骤(7)可以按照如下方式进行:
当客户端业务为数据写入操作或数据修改操作时,将对应于主数据节点的第二连接返回给所述客户端;
当客户端业务为数据读取操作时,根据读优先策略将对应于主数据节点或者从数据节点的第二连接返回给所述客户端。
在步骤S506为上述MongoDB IP地址、端口号建立新的连接之后,本方法还可以包括如下步骤:
将该新的连接(也即上述步骤中的第二连接)保存到连接管理器中,供下次该客户端进行复用。
进一步地,在MongoDB数据库的使用过程中,由于机器故障等会造成集群服务器中的某一节点不可使用,这时就会影响连接管理器中的连接的复用,因此,在将连接返回给客户端之后,本方法还包括:
测试与所述连接中的数据节点是否可用;
若连接可以,则建立客户端与该数据节点之间的连接;
若连接不可用,则将该数据节点加入到黑名单中,并由连接管理器为该客户端重新建立新的连接。
其中,在测试连接中的数据节点是否可用时,可以采用向ping该数据节点的方法,观测其是否正常返回数据。
更进一步地,若该数据节点恢复可用状态时,则将其从黑名单中删除。
本发明实施例提供了一种MongoDB数据库的高可用解决方法,在接收传入的LVSIP地址后,将LVS IP地址转换为对应的MongoDB IP地址,使得MongDB驱动可根据转换得到的MongoDB IP地址在连接管理器中查找与其对应的连接,进而复用该连接,解决了在LVS与MongoDB数据库结合使用时,MongDB驱动不能查找与LVS IP地址对应的连接从而需要重新建立连接的问题,进而非常有效的减少了客户端对MongoDB数据库进行访问时产生的性能开销,避免了MongoDB数据库存在大量并发请时求由于MongoDB服务连接数满而无法提供服务的问题。
实施例三
图6是本发明一个实施例提供的一种数据库的高可用解决装置结构框图,该装置600包括:
转换模块610,适于接收客户端传入的LVS IP地址、端口号,并通过Linux虚拟服务器LVS将LVS IP地址、端口号解析为对应数据库的IP地址、端口号;
连接管理模块620,适于检测连接管理器中是否存在与对应数据库的IP地址、端口号对应的连接;
结果返回模块630,适于当存在与对应数据库的IP地址、端口号对应的连接时,将连接返回给客户端;
其中,上述连接用于客户端访问对应的数据库。
可选地,该装置600进一步包括:
第一创建模块640,适于当不存在与对应数据库的IP地址、端口号对应的连接时,创建与LVS IP地址、端口号对应的第一连接,并将第一连接注册在连接管理器中。
可选地,该装置进一步包括地址匹配模块650,该地址匹配模块具体包括:
判断单元651,适于在连接管理器中建立与上述LVS IP地址、端口号对应的第一连接之后,确定该LVS IP地址是否与对应数据库的IP地址匹配;
删除单元652,用于在判断单元651确定不匹配后,删除该第一连接。
可选地,该装置进一步包括第二创建模块660,该第二创建模块660包括:
获取单元661,适于在确定上述传入的LVS IP地址与对应数据库的IP地址不匹配后,获取对应数据库中的全部可用数据节点的IP地址、端口号;
检测单元662,适于检测连接管理器中是否存在与可用数据节点的IP地址、端口号对应的连接;
创建单元663,适于当不存在时,创建与每一所述可用数据节点的IP地址、端口号对应的第二连接,并将第二连接注册在连接管理器中;
可选地,第二创建模块660进一步包括:
返回单元664,适于根据预设条件将对应于客户端业务的第二连接返回给客户端。
可选地,上述数据库为主从式结构,且返回单元664适于按照如下方式将对应于客户端业务的第二连接返回给客户端:
当客户端业务为数据写入操作或数据修改操作时,将对应于主数据节点的第二连接返回给客户端;以及
当客户端业务为数据读取操作时,根据读优先策略将对应于主数据节点或者从数据节点的第二连接返回给客户端。
可选地,该装置600进一步包括测试模块670,测试模块670包括:
测试单元671,适于根据预设条件将对应于客户端业务的第二连接返回给客户端之后,测试返回的第二连接对应的数据节点是否可用;
记录单元672,适于当数据节点不可用时,将数据节点加入到预设的黑名单中。
本领域技术人员应可理解,上述装置600可以应用/执行本文前述的各种方法,其具体细节在此不另赘述。
本发明实施例提供了一种数据库的高可用解决装置,通过在接收传入的LVS IP地址后,将LVS IP地址转换为对应数据库的IP地址,使得对应数据库驱动可根据转换得到的对应数据库的IP地址在连接管理器中查找与其对应的连接,进而复用该连接,解决了在LVS与对应数据库在结合使用时,数据库驱动不能查找与LVS IP地址对应的连接从而需要重新建立连接的问题,进而非常有效的减少了客户端对数据库进行访问时产生的性能开销,避免了对应的数据库存在大量并发请求时由于服务连接数满而无法提供服务的问题。。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的数据库的高可用解决装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
本发明实施例提供了A1.一种数据库的高可用解决方法,包括:接收客户端传入的LVS IP地址、端口号,并通过Linux虚拟服务器LVS将所述LVS IP地址、端口号解析为对应数据库的IP地址、端口号;检测连接管理器中是否存在与所述对应数据库的IP地址、端口号对应的连接;以及,当存在与所述对应数据库的IP地址、端口号对应的连接时,将所述连接返回给所述客户端;其中,所述连接用于所述客户端访问所述对应数据库。A2.根据A1所述的方法,其中,当不存在与所述对应数据库的IP地址、端口号对应的连接时,所述方法进一步包括:创建与所述LVS IP地址、端口号对应的第一连接,并将所述第一连接注册在所述连接管理器中。A3.根据A2所述的方法,其中,在所述连接管理器中建立与所述LVS IP地址、端口号对应的第一连接之后,所述方法进一步包括:确定所述LVS IP地址是否与所述对应数据库的IP地址匹配;以及当确定不匹配后,删除所述第一连接。A4.根据A3所述的方法,其中,在确定所述LVS IP地址与所述对应数据库的IP地址不匹配后,所述方法进一步包括:获取所述对应数据库中的全部可用数据节点的IP地址、端口号;检测所述连接管理器中是否存在与所述可用数据节点的IP地址、端口号对应的连接;以及,当不存在时,创建与每一所述可用数据节点的IP地址、端口号对应的第二连接,并将所述第二连接注册在所述连接管理器中。A5.根据A4所述的方法,其中,所述方法进一步包括:根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端。A6.根据A5所述的方法,其中,所述数据库为主从式结构,且所述根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端的步骤进一步包括:当所述客户端业务为数据写入操作或数据修改操作时,将对应于主数据节点的第二连接返回给所述客户端;以及,当所述客户端业务为数据读取操作时,根据读优先策略将对应于主数据节点或者从数据节点的第二连接返回给所述客户端。A7.根据A5或A6项所述的方法,其中,根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端之后,所述方法进一步包括:测试返回的所述第二连接对应的数据节点是否可用;若所述数据节点不可用,则将所述数据节点加入到预设的黑名单中。
本发明实施例提供了B8.一种数据库的高可用解决装置,包括:转换模块,适于接收客户端传入的LVS IP地址、端口号,并通过LVS将所述LVS IP地址、端口号解析为对应数据库的IP地址、端口号;连接管理模块,适于检测连接管理器中是否存在与所述对应数据库的IP地址、端口号对应的连接;结果返回模块,适于当存在与所述对应数据库的IP地址、端口号对应的连接时,将所述连接返回给所述客户端;其中,所述连接用于所述客户端访问所述对应数据库。B9.根据B8所述的装置,其中,所述装置进一步包括:第一创建模块,适于当不存在与所述对应数据库的IP地址、端口号对应的连接时,创建与所述LVS IP地址、端口号对应的第一连接,并将所述第一连接注册在所述连接管理器中。B10.根据B9所述的装置,其中,所述装置进一步包括地址匹配模块,所述地址匹配模块,包括:判断单元,适于在所述连接管理器中建立与所述LVS IP地址、端口号对应的第一连接之后,确定所述LVS IP地址是否与所述对应数据库的IP地址匹配;删除单元,用于在所述判断单元确定不匹配后,删除所述第一连接。B11.根据B10所述的装置,其中,所述装置进一步包括第二创建模块,所述第二创建模块,包括:获取单元,适于在确定所述LVS IP地址与所述对应数据库的IP地址不匹配后,获取所述对应数据库中的全部可用数据节点的IP地址、端口号;检测单元,适于检测所述连接管理器中是否存在与所述可用数据节点的IP地址、端口号对应的连接;创建单元,适于当不存在时,创建与每一所述可用数据节点的IP地址、端口号对应的第二连接,并将所述第二连接注册在所述连接管理器中。B12.根据B11所述的装置,其中,所述第二创建模块进一步包括:返回单元,适于根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端。B13.根据B12所述的装置,其中,所述数据库为主从式结构,且所述返回单元适于按照如下方式将对应于所述客户端业务的所述第二连接返回给所述客户端:当所述客户端业务为数据写入操作或数据修改操作时,将对应于主数据节点的第二连接返回给所述客户端;以及,当所述客户端业务为数据读取操作时,根据读优先策略将对应于主数据节点或者从数据节点的第二连接返回给所述客户端。B14.根据B12或B13项所述的装置,其中,所述装置进一步包括测试模块,所述测试模块包括:测试单元,适于根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端之后,测试返回的所述第二连接对应的数据节点是否可用;记录单元,适于当所述数据节点不可用时,将所述数据节点加入到预设的黑名单中。
Claims (14)
1.一种数据库的高可用解决方法,包括:
接收客户端传入的LVS IP地址、端口号,并通过Linux虚拟服务器LVS将所述LVS IP地址、端口号解析为对应数据库的IP地址、端口号;
检测连接管理器中是否存在已建立的与所述对应数据库的IP地址、端口号对应的连接;以及
当存在与所述对应数据库的IP地址、端口号对应的连接时,将所述连接返回给所述客户端;
其中,所述连接用于所述客户端访问所述对应数据库。
2.根据权利要求1所述的方法,其中,当不存在与所述对应数据库的IP地址、端口号对应的连接时,所述方法进一步包括:
创建与所述LVS IP地址、端口号对应的第一连接,并将所述第一连接注册在所述连接管理器中。
3.根据权利要求2所述的方法,其中,在所述连接管理器中建立与所述LVS IP地址、端口号对应的第一连接之后,所述方法进一步包括:
确定所述LVS IP地址是否与所述对应数据库的IP地址匹配;以及
当确定不匹配后,删除所述第一连接。
4.根据权利要求3所述的方法,其中,在确定所述LVS IP地址与所述对应数据库的IP地址不匹配后,所述方法进一步包括:
获取所述对应数据库中的全部可用数据节点的IP地址、端口号;
检测所述连接管理器中是否存在与所述可用数据节点的IP地址、端口号对应的连接;以及
当不存在时,创建与每一所述可用数据节点的IP地址、端口号对应的第二连接,并将所述第二连接注册在所述连接管理器中。
5.根据权利要求4所述的方法,其中,所述方法进一步包括:
根据预设条件将对应于客户端业务的所述第二连接返回给所述客户端。
6.根据权利要求5所述的方法,其中,所述数据库为主从式结构,且所述根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端的步骤进一步包括:
当所述客户端业务为数据写入操作或数据修改操作时,将对应于主数据节点的第二连接返回给所述客户端;以及,
当所述客户端业务为数据读取操作时,根据读优先策略将对应于主数据节点或者从数据节点的第二连接返回给所述客户端。
7.根据权利要求5或6项所述的方法,其中,根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端之后,所述方法进一步包括:
测试返回的所述第二连接对应的数据节点是否可用;
若所述数据节点不可用,则将所述数据节点加入到预设的黑名单中。
8.一种数据库的高可用解决装置,包括:
转换模块,适于接收客户端传入的LVS IP地址、端口号,并通过LVS将所述LVS IP地址、端口号解析为对应数据库的IP地址、端口号;
连接管理模块,适于检测连接管理器中是否存在与所述对应数据库的IP地址、端口号对应的连接;
结果返回模块,适于当存在已建立的与所述对应数据库的IP地址、端口号对应的连接时,将所述连接返回给所述客户端;
其中,所述连接用于所述客户端访问所述对应数据库。
9.根据权利要求8所述的装置,其中,所述装置进一步包括:
第一创建模块,适于当不存在与所述对应数据库的IP地址、端口号对应的连接时,创建与所述LVS IP地址、端口号对应的第一连接,并将所述第一连接注册在所述连接管理器中。
10.根据权利要求9所述的装置,其中,所述装置进一步包括地址匹配模块,所述地址匹配模块,包括:
判断单元,适于在所述连接管理器中建立与所述LVS IP地址、端口号对应的第一连接之后,确定所述LVS IP地址是否与所述对应数据库的IP地址匹配;
删除单元,用于在所述判断单元确定不匹配后,删除所述第一连接。
11.根据权利要求10所述的装置,其中,所述装置进一步包括第二创建模块,所述第二创建模块,包括:
获取单元,适于在确定所述LVS IP地址与所述对应数据库的IP地址不匹配后,获取所述对应数据库中的全部可用数据节点的IP地址、端口号;
检测单元,适于检测所述连接管理器中是否存在与所述可用数据节点的IP地址、端口号对应的连接;
创建单元,适于当不存在时,创建与每一所述可用数据节点的IP地址、端口号对应的第二连接,并将所述第二连接注册在所述连接管理器中。
12.根据权利要求11所述的装置,其中,所述第二创建模块进一步包括:
返回单元,适于根据预设条件将对应于客户端业务的所述第二连接返回给所述客户端。
13.根据权利要求12所述的装置,其中,所述数据库为主从式结构,且所述返回单元适于按照如下方式将对应于所述客户端业务的所述第二连接返回给所述客户端:
当所述客户端业务为数据写入操作或数据修改操作时,将对应于主数据节点的第二连接返回给所述客户端;以及,
当所述客户端业务为数据读取操作时,根据读优先策略将对应于主数据节点或者从数据节点的第二连接返回给所述客户端。
14.根据权利要求12或13项所述的装置,其中,所述装置进一步包括测试模块,所述测试模块包括:
测试单元,适于根据预设条件将对应于所述客户端业务的所述第二连接返回给所述客户端之后,测试返回的所述第二连接对应的数据节点是否可用;
记录单元,适于当所述数据节点不可用时,将所述数据节点加入到预设的黑名单中。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410800009.0A CN104462488B (zh) | 2014-12-19 | 2014-12-19 | 数据库的高可用解决方法和装置 |
PCT/CN2015/094813 WO2016095644A1 (zh) | 2014-12-19 | 2015-11-17 | 数据库的高可用解决方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410800009.0A CN104462488B (zh) | 2014-12-19 | 2014-12-19 | 数据库的高可用解决方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104462488A CN104462488A (zh) | 2015-03-25 |
CN104462488B true CN104462488B (zh) | 2018-05-11 |
Family
ID=52908523
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410800009.0A Active CN104462488B (zh) | 2014-12-19 | 2014-12-19 | 数据库的高可用解决方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104462488B (zh) |
WO (1) | WO2016095644A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462488B (zh) * | 2014-12-19 | 2018-05-11 | 北京奇虎科技有限公司 | 数据库的高可用解决方法和装置 |
CN105141683B (zh) * | 2015-08-19 | 2018-10-23 | 成都康赛信息技术有限公司 | 一种MongoDB负载均衡优化方法 |
US10785302B2 (en) * | 2016-10-31 | 2020-09-22 | Huawei Technologies Co., Ltd. | Systems and methods for unified data management in a communication network |
CN109992531B (zh) * | 2019-04-15 | 2020-11-10 | 成都四方伟业软件股份有限公司 | 数据存储方法及装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011057057A1 (en) * | 2009-11-06 | 2011-05-12 | Certified Cyber Solutions, Inc. | System and method for secure access of a remote system |
CN102110099A (zh) * | 2009-12-28 | 2011-06-29 | 五邑大学 | 基于养老保险预警系统的异构数据库中间件访问技术 |
CN102722575A (zh) * | 2012-06-05 | 2012-10-10 | 河北世窗信息技术有限公司 | 一种多类型数据库连接池管理系统及管理方法 |
CN102982141A (zh) * | 2012-11-20 | 2013-03-20 | 北京搜狐新媒体信息技术有限公司 | 一种实现分布式数据库代理的方法及装置 |
CN103023942A (zh) * | 2011-09-27 | 2013-04-03 | 奇智软件(北京)有限公司 | 一种服务器负载均衡方法、装置及系统 |
CN103678547A (zh) * | 2013-12-04 | 2014-03-26 | 蓝盾信息安全技术股份有限公司 | 一种自学习的数据库安全审计系统及方法 |
CN104038376A (zh) * | 2014-06-30 | 2014-09-10 | 浪潮(北京)电子信息产业有限公司 | 一种管理真实服务器的方法、装置及lvs集群系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462488B (zh) * | 2014-12-19 | 2018-05-11 | 北京奇虎科技有限公司 | 数据库的高可用解决方法和装置 |
-
2014
- 2014-12-19 CN CN201410800009.0A patent/CN104462488B/zh active Active
-
2015
- 2015-11-17 WO PCT/CN2015/094813 patent/WO2016095644A1/zh active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011057057A1 (en) * | 2009-11-06 | 2011-05-12 | Certified Cyber Solutions, Inc. | System and method for secure access of a remote system |
CN102110099A (zh) * | 2009-12-28 | 2011-06-29 | 五邑大学 | 基于养老保险预警系统的异构数据库中间件访问技术 |
CN103023942A (zh) * | 2011-09-27 | 2013-04-03 | 奇智软件(北京)有限公司 | 一种服务器负载均衡方法、装置及系统 |
CN102722575A (zh) * | 2012-06-05 | 2012-10-10 | 河北世窗信息技术有限公司 | 一种多类型数据库连接池管理系统及管理方法 |
CN102982141A (zh) * | 2012-11-20 | 2013-03-20 | 北京搜狐新媒体信息技术有限公司 | 一种实现分布式数据库代理的方法及装置 |
CN103678547A (zh) * | 2013-12-04 | 2014-03-26 | 蓝盾信息安全技术股份有限公司 | 一种自学习的数据库安全审计系统及方法 |
CN104038376A (zh) * | 2014-06-30 | 2014-09-10 | 浪潮(北京)电子信息产业有限公司 | 一种管理真实服务器的方法、装置及lvs集群系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104462488A (zh) | 2015-03-25 |
WO2016095644A1 (zh) | 2016-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105391811B (zh) | 域名解析方法、应用服务器的访问方法及其终端 | |
CN105338026B (zh) | 数据资源的获取方法、装置和系统 | |
CN104462488B (zh) | 数据库的高可用解决方法和装置 | |
CN104380278B (zh) | 用于客户端管理会话持续性的设备、系统和方法 | |
CN107196982A (zh) | 一种用户请求的处理方法和装置 | |
CN103581213B (zh) | 一种共享Hosts文件的应用方法、设备和系统 | |
CN105515872B (zh) | 配置信息的更新方法、装置及系统 | |
CN107635022A (zh) | 跨内外网服务访问方法和装置 | |
CN106933871A (zh) | 短链接处理方法、装置及短链接服务器 | |
CN105335281A (zh) | 一种自动mock外部依赖的方法及装置 | |
CN107787483A (zh) | 经由多租户链接的无缝地址再分配 | |
CN106685949A (zh) | 一种容器访问方法、装置以及系统 | |
CN110515628A (zh) | 应用部署方法及装置 | |
CN106656650A (zh) | 业务测试环境的生成方法和系统、业务测试的方法、装置和系统 | |
CN107733882A (zh) | Ssl证书自动化部署方法及设备 | |
CN108156274A (zh) | 一种vpn网络中使设备获得域名解析结果的方法及装置 | |
CN108243266A (zh) | 别名记录处理方法、配置方法及装置 | |
CN111124589A (zh) | 一种服务发现系统、方法、装置及设备 | |
CN105338016A (zh) | 数据高速缓存方法和装置以及资源请求响应方法和装置 | |
CN107172214A (zh) | 一种具有负载均衡的服务节点发现方法及装置 | |
Afsar et al. | Equilibrium states on right LCM semigroup-algebras | |
CN113254165B (zh) | 虚拟机和容器的负载流量分配方法、装置及计算机设备 | |
CN105554096A (zh) | 一种云游戏云端服务的实现方法及系统 | |
CN107395711A (zh) | 异构系统会话存取方法及相关装置 | |
CN104202309B (zh) | 一种数据传输的控制方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220720 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |