CN107644035B - 一种数据库系统及其部署方法 - Google Patents
一种数据库系统及其部署方法 Download PDFInfo
- Publication number
- CN107644035B CN107644035B CN201610580958.1A CN201610580958A CN107644035B CN 107644035 B CN107644035 B CN 107644035B CN 201610580958 A CN201610580958 A CN 201610580958A CN 107644035 B CN107644035 B CN 107644035B
- Authority
- CN
- China
- Prior art keywords
- cluster
- data storage
- local
- client
- service cluster
- 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
Images
Abstract
本发明提供了一种数据库系统及数据库系统的部署方法。该方法包括将数据库集群划分为中心集群和本地集群,中心集群负责处理对数据库的写命令,本地集群和客户端部署在一起,处理客户端的读命令。根据该数据库架构和部署方法,客户端能更快的获得所需要的数据,数据库的查询容量提高,同时网络接口流量降低,也减少了需要用到的计算机硬件资源的数量。
Description
技术领域
本发明涉及互联网领域的数据库系统技术领域,尤其涉及一种数据库系统及数据库系统的部署方法。
背景技术
Redis(REmote DIctionary Server)是一种高性能的内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。作为存储媒介,Redis可用做高性能、高并发的检索系统。检索系统的写流量低,读流量高。随着检索系统支撑的业务的复杂度提高,检索的流量也随着增大,对服务器资源和网络流量资源的要求也越来越高。
Redis集群是一种分布式使用Redis的方式。为了增大Redis集群的并发能力和查询容量,一般通过部署更多服务器以扩大Redis集群规模。这种方式需要的机器资源很多,但查询容量提升的幅度却很有限。同时,由于客户端都是通过网络接口同Redis集群进行交互,当查询流量提高时,难以保证客户端获得服务响应的及时性和稳定性,容易出现查询超时的现象。
因此,如何在保证查询性能的同时,使用尽可能少的服务器,提升整个数据库的流量,成为了一个值得研究的问题。
发明内容
根据本发明的实施例,提供一种数据库系统,包括:
中心集群,配置为处理对所述数据库系统的写命令;
本地集群,配置为处理客户端对所述数据库系统的读命令,所述本地集群:
包括一个或多个本地数据存储模块,
与所述客户端就近部署在一起,并且,
与所述中心集群同步。
根据本发明的另一个方面,还提供了一种数据库系统的部署方法,该方法包括:
将所述数据库系统中的数据库集群划分为中心集群和本地集群;
将所述中心集群配置为处理对所述数据库系统的写命令;
将所述本地集群配置为:
处理客户端对所述数据库系统的读命令,
包括一个或多个本地数据存储模块;
将所述本地集群与所述中心集群同步;
将所述本地集群与所述客户端就近部署在一起。
与现有技术相比,本发明的实施例具有以下优点:通过将数据库集群划分为中心集群和本地集群两个层次,中心集群中的主服务集群负责处理对数据库的写命令,中心集群中的从服务集群作为主服务集群的备份;本地集群和客户端部署在一起,处理客户端的读命令。根据以上数据库架构和部署方法,由于客户端可以独享本地集群,因此客户端能更快的获得所需要的数据,提高了数据库的查询容量,同时网络接口流量降低,也减少了需要用到的计算机硬件资源的数量。
附图说明
通过阅读以下参照附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明的实施例的数据库系统的架构示意图;
图2为本发明的实施例的数据库系统的部署方法的流程示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述用户设备、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图对本发明作进一步详细描述。
图1为本发明的实施例的数据库系统的架构示意图。
根据本发明的实施例的数据库主要是采用Redis数据库来实现。Redis是一种高性能的内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。Redis集群是一种分布式使用Redis的方式。Redis的集群一般都部署在计算机设备上,对外提供Redis的数据服务。
需要说明的是,根据本发明的实施例的数据库是基于Redis数据库的,其他现有的或今后可能出现的数据库,如果数据库是以数据库集群方式存在,如可适用于本发明,也应包含在本发明保护范围以内。
如图1所示,该数据库系统包括中心集群101和本地集群102。
数据库集群是一种分布式使用数据库的方式,以使数据库系统有更高的灵活性,同时降低硬件成本。在本发明的实施例中,数据库系统中的数据库集群划分为中心集群和本地集群。中心集群包含数据库的数据和功能,能够对客户端提供与数据库相关的服务。中心集群中可以包括多个数据库实例,能够处理对数据库的写命令,同时也可以处理读命令。本地集群中包括与中心集群相似的数据库实例,但本地集群与中心集群提供的数据库服务内容不同,部署在数据库系统中的位置也与中心集群不同。
中心集群101,配置为处理对数据库系统的写命令。对数据库的写命令来自各个方面,可以是来自客户端,也可以是来自数据库外部的各种服务代理。对数据库的写命令由中心集群101进行处理。中心集群101中可以包括多个数据库实例,能够对客户端提供数据库相关的服务。在中心集群101的数据库实例中可以处理对数据库的写命令,同时也可以处理读命令。为保证数据库的可靠性,可以采用主从机制的数据库部署架构。在本发明的一个优选实施例中,中心集群101包括:主服务集群201和从服务集群202。主服务集群201包括一个或多个主数据存储模块,配置为处理写命令;从服务集群202包括一个或多个从数据存储模块,配置为主服务集群的备份。主服务集群201中的每个主数据存储模块是一个数据库实例,可以提供包括写命令在内的所有数据库的服务。在本实施例中,对数据库的所有写命令都只在主数据存储模块中处理。从服务集群202是主服务集群201的备份,从服务集群202与主服务集群201同步。从服务集群202中包括一个或多个从数据存储模块,每个从数据存储模块是一个数据库实例。从数据存储模块与主数据存储模块同步,从数据存储模块与主数据存储模块之间遵从数据库的主从同步机制。从数据存储模块不直接对外提供数据库相关的服务,而是作为对应的主数据存储模块的备份,在对应的主数据存储模块发生错误或故障时,替换对应的主数据存储模块而成为新的主数据存储模块,以使中心集群101能不间断地对外提供数据库的服务。
本地集群102,配置为处理客户端对数据库系统的读命令。本地集群102:
包括一个或多个本地数据存储模块,
与客户端就近部署在一起,并且,
与中心集群同步。
本地集群102中包括一个或多个本地数据存储模块。每个本地数据存储模块是一个数据库实例。在至少一个实施例中,本地集群102配置为处理客户端对数据库系统的读命令,即本地数据存储模块提供数据库的读命令相关的服务,本地数据存储模块不处理对数据库系统的写命令。
本地集群102中包括的数据库中的数据与中心集群101中的数据库的数据保持一致,即本地集群102与中心集群101同步。由于本地集群102配置为与中心集群101同步,因此本地数据存储模块中的数据内容与中心集群中主数据存储模块的数据内容保持一致。主数据存储模块的数据发生改变时,本地数据存储模块的数据也随之改变。本地数据存储模块与主数据存储模块之间遵从数据库的主从同步机制进行同步。
本地集群102配置为与客户端就近部署在一起。例如,本地集群102可以与客户端部署在同一个子网内,这样本地集群102与客户端之间的数据交换都在子网内部进行,不占用客户端或本地集群102与中心集群101之间的网络接口流量。客户端可以直接从本地集群102中读取数据库的数据内容,这样大部分的与读命令相关的网络接口流量都在客户端与本地集群102之间的内部子网内进行。因此客户端与中心集群101之间的网络的接口流量大为降低,也节省了中心集群101所需的计算机设备的硬件资源。在一个优选实施例中,本地集群102与客户端就近部署的关系更进一步,即本地集群102与客户端在同一台计算机设备上。这样,原来的大量的客户端与中心集群101之间的因读命令而产生的接口流量就可以在计算机设备的内部完成,因此客户端得到服务响应的速度加快,客户体验更好。客户端包含一个或多个服务请求模块。客户端的服务请求模块与这些服务请求模块所用到的本地集群102的本地数据存储模块部署在同一台计算机设备上。本地集群和客户端也可以采用分布式架构,这样可以在多台计算机设备上部署客户端和本地集群,以降低对计算机设备的硬件能力的要求。
在中心集群101的一个优选实施例中,主服务集群部署在一台计算机上,从服务集群部署在另一台计算机上。上述的计算机包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等设备。在该优选实施例中,主服务集群201与从服务集群202分别部署在不同计算机上,主、从服务集群之间的设备相互隔离,能更好的实现主从备份的功能。在主服务集群201部署在一台计算机上时,本地集群102也有可能与客户端部署在另一台计算机上,此时,本地集群102所在的计算机设备与主服务集群201所在的计算机设备之间的流量更为集中,也更能体现出数据库集群划分中心集群和本地集群的优势。
根据本发明的实施例的数据库系统,还包括连接代理模块103。连接代理模块103是用于在数据库系统中控制客户端与数据库集群之间的连接的模块。在本发明的实施例中,连接代理模块103用于为读命令建立客户端与本地集群102或与主服务集群201之间的连接。由于本地集群102和主服务集群201都可以为客户端提供读取数据库的服务,因此连接代理模块103控制客户端与本地集群102连接或控制客户端与主服务集群201连接。连接代理模块103可以使客户端一直与主服务集群201连接,客户端从中心集群101读取数据库的数据内容。连接代理模块103也可以根据网络接口流量的变化控制客户端从本地集群102或从主服务集群201读取数据库的数据内容。例如,在网络接口流量较小,比如网络接口流量小于一个预设的低流量门限阈值时,连接代理模块103控制客户端与主服务集群201连接;在网络接口流量超过一个预设的高流量门限阈值时,连接代理模块103控制客户端与本地集群102连接,从本地集群102中读取数据。在一个优选实施例中,连接代理模块103配置为:
-监控本地集群中一个或多个本地数据存储模块的状态;
-当一个本地数据存储模块发生故障时,使客户端从主服务集群中对应的主数据存储模块读取数据;
-当本地数据存储模块正常工作时,使客户端从本地数据存储模块读取数据。
首先,连接代理模块103配置为监控本地数据存储模块的状态。例如,本地数据存储模块可以定期主动发送自己的状态信息给连接代理模块103,连接代理模块103连续多次没有收到本地数据存储模块的状态信息,可以认为本地数据存储模块的状态异常。连接代理模块103也可以主动发状态请求消息给本地数据存储模块,本地数据存储模块接收到状态请求消息后,发送当前状态信息的消息给连接代理模块103。连接代理模块103根据接收到的本地数据存储模块的当前状态信息的消息判断本地数据存储模块的工作状态是否异常。连接代理模块103也可以通过数据库系统中其他模块发送的消息来获取本地数据存储模块的状态。例如,数据库中的监控管理模块104可以监控本地数据存储模块的状态,并通过约定好的协议广播或转发本地数据存储模块的状态信息到连接代理模块103。
接着,连接代理模块103还配置为当发现某个本地数据存储模块发生故障时,例如本地数据存储模块连接不上、状态异常,或者本地数据存储模块无法正常提供数据库的读命令的相关服务,此时连接代理模块103使客户端从主服务集群101中对应的主数据存储模块中读取数据。主数据存储模块不仅可以处理对数据库的写命令,也可以提供其他的数据库服务,包括处理对数据库的读命令。因此当连接代理模块103发现某个本地数据存储模块故障时,连接代理模块103会使客户端与对应的主数据存储模块连接,由主数据存储模块提供读命令相关的服务。
连接代理模块103还配置为当发现本地数据存储模块工作正常时,会使客户端与本地数据存储模块连接,由本地数据存储模块为客户端提供读取数据库数据内容的服务,从而减少客户端到中心集群101之间的流量。
根据本发明的实施例的数据库系统,还包括监控管理模块104。监控管理模块104配置为用于在中心集群101中的主服务集群201被从服务集群202替换时,且本地集群102需要与新的主服务集群201同步时,控制本地集群102与新的主服务集群201的同步。监控管理模块104能监控数据库的运行。在数据库集群为主从配置时,监控管理模块104发现主服务集群故障时能进行自动切换。监控管理模块104的主要功能包括:监控主数据存储模块是否按照预期正常运行;如果发现某个主数据存储模块的运行故障,能够通知客户端;当一个主数据存储模块不可用时,能够从多个从数据存储模块中选出一个来作为新的主数据存储模块,其它的从数据存储模块将追随新的主数据存储模块。在本发明的实施例中,当中心集群101中的主服务集群201发生故障,例如主服务集群201所在的计算机设备故障时,监控管理模块104发现主服务集群201无法提供正常的数据库的服务,监控管理模块104控制用从服务集群202替换故障的主服务集群201,从而从服务集群202成为新的主服务集群201,因此本地集群102需要与新的主服务集群201之间进行同步。
监控管理模块104控制本地集群102与新的主服务集群201之间的同步过程有很多种方式。监控管理模块104可以把同步命令下发到本地集群102和新的主服务集群201,由本地集群102和新的主服务集群201自主协商何时进行同步。监控管理模块104也可以监控当前的网络流量,根据当前网络流量的情况,控制当前本地集群102中的本地数据存储模块与主服务集群201的主数据存储模块进行同步的数量。例如,监控管理模块104定期监控本地集群102和主服务集群201接收和处理客户端和外部服务命令的响应速度,当该响应速度小于预定的高流量阈值,则监控管理模块104控制停止更多的本地数据存储模块与对应的主数据存储模块进行同步;当该响应速度大于预定的低流量阈值,则监控管理模块104控制使更多的本地数据存储模块与主数据存储模块同步,直到所有待同步的本地数据存储模块均完成与对应的主数据存储模块的同步。
在本发明的一个优选实施例中,监控管理模块104配置为:
-从本地集群的本地数据存储模块中挑选一个待同步的本地数据存储模块;
-控制待同步的本地数据存储模块完成与主服务集群上对应的主数据存储模块的同步;
-重复以上操作,直到所有待同步的本地数据存储模块均完成与主服务集群上对应的主数据存储模块同步。
具体地说,也就是监控管理模块104配置为:在中心集群101中的主服务集群201被从服务集群202替换时,且本地集群102需要与新的主服务集群201同步时,监控管理模块104控制每次只有一个本地数据存储模块与对应的主数据存储模块同步,只有当该本地数据存储模块完成与对应的主数据存储模块同步之后,监控管理模块104才会再次挑选下一个待同步的本地数据存储模块。重复以上过程,直到所有待同步的本地数据存储模块都完成该同步过程。
在一个数据库系统中,可在多个计算机设备上设置本地集群102,每个计算机设备上的本地集群102包括多个本地数据存储模块,因此,如果监控管理模块104只下发本地集群102与主服务集群201的同步命令而不控制同步的时刻的话,就会使得多个本地数据存储模块同时与对应的主数据存储模块同步,造成网络接口流量过大,使得网络拥塞,以及计算机设备的处理能力下降。监控管理模块104配置为根据上述优选实施例,依次控制每个本地数据存储模块与对应的主数据存储模块进行同步,该控制方式简单,同时也不会增加网络接口流量的负担,从而在保证数据库系统性能的情况下减少了计算机设备的硬件资源的占用。
图2为本发明的实施例的数据库系统的部署方法的流程图。
根据本发明的部署方法的数据库主要是采用Redis数据库来实现。Redis是一种高性能的内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。Redis集群是一种分布式使用Redis的方式。Redis的集群一般都部署在计算机设备上,对外提供Redis的数据服务。
需要说明的是,根据本发明的方法的数据库是基于Redis数据库的,其他现有的或今后可能出现的数据库,如果数据库是以数据库集群方式部署的,如可适用于本发明,也应包含在本发明保护范围以内。
如图2所示,根据本发明的实施例的数据库系统的部署方法包括步骤S1、步骤S2、步骤S3、步骤S4和步骤S5。
在步骤S1中,将数据库系统中的数据库集群划分为中心集群和本地集群。
数据库集群是一种分布式使用数据库的方式,以使数据库系统有更高的灵活性,同时降低硬件成本。在步骤S1中,将数据库系统中的数据库集群划分为中心集群和本地集群。中心集群包含数据库的数据和功能,能够对客户端提供与数据库相关的服务。中心集群中可以包括多个数据库实例,处理对数据库的写命令,同时也可以处理读命令。本地集群中包括与中心集群相似的数据库实例,但本地集群与中心集群提供的数据库服务内容不同,部署在数据库系统中的位置也与中心集群不同。
在步骤S2中,将中心集群配置为处理对数据库系统的写命令。对数据库的写命令来自各个方面,可以是来自客户端,也可以是来自数据库外部的各种服务代理。对数据库的写命令由中心集群进行处理。中心集群中包括多个数据库实例,处理对数据库的写命令,同时也可以处理读命令。为保证数据库的可靠性,可以采用主从机制的数据库部署架构。在本发明的一个优选实施例中,还包括:将中心集群配置为包括:主服务集群和从服务集群。主服务集群包括一个或多个主数据存储模块,配置为处理写命令;从服务集群包括一个或多个从数据存储模块,配置为主服务集群的备份。主服务集群中的每个主数据存储模块是一个数据库实例,可以提供包括写命令在内的所有数据库的服务。在本实施例中,对数据库的写命令都只在主数据存储模块中处理。从服务集群是主服务集群的备份,从服务集群与主服务集群同步。从服务集群中包括一个或多个从数据存储模块,每个从数据存储模块是一个数据库实例。从数据存储模块与主数据存储模块同步,从数据存储模块与主数据存储模块之间遵从数据库的主从同步机制,从数据存储模块中的数据与主数据存储模块中的数据保持一致。从数据存储模块不直接对外提供数据库相关的服务,而是作为对应的主数据存储模块的备份,在对应的主数据存储模块发生错误或故障时,替换对应的主数据存储模块而成为新的主数据存储模块,以使中心集群能不间断地对外提供数据库的服务。
在步骤S3中,将本地集群配置为处理客户端对数据库系统的读命令,以及包括一个或多个本地数据存储模块。
本地集群中包括一个或多个本地数据存储模块。每个本地数据存储模块是一个数据库实例。在至少一个实施例中,将本地集群配置为处理客户端对数据库系统的读命令,即本地数据存储模块提供数据库的读命令相关的服务,本地数据存储模块不处理对数据库系统的写命令。
在步骤S4中,将本地集群与中心集群同步。具体的说,也就是将本地集群中的数据库的数据与中心集群中的数据库的数据保持一致。因此本地数据存储模块中的数据内容与中心集群中主数据存储模块的数据内容保持一致。主数据存储模块的数据发生改变时,本地数据存储模块的数据也随之改变。本地数据存储模块与主数据存储模块之间遵从数据库的主从同步机制进行同步。
在步骤S5中,将本地集群与客户端就近部署在一起。例如,将本地集群与客户端部署在同一个子网内,这样本地集群与客户端之间的数据交换都在子网内部进行,不占用客户端或本地集群与中心集群之间的网络接口流量。客户端可以直接从本地集群中读取数据库的数据内容,这样大部分的与读命令相关的网络接口流量都在客户端与本地集群之间的内部子网内进行。因此客户端与中心集群之间的网络的接口流量大为降低,也节省了中心集群所需的计算机设备的硬件资源。在一个优选实施例中,将本地集群与客户端就近部署在一起的步骤S5包括:将本地集群与客户端部署在一台计算机上。在该优选实施例中,本地集群与客户端就近部署的关系更进一步,这样,原来的大量的客户端与中心集群之间的因读命令而产生的接口流量就可以在计算机设备的内部完成,因此客户端得到服务响应的速度加快,客户体验更好。客户端包含一个或多个服务请求模块。客户端的服务请求模块与这些服务请求模块所用到的本地集群的本地数据存储模块部署在同一台计算机设备上。本地集群和客户端也可以采用分布式架构,这样可以在多台计算机设备上部署客户端和本地集群,以降低对计算机设备的硬件能力的要求。
在本发明方法的一个优选实施例中,包括:将主服务集群部署在一台计算机上,将从服务集群部署在另一台计算机上。上述的计算机包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等设备。在该优选实施例中,将主服务集群与从服务集群分别部署在不同计算机上,主从服务集群之间的设备相互隔离,能更好的实现主从备份的功能。在将主服务集群部署在一台计算机上时,本地集群也有可能与客户端部署在另一台计算机上,此时,本地集群所在的计算机设备与主服务集群所在的计算机设备之间的流量更为集中,也更能体现出将数据库集群划分为中心集群和本地集群的优势。
需要说明的是,尽管图2中示出步骤S1、S2、S3、S4和S5的执行是按照顺序依次进行的,但本领域技术人员应能理解,上述步骤S1、步骤S2、步骤S3、步骤S4和步骤S5之间的执行并无严格的先后顺序。步骤S1、步骤S2、步骤S3、步骤S4和步骤S5可以同时执行,也可以按照任意顺序执行。
根据本发明的实施例的数据库系统的部署方法,还包括步骤S6(图2未示出)将连接代理模块配置为用于为读命令建立客户端与本地集群或与主服务集群之间的连接。连接代理模块是用于在数据库系统中控制客户端与数据库集群之间的连接的模块。由于本地集群和主服务集群都可以为客户端提供读取数据库的服务,因此连接代理模块控制客户端与本地集群连接或者控制客户端与主服务集群连接。连接代理模块可以使客户端一直与主服务集群连接,客户端从中心集群读取数据库的数据内容。连接代理模块也可以根据网络接口流量的变化控制客户端从本地集群或从主服务集群读取数据库的数据内容。例如,在网络接口流量较小,比如网络接口流量小于一个预设的低流量门限阈值时,连接代理模块控制客户端与主服务集群连接;在网络接口流量超过一个预设的高流量门限阈值时,连接代理模块控制客户端与本地集群连接,从本地集群中读取数据。在一个优选实施例中,连接代理模块为读命令建立客户端与本地集群或主服务集群之间的连接的步骤S6包括步骤S61、步骤S62和步骤S63。
在步骤S61中,连接代理模块监控本地集群中一个或多个本地数据存储模块的状态。例如,本地数据存储模块可以定期主动发送自己的状态信息给连接代理模块,连接代理模块连续多次没有收到本地数据存储模块的状态信息,可以认为本地数据存储模块的状态异常。连接代理模块也可以主动发状态请求消息给本地数据存储模块,本地数据存储模块接收到状态请求消息后,发送当前状态信息的消息给连接代理模块。连接代理模块根据接收到的本地数据存储模块的当前状态信息的消息判断本地数据存储模块的工作状态是否异常。连接代理模块也可以通过数据库系统中其他模块发送的消息来获取本地数据存储模块的状态。例如,数据库中的监控管理模块可以监控本地数据存储模块的状态,并通过约定好的协议广播或转发本地数据存储模块的状态信息到连接代理模块。
在步骤S62中,当一个本地数据存储模块发生故障时,连接代理模块使客户端从主服务集群中对应的主数据存储模块读取数据。当连接代理模块发现某个本地数据存储模块发生故障时,例如本地数据存储模块连接不上、状态异常,或者本地数据存储模块无法正常提供数据库的读命令的相关服务,此时连接代理模块使客户端从主服务集群中对应的主数据存储模块中读取数据。主数据存储模块不仅可以处理对数据库的写命令,也可以提供其他的数据库服务,包括处理对数据库的读命令。因此当连接代理模块发现某个本地数据存储模块故障时,连接代理模块会使客户端与对应的主数据存储模块连接,由主数据存储模块提供读命令相关的服务。
在步骤S63中,当本地数据存储模块正常工作时,连接代理模块使客户端从本地数据存储模块读取数据。如果连接代理模块发现本地数据存储模块工作正常时,连接代理模块会使客户端与本地数据存储模块连接,由本地数据存储模块为客户端提供读取数据库数据内容的服务,从而减少客户端到中心集群之间的流量。
需要说明的是,尽管以上对步骤S61、S62和S63的说明是按照顺序依次进行说明的,即连接代理模块执行步骤S61之后执行步骤S62,步骤S62之后执行S63,但本领域技术人员应能理解,上述步骤S61、步骤S62和步骤S63之间并无严格的先后顺序。步骤S61、S62和S63可以同时执行,也可以按照任意顺序执行。
根据本发明的实施例的数据库系统的部署方法,还包括步骤S7(图2未示出):将监控管理模块配置为用于在中心集群中的主服务集群被从服务集群替换时,且本地集群需要与新的主服务集群同步时,控制本地集群与新的主服务集群的同步。监控管理模块能监控数据库的运行。在数据库集群为主从配置时,监控管理模块发现主服务集群故障时能进行自动切换。监控管理模块的主要功能包括:监控主数据存储模块是否按照预期正常运行;如果发现某个主数据存储模块的运行故障,能够通知客户端;当一个主数据存储模块不可用时,能够从多个从数据存储模块中选出一个来作为新的主数据存储模块,其它的从数据存储模块将追随新的主数据存储模块。在本发明的实施例中,当中心集群中的主服务集群发生故障,例如主服务集群所在的计算机设备故障时,监控管理模块发现主服务集群无法提供正常的数据库的服务,监控管理模块控制用从服务集群替换故障的主服务集群,从而从服务集群成为新的主服务集群,因此本地集群需要与新的主服务集群之间进行同步。
监控管理模块控制本地集群与新的主服务集群之间的同步过程有很多种方式。监控管理模块可以把同步命令下发到本地集群和新的主服务集群,由本地集群和新的主服务集群自主协商何时进行同步。监控管理模块也可以监控当前的网络流量,根据当前网络流量的情况,控制当前本地集群中的本地数据存储模块与主服务集群的主数据存储模块进行同步的数量。例如,监控管理模块定期监控本地集群和主服务集群接收和处理客户端和外部服务命令的响应速度,当该响应速度小于预定的高流量阈值,则监控管理模块控制停止更多的本地数据存储模块与对应的主数据存储模块进行同步;当该响应速度大于预定的低流量阈值,则监控管理模块控制使更多的本地数据存储模块与主数据存储模块同步,直到所有待同步的本地数据存储模块均完成与对应的主数据存储模块的同步。
在本发明的一个优选实施例中,监控管理模块控制本地集群与新的主服务集群的同步的步骤包括:
-从本地集群的本地数据存储模块中挑选一个待同步的本地数据存储模块;
-控制待同步的本地数据存储模块完成与主服务集群上对应的主数据存储模块的同步;
-重复以上操作,直到所有待同步的本地数据存储模块均完成与主服务集群上对应的主数据存储模块同步。
具体地说,也就是在中心集群中的主服务集群被从服务集群替换时,且本地集群需要与新的主服务集群同步时,监控管理模块控制每次只有一个本地数据存储模块与对应的主数据存储模块同步,只有当该本地数据存储模块完成与对应的主数据存储模块同步之后,监控管理模块才会再次挑选下一个待同步的本地数据存储模块。重复以上过程,直到所有的待同步的本地数据存储模块都完成该同步过程。
在一个数据库系统中,可在多个计算机设备上设置有本地集群,每个计算机设备上的本地集群包括多个本地数据存储模块,因此,如果监控管理模块只下发本地集群与主服务集群的同步命令而不控制同步的时刻的话,就会使得多个本地数据存储模块同时与对应的主数据存储模块同步,造成网络接口流量过大,使得网络拥塞,以及计算机设备的处理能力下降。监控管理模块按照上述优选实施例,依次控制每个本地数据存储模块与对应的主数据存储模块进行同步,该控制方式简单,同时也不会增加网络接口流量的负担,从而在保证数据库系统性能的情况下减少了计算机设备的硬件资源的占用。
需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,本发明的各个装置可采用专用集成电路(ASIC)或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (10)
1.一种数据库系统,包括:
中心集群,配置为处理对所述数据库系统的写命令和读命令;所述中心集群包括主服务集群,所述主服务集群包括一个或多个主数据存储模块;所述中心集群还包括从服务集群;所述从服务集群,包括一个或多个从数据存储模块,配置为所述主服务集群的备份;
本地集群,配置为处理客户端对所述数据库系统的读命令,所述本地集群:包括一个或多个本地数据存储模块,与所述客户端部署在同一个子网内,并且,与所述主服务集群同步;
连接代理模块,用于为所述读命令建立所述客户端与所述本地集群或与所述主服务集群之间的连接;
其中所述连接代理模块配置为:
-监控所述本地集群中一个或多个本地数据存储模块的状态;
-当一个本地数据存储模块发生故障时,使所述客户端从所述主服务集群中对应的主数据存储模块读取数据;
-当所述本地数据存储模块正常工作时,使所述客户端从所述本地数据存储模块读取数据;
监控管理模块,用于在所述中心集群中的主服务集群被从服务集群替换时,且所述本地集群需要与新的主服务集群同步时,控制所述本地集群与所述新的主服务集群的同步。
2.根据权利要求1所述的数据库系统,其中,所述主服务集群,配置为处理所述写命令。
3.根据权利要求1所述的数据库系统,其中,所述监控管理模块配置为:
-从所述本地集群的本地数据存储模块中挑选一个待同步的本地数据存储模块;
-控制所述待同步的本地数据存储模块完成与所述主服务集群上对应的主数据存储模块的同步;
-重复以上操作,直到所有待同步的本地数据存储模块均完成与所述主服务集群上对应的主数据存储模块同步。
4.根据权利要求1所述的数据库系统,其中,所述本地集群与所述客户端部署在一台计算机上。
5.根据权利要求2所述的数据库系统,其中,所述主服务集群部署在一台计算机上,所述从服务集群部署在另一台计算机上。
6.一种数据库系统的部署方法,该方法包括:
将所述数据库系统中的数据库集群划分为中心集群和本地集群;
将所述中心集群配置为处理对所述数据库系统的写命令和读命令;所述中心集群包括主服务集群,所述主服务集群包括一个或多个主数据存储模块;所述中心集群还包括从服务集群;所述从服务集群,包括一个或多个从数据存储模块,作为所述主服务集群的备份;
将所述本地集群配置为:
处理客户端对所述数据库系统的读命令,
包括一个或多个本地数据存储模块;
将所述本地集群与所述主服务集群同步;
将所述本地集群与所述客户端部署在同一个子网内;
将连接代理模块配置为用于为所述读命令建立所述客户端与所述本地集群或所述主服务集群之间的连接;
所述连接代理模块为所述读命令建立所述客户端与所述本地集群或所述主服务集群之间的连接的步骤包括:
-监控所述本地集群中一个或多个本地数据存储模块的状态;
-当一个本地数据存储模块发生故障时,使所述客户端从所述主服务集群中对应的主数据存储模块读取数据;
-当所述本地数据存储模块正常工作时,使所述客户端从所述本地数据存储模块读取数据;
将监控管理模块配置为用于在所述中心集群中的主服务集群被从服务集群替换时,且所述本地集群需要与新的主服务集群同步时,控制所述本地集群与所述新的主服务集群的同步。
7.根据权利要求6所述的数据库系统的部署方法,其中,所述主服务集群,配置为处理所述写命令。
8.根据权利要求6所述的数据库系统的部署方法,其中,所述监控管理模块控制所述本地集群与所述新的主服务集群的同步的步骤包括:
-从所述本地集群的本地数据存储模块中挑选一个待同步的本地数据存储模块;
-控制所述待同步的本地数据存储模块完成与所述主服务集群上对应的主数据存储模块的同步;
-重复以上操作,直到所有待同步的本地数据存储模块均完成与所述主服务集群上对应的主数据存储模块同步。
9.根据权利要求6所述的数据库系统的部署方法,其中,所述将所述本地集群与所述客户端就近部署在一起的步骤包括:将所述本地集群与所述客户端部署在一台计算机上。
10.根据权利要求7所述的数据库系统的部署方法,其中,包括:将所述主服务集群部署在一台计算机上,将所述从服务集群部署在另一台计算机上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610580958.1A CN107644035B (zh) | 2016-07-21 | 2016-07-21 | 一种数据库系统及其部署方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610580958.1A CN107644035B (zh) | 2016-07-21 | 2016-07-21 | 一种数据库系统及其部署方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107644035A CN107644035A (zh) | 2018-01-30 |
CN107644035B true CN107644035B (zh) | 2022-07-22 |
Family
ID=61109322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610580958.1A Active CN107644035B (zh) | 2016-07-21 | 2016-07-21 | 一种数据库系统及其部署方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107644035B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020252614A1 (en) * | 2019-06-17 | 2020-12-24 | Beijing Voyager Technology Co., Ltd. | Systems and methods for data processing |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101064729B (zh) * | 2006-04-27 | 2010-06-09 | 中国电信股份有限公司 | 通过cdn网络实现ftp下载服务的系统和方法 |
US7827138B2 (en) * | 2006-10-02 | 2010-11-02 | Salesforce.Com, Inc. | Method and system for synchronizing a server and an on-demand database service |
CN102521389A (zh) * | 2011-12-23 | 2012-06-27 | 天津神舟通用数据技术有限公司 | 一种混合使用固态硬盘和传统硬盘的postgresql数据库集群系统及其优化方法 |
CN104283906B (zh) * | 2013-07-02 | 2018-06-19 | 华为技术有限公司 | 分布式存储系统、集群节点及其区间管理方法 |
CN103500229B (zh) * | 2013-10-24 | 2017-04-19 | 北京奇虎科技有限公司 | 一种数据库同步方法和数据库系统 |
CN103559306B (zh) * | 2013-11-18 | 2016-06-22 | 电子科技大学 | 一种通过云平台到数据中心的查询系统及方法 |
CN104462483A (zh) * | 2014-12-18 | 2015-03-25 | 北京奇虎科技有限公司 | 数据同步方法、装置及系统 |
CN105677251B (zh) * | 2016-01-05 | 2018-12-21 | 上海瀚之友信息技术服务有限公司 | 基于Redis集群的存储系统 |
-
2016
- 2016-07-21 CN CN201610580958.1A patent/CN107644035B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107644035A (zh) | 2018-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112887368B (zh) | 对复制型数据库的访问进行负载平衡 | |
CN107526659B (zh) | 用于失效备援的方法和设备 | |
Pashkov et al. | Controller failover for SDN enterprise networks | |
CN102402395B (zh) | 基于仲裁磁盘的高可用系统不间断运行方法 | |
CN110784350B (zh) | 一种实时高可用集群管理系统的设计方法 | |
CN105337780B (zh) | 一种服务器节点配置方法及物理节点 | |
JP2005531855A (ja) | Opcサーバリダイレクションマネージャ | |
CN106960060B (zh) | 一种数据库集群的管理方法及装置 | |
CN113067850B (zh) | 一种多云场景下的集群编排系统 | |
CN103019889A (zh) | 分布式文件系统及其故障处理方法 | |
US9258363B2 (en) | Data cube high availability | |
CN103036719A (zh) | 一种基于主备集群服务器的跨地区服务容灾方法及装置 | |
CN103188098B (zh) | 一种容灾切换方法、系统以及装置 | |
CN109254876A (zh) | 云计算系统中数据库的管理方法和装置 | |
CN107454171B (zh) | 消息服务系统及其实现方法 | |
CN110442650A (zh) | 数据库切换方法、装置、系统、电子设备及存储介质 | |
EP3087483A1 (en) | System and method for supporting asynchronous invocation in a distributed data grid | |
WO2014177085A1 (zh) | 分布式多副本数据存储方法及装置 | |
CN113467873A (zh) | 虚拟机的调度方法、装置、电子设备及存储介质 | |
CN105589756A (zh) | 批处理集群系统以及方法 | |
CN111865632A (zh) | 分布式数据存储集群的切换方法及切换指令发送方法和装置 | |
CN103384882A (zh) | 在服务器的共享组中管理使用权的方法 | |
CN108512753B (zh) | 一种集群文件系统中消息传输的方法及装置 | |
CN110019484B (zh) | 数据库系统及实现方法、管理设备、数据接口设备和介质 | |
CN107644035B (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 |