CN106815318B - 一种时序数据库的集群化方法及系统 - Google Patents
一种时序数据库的集群化方法及系统 Download PDFInfo
- Publication number
- CN106815318B CN106815318B CN201611211434.1A CN201611211434A CN106815318B CN 106815318 B CN106815318 B CN 106815318B CN 201611211434 A CN201611211434 A CN 201611211434A CN 106815318 B CN106815318 B CN 106815318B
- Authority
- CN
- China
- Prior art keywords
- group
- chain
- time
- time sequence
- module
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种时序数据库的集群化方法及系统,方法包括步骤:将多个时序数据库构建为一个组;一个组负责一个时间段的数据写入与查询请求;一个组或多个组连接起来构成一个链;以链为单元处理数据写入与查询请求;将所有的链统一管理;根据时序数据库状态将一个新的组加入到链中,并将写入请求切换到新的组上。由于当实际进行负载的组出现故障时,系统可以自动切换到新的组,实现自动容灾,当用户的磁盘用量快满时,可以通过切换组的方式,将用户的请求导入到别的组,从而使磁盘用量没有上限,无限扩展,多个时序数据库构建为一个组,当集群中一个时序数据库实例出现故障时,并不会影响用户的使用,可用由其他实例来承担负载。
Description
技术领域
本发明涉及数据库领域,更具体的说,涉及一种时序数据库的集群化方法及系统。
背景技术
随着云计算大数据的不断发展,用户对数据的高可用、资源弹性扩容、规模可无限扩展等需求越来越强烈。另一方面,目前数据库领域的大多数产品,如mysql、influxdb等,其单机版本在生产环境中已经经受过检验,表现出了良好的稳定性,但是却一直没有很好的集群化版本或方案,导致使用规模往往被限制在单台机器的负载能力上,无法很好的扩展。
提高现有数据库的横向扩展能力,使其拥有高可用、无限扩展、弹性扩容、自动容灾等能力,是亟待解决的问题。而解决这些问题的一个基本方法,就是将单机实例集群化。集群化就是将多个单机实例通过一定的组织方式联合起来,使多个实例可以协作完成用户的请求,从而提供用户更高的扩展性和负载。但是在解决集群化过程中还会遇到数据容灾等问题。
发明内容
本发明所要解决的技术问题是提供一种提供数据容灾的时序数据库的集群化方法及系统。
本发明的目的是通过以下技术方案来实现的:
一种时序数据库的集群化方法,包括步骤:
将多个时序数据库构建为一个组;
一个组负责一个时间段的数据写入与查询请求;
一个组或多个组连接起来构成一个链;
以链为单元处理数据写入与查询请求;
将所有的链统一管理;
根据时序数据库状态将一个新的组加入到链中,并将写入请求切换到新的组上。
进一步的,根据资源使用情况将链设置为共享或独占。弹性扩容,用户可以根据实际需求,选择与他人共享资源或者独占资源。
进一步的,将多个时序数据库构建为一个组包括:
同组的多个时序数据库实例部署在不同的服务器上、同组的实例网络访问速度相当、同组的实例磁盘存储空间相当、同组的时序数据库实例各自保存一份完整的用户数据和一个时序数据库实例仅被一个组选中中的至少一项。
有利于数据的安全和调用,有利于资源的合理分配和充分应用,提高整体的反应速度。
进一步的,一个组负责一个时间段的数据写入与查询请求包括:
组有一个时间范围、组根据写入的数据点和/或时间戳接收写入、同组的所有实例都写入数据、查询数据的范围会被缩小至该组的范围之内和通过查询同组的任意实例实现查询数据中的至少一项。
可以更方便的管理数据,查找更方便。查询的范围会被缩小至该组的范围之内,其中即查询的起始时间和组的起始时间相比取一个更晚的时间,而查询范围的结束时间和组的结束时间相比,取一个更早的时间;
进一步的,一个组或多个组连接起来构成一个链包括:
同一个链中的组按时间顺序前后紧密衔接,前一个组的结束时间与其后的组的起始时间相同;
根据组的磁盘用量进行组切换动作;
链中的任意两个组彼此之间互相独立。
链中的两个连接的组按时间连接更紧密,任意两个组彼此之间互相独立,方便数据查找和写入。
进一步的,组切换动作包括:
链中加入一个新的组,以切换时的当前时间为界,决定上一个组的结束时间以及新的组的开始时间。
切换以时间为界更加安全准确。
进一步的,根据时序数据库状态将一个新的组加入到链中,并将写入请求切换到新的组上包括:
选择一个新的组,且该组当前状态没有被任何链引用;
将链中最后一个组的结束时间与链中将要加入的新组的开始时间设置为相同;
将请求根据时间戳导向新的组。
进一步的,以链为单元处理用户的数据写入与查询请求包括:
根据写入数据请求的时间戳写入链中对应时间范围的组;
根据查询请求的查询的时间范围,从涉及到的组中查询数据并归并后返回。
写入和查询更加方便快捷,数据更加安全。
进一步的,将所有的链统一管理包括:
多个用户使用多个的链或共享同一个链;
一个用户有一个或多个链;
任意两个链之间彼此隔离。
进一步的,根据资源使用情况将链设置为共享或独占包括:
根据资源使用情况将链从共享切换成独占;或根据资源使用情况将链从独占切换成共享。
本发明的另一优选方案,一种时序数据库集群化系统,包括:
信息收集模块,用于收集不同机器上的时序数据库实例信息;
组调度模块,用于将不同的时序数据库实例组合成多个组,将组与组链接形成链,并分配资源,记录时序数据库实例的状态;
元数据管理模块,用于记录用户数据与时序数据库链的对应关系;
用户请求处理模块,用于通过查看元数据管理模块,获取用户数据与时序数据库对应关系,并到对应组写入或查询数据;
添加模块,用于为链添加新组,并进行组切换。
进一步的,组调度模块包括:
组成模块,用于从不同服务器上选取网络传输速率相当、磁盘剩余空间相当的、且没有被其他组引用的时序数据库实例组成一个组;
检测模块,用于检测实例状态,当组中某个实例出现故障时,处理用户请求时排除该实例,当某个组所有实例均不可用时进行组切换;
链分裂模块,用于将原有的链分裂为两条或多条链,其中包括独占一条或多条链资源的新链和原有的旧链;
链合并模块,用于将多条链合并为一条链。
进一步的,元数据管理模块包括:
定位模块,用于定位访问对应的具体时序数据库实例;
更新模块,用于资源改变时更新元数据。
进一步的,用户请求处理模块包括:
写入请求模块,用于响应写入请求,根据元数据管理模块查找到对应的链,并根据时间戳写入到对应链的对应组,写入对应链的所有实例后发送成功信息;
查询请求模块,用于响应查询请求,根据元数据管理模块查找到对应的链,根据查询的范围找到涉及的组,将查询范围缩小至各个组的范围,再去各个组分别执行查询,并将结果汇总发送完整的查询结果。
本发明由于根据时序数据库状态将一个新的组加入到链中,并将写入请求切换到新的组上,当实际进行负载的组出现故障时,系统可以自动切换到新的组,实现自动容灾,当用户的磁盘用量快满时,可以通过切换组的方式,将用户的请求导入到别的组,从而使磁盘用量没有上限,无限扩展,多个时序数据库构建为一个组,当集群中一个时序数据库实例出现故障时,并不会影响用户的使用,可用由其他实例来承担负载。
附图说明
图1是本发明实施例的一种时序数据库的集群化方法示意图;
图2是本发明实施例的组切换流程图;
图3是本发明实施例的链分裂前示意图;
图4是本发明实施例的链分裂示意图;
图5是本发明实施例的数据流示意图。
具体实施方式
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
在上下文中所称“计算机设备”,也称为“电脑”,是指可以通过运行预定程序或指令来执行数值计算和/或逻辑计算等预定处理过程的智能电子设备,其可以包括处理器与存储器,由处理器执行在存储器中预存的存续指令来执行预定处理过程,或是由ASIC、FPGA、DSP等硬件执行预定处理过程,或是由上述二者组合来实现。计算机设备包括但不限于服务器、个人电脑、笔记本电脑、平板电脑、智能手机等。
所述计算机设备包括用户设备与网络设备。其中,所述用户设备或客户端包括但不限于电脑、智能手机、PDA等;所述网络设备包括但不限于单个网络服务器、多个网络服务器组成的服务器组或基于云计算(Cloud Computing)的由大量计算机或网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述计算机设备可单独运行来实现本发明,也可接入网络并通过与网络中的其他计算机设备的交互操作来实现本发明。其中,所述计算机设备所处的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等
需要说明的是,所述用户设备、客户端、网络设备和网络等仅为举例,其他现有的或今后可能出现的计算机设备或网络如可适用于本发明,也应包含在本发明保护范围以内,并以引用方式包含于此。
后面所讨论的方法(其中一些通过流程图示出)可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合来实施。当用软件、固件、中间件或微代码来实施时,用以实施必要任务的程序代码或代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本发明的示例性实施例的目的。但是本发明可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或“耦合”到另一单元时,其可以直接连接或耦合到所述另一单元,或者可以存在中间单元。与此相对,当一个单元被称为“直接连接”或“直接耦合”到另一单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例而不意图限制示例性实施例。除非上下文明确地另有所指,否则这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或添加一个或更多其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
下面结合附图和较佳的实施例对本发明作进一步说明。
如图1所示,一种时序数据库的集群化方法,包括步骤:
S1:将多个时序数据库构建为一个组;
S2:一个组负责一个时间段的数据写入与查询请求;
S3:一个组或多个组连接起来构成一个链;
S4:以链为单元处理数据写入与查询请求;
S5:将所有的链统一管理;
S6:根据时序数据库状态将一个新的组加入到链中,并将写入请求切换到新的组上。
由于根据时序数据库状态将一个新的组加入到链中,并将写入请求切换到新的组上,当实际进行负载的组出现故障时,系统可以自动切换到新的组,实现自动容灾,当用户的磁盘用量快满时,可以通过切换组的方式,将用户的请求导入到别的组,从而使磁盘用量没有上限,无限扩展,多个时序数据库构建为一个组,当集群中一个时序数据库实例出现故障时,并不会影响用户的使用,可用由其他实例来承担负载。
其中,根据资源使用情况将链设置为共享或独占。弹性扩容,用户可以根据实际需求,选择与他人共享资源或者独占资源。
其中,将多个时序数据库构建为一个组包括:
同组的多个时序数据库实例部署在不同的服务器上、同组的实例网络访问速度相当、同组的实例磁盘存储空间相当、同组的时序数据库实例各自保存一份完整的用户数据和一个时序数据库实例仅被一个组选中中的至少一项。有利于数据的安全和调用,有利于资源的合理分配和充分应用,提高整体的反应速度。将多个时序数据库构建为一个组,构建时保证:将同组的多个时序数据库实例部署在不同的服务器上;为同组的实例选择网络访问速度相当的实例构建为同一个组;为同组的实例选择磁盘存储空间相当的实例构建为同一个组;同组的时序数据库实例各自保存一份完整的用户数据;被选中的时序数据库实例不能再被别的组选中。
其中,一个组负责一个时间段的数据写入与查询请求包括:
组有一个时间范围、组根据写入的数据点和/或时间戳接收写入、同组的所有实例都写入数据、查询数据的范围会被缩小至该组的范围之内和通过查询同组的任意实例实现查询数据中的至少一项。
可以更方便的管理数据,查找更方便。构建的每个组负责一个特定时间段的数据写入与查询请求:每个组都有一个时间范围,通过起始时间和结束时间来约束;当用户写入的数据点,时间戳属于该组的时间范围才接受,否则拒绝写入;当用户写入数据时,同组的所有实例都写入成功才算该组写入成功;当用户查询数据时,查询的范围会被缩小至该组的范围之内,即查询的起始时间和组的起始时间相比取一个更晚的时间,而查询范围的结束时间和组的结束时间相比,取一个更早的时间;当用户查询到同组的任意实例时,一旦查询一个实例成功,便认为成功。
其中,一个组或多个组连接起来构成一个链包括:
同一个链中的组按时间顺序前后紧密衔接,前一个组的结束时间与其后的组的起始时间相同;
根据组的磁盘用量进行组切换动作;
链中的任意两个组彼此之间互相独立。
链中的两个连接的组按时间连接更紧密,任意两个组彼此之间互相独立,方便数据查找和写入。
其中,组切换动作包括:
链中加入一个新的组,以切换时的当前时间为界,决定上一个组的结束时间以及新的组的开始时间。
切换以时间为界更加安全准确。将实例组与组之间根据时间顺序进行衔接,多个组连接起来构成一个链:同一个链中的组按时间顺序前后紧密衔接,前一个组的结束时间与其后的组的起始时间相同;当一个组的磁盘用量快要耗尽时,可以进行组切换动作,此时链中会多加入一个组,以切换时的当前时间为界,决定上一个组的结束时间以及新的组的开始时间;链中的所有组,彼此之间互相独立,互不影响,资源隔离。
其中,根据时序数据库状态将一个新的组加入到链中,并将写入请求切换到新的组上包括:
选择一个新的组,且该组当前状态没有被任何链引用;
将链中最后一个组的结束时间与链中将要加入的新组的开始时间设置为相同;
将请求根据时间戳导向新的组。
其中,以链为单元处理用户的数据写入与查询请求包括:
根据写入数据请求的时间戳写入链中对应时间范围的组;
根据查询请求的查询的时间范围,从涉及到的组中查询数据并归并后返回。
写入和查询更加方便快捷,数据更加安全。以链为单元处理用户的数据写入与查询请求:用户写入数据的请求,根据时间戳写入链中对应时间范围的组;用户的查询请求,根据查询的时间范围,从涉及到的组中查询数据并归并后返回给用户。
其中,将所有的链统一管理包括:
多个用户使用多个的链或共享同一个链;
一个用户有一个或多个链;
任意两个链之间彼此隔离。
其中,根据资源使用情况将链设置为共享或独占包括:
根据资源使用情况将链从共享切换成独占;或根据资源使用情况将链从独占切换成共享。
将所有的链统一管理起来为用户分配资源:用户可以在资源不足或为了故障恢复,快速将一个新的实例组加入到链中,并将所有写入请求切换到新的组上;根据资源使用情况,用户之间可以共享同一个链,也可以独占一个链。
本实施例的一种时序数据库的集群化方法提高时序数据库的高可用能力,提高数据库的横向扩展能力,拥有高可用、无限扩展、弹性扩容、自动容灾等能力。将多个单机实例通过一定的组织方式联合起来,使多个实例可以协作完成用户的请求,从而提供用户更高的扩展性和负载。
本实施例的有益效果:
高可用:当集群中一个时序数据库实例出现故障时,并不会影响用户的使用,可用由其他实例来承担负载;
无限扩展:当用户的磁盘用量快满时,可以通过切换组的方式,将用户的请求导入到别的组,从而使磁盘用量没有上限;
弹性扩容:用户可以根据实际需求,选择与他人共享资源或者独占资源,并可以自由选择修改共享与独占;
自动容灾:当实际进行负载的组出现故障时,系统可以自动切换到新的组,实现自动容灾。
具体的,以influxdb作为被集群化的时序数据库实例作为依据,一个具体但非限制性的实施方案,可以分为如下几个步骤:
首先需要将多个influxdb部署在多个不同的服务器上,然后在每个机器安装一个代理服务,获取不同服务器上influxdb的IP、端口、磁盘剩余空间、网络访问延迟等信息,上报给组调度模块并记录。
调度模块获得上报信息后,将磁盘用量、网络写入延迟数值上最相近、并且拥有不同IP的几个构建为一个组,用户写入的数据,同组的每个实例都保存完整的一份。
当用户需要使用时序数据库服务时,为用户分配一个资源空闲的链,当链不存在时,创建一个时序数据库链,并选择一个空闲的组加入链中,链的初始状态只有一个组,当然也可以初始状态有多个组。
元数据管理模块在分配完毕后,记录下用户创建的资源所在的链。
当用户有写入请求时,请求处理模块从元数据管理模块获取用户资源对应的链信息,按照数据时间戳写入对应组,写入成功后返回给用户。
当用户有查询请求时,请求处理模块从元数据管理模块获取用户资源所在的链,根据用户查询的条件,将查询语句分解到各个组去查询,对于每一个组,缩小查询范围至该组的时间范围,随机查询一个实例获取查询结果;当请求处理模块获取链中所有涉及到的组的查询结果以后,根据用户的查询语句,进行归并,以查询最大值为例,则在所有返回结果中找一个最大值,再返回给用户。
当用户数据写入使得磁盘快要存满时,或者当influxdb实例组出现故障时,可以通过组调度模块进行组切换操作,此时的步骤如图2所示,开始切换时,首先找到空闲的组,将新组加入到链中,这一步要将链中最后的组结束时间设置为空闲组的开始时间,然后修改元数据表,此时当用户再有请求时,查询元数据表,新的时间戳即对应新的组,切换完成。
当用户需要从共享状态变为独享状态时,可以通过调度模块进行链分裂操作,此时的步骤如图3、图4所示,分裂前是一个组构成的链,其中有两个用户的资源,他们是共享的,分别为user1和user2,分裂后,user1独占了一组新的资源,user1的链构成是实例组1和实例组3,而user2是原来的共享用户,他的链变为了实例组1合实例组2,其中实例组1合实例组2使用的influxdb是一样的,但是逻辑上组已经切换了。所以分裂组实际上是一个组切换的过程,只是原来的链切换后对应的influxdb实例依旧是原来的。切换过后,实例组3可以设定其所在的链不允许再分配给其他用户使用,这样就保证了实例组3的独占。
当用户需要从独占变为共享时,只要重新设定实例组3可以被分配给其他用户使用即可。
经过链切换后,旧有的数据实际依旧在原来的influxdb实例中,不影响用户使用,也不会出现大规模数据的迁移。
整个架构实施完毕后,如图5所示,当用户请求到达时,首先发送到用户请求处理模块,然后去元数据管理模块获得用户元数据对应关系,再从组调度模块获得涉及的链和在用户请求范围内的实例组,最终在实例组获得查询结果后一一返回,在用户请求处理模块进行结果的归并后反馈给用户。
本发明的另一优选实施例,一种时序数据库集群化系统,包括:
信息收集模块,用于收集不同机器上的时序数据库实例信息;用于收集不同机器上的时序数据库实例信息,收集的信息包括但不限于服务器上时序数据库实例的IP、端口、磁盘剩余空间、网络访问延迟等信息,并定时发送更新信息上报给集群化系统。
组调度模块,用于将不同的时序数据库实例组合成多个组,将组与组链接形成链,并为用户分配资源,记录时序数据库实例的状态;
元数据管理模块,用于记录用户数据与时序数据库链的对应关系;
用户请求处理模块,用于通过查看元数据管理模块,获取用户数据与时序数据库对应关系,并到对应组写入或查询数据;
添加模块,用于为链添加新组,并进行组切换。
其中,组调度模块包括:
组成模块,用于从不同服务器上选取网络传输速率相当、磁盘剩余空间相当的、且没有被其他组引用的时序数据库实例组成一个组;
检测模块,用于检测实例状态,当组中某个实例出现故障时,处理用户请求时排除该实例,当某个组所有实例均不可用时进行组切换;
链分裂模块,用于将原有的链分裂为两条或多条链,其中包括独占一条或多条链资源的新链和原有的旧链;
链合并模块,用于将多条链合并为一条链。
其中,元数据管理模块包括:
定位模块,用于定位访问对应的具体时序数据库实例;
更新模块,用于资源改变时更新元数据。
其中,用户请求处理模块包括:
写入请求模块,用于响应写入请求,根据元数据管理模块查找到对应的链,并根据时间戳写入到对应链的对应组,写入对应链的所有实例后发送成功信息;
查询请求模块,用于响应查询请求,根据元数据管理模块查找到对应的链,根据查询的范围找到涉及的组,将查询范围缩小至各个组的范围,再去各个组分别执行查询,并将结果汇总发送完整的查询结果。
本发明的再一优选实施例,一种时序数据库集群化系统,包括:
信息收集模块,用于收集不同机器上的时序数据库实例信息;
组调度模块,用于将不同的时序数据库实例组合成多个组,将组与组链接形成链,并为用户分配资源,记录时序数据库实例的状态;
元数据管理模块,用于记录用户数据与时序数据库链的对应关系;对于用户的访问,定位其对应的具体时序数据库实例;
用户请求处理模块,通过查看元数据管理模块,获取用户数据与时序数据库对应关系,并到对应组写入或查询数据;
其中,信息收集模块,还可以用于收集不同机器上的时序数据库实例信息;还用于收集不同机器上的时序数据库实例信息,收集的信息包括但不限于服务器上时序数据库实例的IP、端口、磁盘剩余空间、网络访问延迟等信息,并定时发送更新信息上报给集群化系统。
其中,组调度模块,还可以用于从不同服务器上选取网络传输速率相当、磁盘剩余空间相当的、且没有被其他组引用的时序数据库实例,组成一个组;可以为链添加新组,并进行组切换,如链中最后一个组的磁盘使用量超过规定的值或组出现服务故障等情况时;实例、组状态更新,定时检测实例状态,当组中某个实例出现故障时,处理用户请求时排除该实例,当某个组所有实例均不可用时进行组切换;链分裂功能,当用户想要独占组资源时,可以将原有的链分裂为两条或多条链,其中包括想要独占一条或多条链资源的用户的新链和原有的旧链;链合并功能,当用户不需要独占链资源时,可以将多条链合并为一条链。
其中,用户请求处理模块,还可以用于用户增删改资源时,对于元数据更新,用户的写入请求,根据元数据管理模块,查找到对应的链,并根据时间戳写入到对应链的对应组,当组的所有实例都写入成功后才返回成功;用户的查询请求,根据元数据管理模块,查找到对应的链,根据查询的范围,找到涉及的组,然后将查询范围缩小至各个组的范围,再去各个组分别执行查询,最终将结果汇总聚合,返回给用户完整的查询结果。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (12)
1.一种时序数据库的集群化方法,其特征在于,包括步骤:
将多个时序数据库构建为一个组;
一个组负责一个时间段的数据写入与查询请求;
一个组或多个组连接起来构成一个链;
以链为单元处理数据写入与查询请求;
将所有的链统一管理;
根据时序数据库状态将一个新的组加入到链中,并将写入请求切换到新的组上;
其中,一个组或多个组连接起来构成一个链包括:
同一个链中的组按时间顺序前后紧密衔接,前一个组的结束时间与其后的组的起始时间相同;
根据组的磁盘用量进行组切换动作;
链中的任意两个组彼此之间互相独立。
2.如权利要求1所述的一种时序数据库的集群化方法,其特征在于,
根据资源使用情况将链设置为共享或独占。
3.如权利要求1所述的一种时序数据库的集群化方法,其特征在于,将多个时序数据库构建为一个组包括:
同组的多个时序数据库实例部署在不同的服务器上、同组的实例网络访问速度相当、同组的实例磁盘存储空间相当、同组的时序数据库实例各自保存一份完整的用户数据和一个时序数据库实例仅被一个组选中中的至少一项。
4.如权利要求1所述的一种时序数据库的集群化方法,其特征在于,一个组负责一个时间段的数据写入与查询请求包括:
组有一个时间范围、组根据写入的数据点和/或时间戳接收写入、同组的所有实例都写入数据、查询数据的范围会被缩小至该组的范围之内和通过查询同组的任意实例实现查询数据中的至少一项。
5.如权利要求1所述的一种时序数据库的集群化方法,其特征在于,组切换动作包括:
链中加入一个新的组,以切换时的当前时间为界,决定上一个组的结束时间以及新的组的开始时间。
6.如权利要求1所述的一种时序数据库的集群化方法,其特征在于,根据时序数据库状态将一个新的组加入到链中,并将写入请求切换到新的组上包括:
选择一个新的组,且该组当前状态没有被任何链引用;
将链中最后一个组的结束时间与链中将要加入的新组的开始时间设置为相同;
将请求根据时间戳导向新的组。
7.如权利要求1所述的一种时序数据库的集群化方法,其特征在于,以链为单元处理用户的数据写入与查询请求包括:
根据写入数据请求的时间戳写入链中对应时间范围的组;
根据查询请求的查询的时间范围,从涉及到的组中查询数据并归并后返回。
8.如权利要求1所述的一种时序数据库的集群化方法,其特征在于,将所有的链统一管理包括:
多个用户使用多个的链或共享同一个链;
一个用户有一个或多个链;
任意两个链之间彼此隔离。
9.如权利要求2所述的一种时序数据库的集群化方法,其特征在于,根据资源使用情况将链设置为共享或独占包括:
根据资源使用情况将链从共享切换成独占;或根据资源使用情况将链从独占切换成共享。
10.一种时序数据库集群化系统,其特征在于,包括:
信息收集模块,用于收集不同机器上的时序数据库实例信息;
组调度模块,用于将不同的时序数据库实例组合成多个组,将组与组链接形成链,并分配资源,记录时序数据库实例的状态;
元数据管理模块,用于记录用户数据与时序数据库链的对应关系;
用户请求处理模块,用于通过查看元数据管理模块,获取用户数据与时序数据库对应关系,并到对应组写入或查询数据;
添加模块,用于为链添加新组,并进行组切换;
其中,组调度模块包括:
组成模块,用于从不同服务器上选取网络传输速率相当、磁盘剩余空间相当的、且没有被其他组引用的时序数据库实例组成一个组;
检测模块,用于检测实例状态,当组中某个实例出现故障时,处理用户请求时排除该实例,当某个组所有实例均不可用时进行组切换;
链分裂模块,用于将原有的链分裂为两条或多条链,其中包括独占一条或多条链资源的新链和原有的旧链;
链合并模块,用于将多条链合并为一条链。
11.如权利要求10所述的一种时序数据库集群化系统,其特征在于,元数据管理模块包括:
定位模块,用于定位访问对应的具体时序数据库实例;
更新模块,用于资源改变时更新元数据。
12.如权利要求10所述的一种时序数据库集群化系统,其特征在于,
用户请求处理模块包括:
写入请求模块,用于响应写入请求,根据元数据管理模块查找到对应的链,并根据时间戳写入到对应链的对应组,写入对应链的所有实例后发送成功信息;
查询请求模块,用于响应查询请求,根据元数据管理模块查找到对应的链,根据查询的范围找到涉及的组,将查询范围缩小至各个组的范围,再去各个组分别执行查询,并将结果汇总发送完整的查询结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611211434.1A CN106815318B (zh) | 2016-12-24 | 2016-12-24 | 一种时序数据库的集群化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611211434.1A CN106815318B (zh) | 2016-12-24 | 2016-12-24 | 一种时序数据库的集群化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106815318A CN106815318A (zh) | 2017-06-09 |
CN106815318B true CN106815318B (zh) | 2020-08-04 |
Family
ID=59110099
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611211434.1A Active CN106815318B (zh) | 2016-12-24 | 2016-12-24 | 一种时序数据库的集群化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106815318B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111046081B (zh) * | 2019-12-06 | 2023-09-12 | 和利时卡优倍科技有限公司 | 一种工业时序数据的访问方法及系统 |
CN111008023B (zh) * | 2019-12-06 | 2024-01-09 | 无锡华云数据技术服务有限公司 | 一种实例部署方法及系统 |
WO2022241718A1 (zh) * | 2021-05-20 | 2022-11-24 | 华为技术有限公司 | 一种数据存取方法、互联系统及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251803A (zh) * | 2008-03-11 | 2008-08-27 | 浪潮电子信息产业股份有限公司 | Oracle RAC自动添加删除结点的方法 |
CN102710763A (zh) * | 2012-05-29 | 2012-10-03 | 新华网股份有限公司 | 一种分布式缓存池化、分片及故障转移的方法及系统 |
CN104516894A (zh) * | 2013-09-27 | 2015-04-15 | 国际商业机器公司 | 用于管理时间序列数据库的方法和装置 |
CN104765794A (zh) * | 2015-03-25 | 2015-07-08 | 深圳市创梦天地科技有限公司 | 一种数据库分区方法及装置 |
CN105760553A (zh) * | 2016-03-25 | 2016-07-13 | 北京奇虎科技有限公司 | 数据管理方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8078547B2 (en) * | 2007-07-30 | 2011-12-13 | Bayer Materialscience Llc | Method of calculating and displaying premium freight costs |
-
2016
- 2016-12-24 CN CN201611211434.1A patent/CN106815318B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101251803A (zh) * | 2008-03-11 | 2008-08-27 | 浪潮电子信息产业股份有限公司 | Oracle RAC自动添加删除结点的方法 |
CN102710763A (zh) * | 2012-05-29 | 2012-10-03 | 新华网股份有限公司 | 一种分布式缓存池化、分片及故障转移的方法及系统 |
CN104516894A (zh) * | 2013-09-27 | 2015-04-15 | 国际商业机器公司 | 用于管理时间序列数据库的方法和装置 |
CN104765794A (zh) * | 2015-03-25 | 2015-07-08 | 深圳市创梦天地科技有限公司 | 一种数据库分区方法及装置 |
CN105760553A (zh) * | 2016-03-25 | 2016-07-13 | 北京奇虎科技有限公司 | 数据管理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106815318A (zh) | 2017-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10795905B2 (en) | Data stream ingestion and persistence techniques | |
US10691716B2 (en) | Dynamic partitioning techniques for data streams | |
US9794135B2 (en) | Managed service for acquisition, storage and consumption of large-scale data streams | |
US9276959B2 (en) | Client-configurable security options for data streams | |
US10635644B2 (en) | Partition-based data stream processing framework | |
CN110096336B (zh) | 数据监控方法、装置、设备和介质 | |
EP3069275A1 (en) | Data stream ingestion and persistence techniques | |
CN104965850A (zh) | 一种基于开源技术的数据库高可用实现方法 | |
US10303678B2 (en) | Application resiliency management using a database driver | |
EP3786802B1 (en) | Method and device for failover in hbase system | |
CN106815318B (zh) | 一种时序数据库的集群化方法及系统 | |
US10116736B2 (en) | System for dynamically varying traffic routing modes in a distributed cluster and method therefor | |
CN106874343B (zh) | 一种时序数据库的数据删除方法及系统 | |
US10083201B2 (en) | System for maintaining consistency across a decentralized database cluster and method therefor | |
Salehian et al. | Comparison of spark resource managers and distributed file systems | |
CN107566341B (zh) | 一种基于联邦分布式文件存储系统的数据持久化存储方法及系统 | |
CN115964176B (zh) | 云计算集群调度方法、电子设备和存储介质 | |
CN116302574A (zh) | 一种基于MapReduce的并发处理方法 | |
Pankowski | Consistency and availability of Data in replicated NoSQL databases | |
Seybold et al. | Gibbon: An availability evaluation framework for distributed databases | |
CN112988904A (zh) | 一种分布式数据管理系统及数据存储方法 | |
CN106844021B (zh) | 计算环境资源管理系统及其管理方法 | |
US10394817B2 (en) | System and method for implementing a database | |
US11853317B1 (en) | Creating replicas using queries to a time series database | |
CN115550458A (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 |