CN116578621A - 时序数据库集群构建方法、数据存储方法及相关装置 - Google Patents

时序数据库集群构建方法、数据存储方法及相关装置 Download PDF

Info

Publication number
CN116578621A
CN116578621A CN202310358035.1A CN202310358035A CN116578621A CN 116578621 A CN116578621 A CN 116578621A CN 202310358035 A CN202310358035 A CN 202310358035A CN 116578621 A CN116578621 A CN 116578621A
Authority
CN
China
Prior art keywords
target node
container
cluster
service
time sequence
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.)
Pending
Application number
CN202310358035.1A
Other languages
English (en)
Inventor
王崇虎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XFusion Digital Technologies Co Ltd
Original Assignee
XFusion Digital Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by XFusion Digital Technologies Co Ltd filed Critical XFusion Digital Technologies Co Ltd
Priority to CN202310358035.1A priority Critical patent/CN116578621A/zh
Publication of CN116578621A publication Critical patent/CN116578621A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种时序数据库集群构建方法、数据存储方法及相关装置,该方法包括:目标节点获取influx‑proxy服务的镜像和influxDB服务的镜像;目标节点根据influx‑proxy服务的镜像在目标节点上创建influx‑proxy容器,目标节点通过influx‑proxy容器根据influxDB服务的镜像在目标节点上创建influxDB容器。有利于实现influxDB集群的轻量化部署,降低扩容难度。

Description

时序数据库集群构建方法、数据存储方法及相关装置
技术领域
本申请涉及计算机领域,尤其涉及一种时序数据库集群构建方法、数据存储方法及相关装置。
背景技术
influxDB是一个由InfluxData公司开发的开源时序型数据库。它由Go语言写成,着力于高性能地查询与存储时序型数据。influxDB被广泛应用于存储系统的监控数据,IoT行业的实时数据等场景。influx proxy是一个基于高可用、一致性哈希的influxDB集群代理服务,实现了influxDB高可用集群的部署方案,具有动态扩/缩容、故障恢复、数据同步等能力。
目前搭建influxDB集群的方法有两种:一是基于Kubernetes集群搭建influxDBS集群;二是通过原生dockerrun方式搭建influxDB集群。其中,基于Kubernetes集群搭建influxDB集群,需要安装大量组件及进行复杂配置,并且不够轻量化。通过原生dockerrun方式搭建influxDB集群,不易扩展,并且无法实现跨节点的高可用性和高可靠性。
发明内容
本申请实施例提供一种时序数据库集群构建方法、数据存储方法及相关装置,有利于实现时序数据库集群的轻量化部署,降低扩容难度。
第一方面,本申请实施例提供一种时序数据库集群构建方法,该方法包括:
目标节点获取集群代理服务的镜像和时序数据库服务的镜像;目标节点根据集群代理服务的镜像在目标节点上创建集群代理容器,目标节点通过集群代理容器根据时序数据库服务的镜像在目标节点上创建时序数据库容器,时序数据库容器用于构建时序数据库集群。
其中,目标节点可以为服务器集群如Swarm集群等中的节点。在一个示例中,目标节点可以为Swarm集群中的管理节点。Swarm为集群管理系统,是一个软件,用于实现集群管理功能。
结合第一方面,在一个可能的实现方式中,集群代理容器包括集群代理启动程序,目标节点通过集群代理容器根据时序数据库服务的镜像在目标节点上创建据时序数据库容器,包括:
目标节点通过集群代理启动程序调用目标节点的Swarm的应用程序编程接口(applicationprogramming interface,API)创建目标节点的时序数据库服务;目标节点根据时序数据库服务中用于创建时序数据库容器的参数使用时序数据库服务的镜像在目标节点上创建时序数据库容器。
结合第一方面,在一种可能的实施例中,本申请实施例的方法还包括:
目标节点通过集群代理启动程序查询目标节点上是否已创建时序数据库服务;若确定目标节点上未创建时序数据库服务,则目标节点通过集群代理容器根据时序数据库服务的镜像在目标节点上创建时序数据库服务。
结合第一方面,在一个可能的实现方式中,用于创建时序数据库容器的参数是通过Swarm的套接字(socket)通道传入Swarm的。
结合第一方面,在一个可能的实现方式中,本申请实施例还包括:
目标节点通过集群代理容器中的集群代理启动程序获取目标节点中的时序数据库服务信息,目标节点通过集群代理启动程序根据目标节点中的时序数据库服务信息配置集群代理容器中的集群代理开源软件,并启动集群代理容器中的集群代理开源软件,以将目标节点中的时序数据库服务分配到一个哈希环。
结合第一方面,在一个可能的实现方式中,目标节点通过时序数据库容器的挂载参数将时序数据库容器内持久化数据目录挂载到主机侧持久化数据目录。采用该方式可以避免容器重启后数据丢失。
结合第一方面,在一个可能的实现方式中,本申请实施例还包括:
目标节点将Swarm中集群代理容器的端口映射到主机侧。通过将集群代理容器的端口映射到主机侧,可以使得容器内外的进程均可以访问集群代理服务。
结合第一方面,在一个可能的实现方式中,时序数据库集群中的容器是基于覆盖(overlay)网络通信的。
第二方面,本申请实施例提供一种目标节点,包括:
获取单元,用于获取集群代理服务的镜像和时序数据库服务的镜像;
创建单元,用于根据集群代理服务的镜像在目标节点上创建集群代理容器,目标节点通过influx-proxy容器根据时序数据库服务的镜像在目标节点上创建时序数据库容器,时序数据库容用于构建时序数据库集群。
结合第二方面,在一个可能的实现方式中,集群代理容器包括集群代理启动程序,在通过集群代理容器根据时序数据库服务的镜像在目标节点上创建据时序数据库容器的方面,创建单元具体用于:
通过集群代理启动程序调用目标节点的Swarm的API创建目标节点的时序数据库服务;根据时序数据库服务中用于创建时序数据库容器的参数使用时序数据库服务的镜像在目标节点上创建时序数据库容器。
结合第二方面,在一个可能的实施例中,创建单元还用于:
通过集群代理启动程序查询目标节点上是否已创建时序数据库服务;若确定目标节点上未创建时序数据库服务,则通过集群代理启动程序调用目标节点的Swarm的API创建目标节点的时序数据库服务。
结合第二方面,在一个可能的实现方式中,用于创建时序数据库容器的参数是通过Swarm的socket通道传入目标节点的Swarm的。
结合第二方面,在一个可能的实现方式中,
获取单元,还用于通过集群代理容器中的集群代理启动程序获取目标节点中的时序数据库服务信息,
目标节点还包括:
配置单元,用于通过集群代理启动程序根据目标节点中的时序数据库服务信息配置目标节点的集群代理容器中的集群代理开源软件,并启动集群代理容器中的集群代理开源软件,以将目标节点中的时序数据库服务分配到一个哈希环。
结合第二方面,在一个可能的实现方式中,通过时序数据库容器的挂载参数将时序数据库容器内持久化数据目录挂载到主机侧持久化数据目录。
结合第二方面,在一个可能的实现方式中,目标节点还包括:
映射单元,用于将Swarm中集群代理容器的端口映射到主机侧。
结合第二方面,在一个可能的实现方式中,时序数据库集群中的容器是基于overlay网络通信的。
第三方面,本申请实施例提供一种数据存储方法,应用于使用如第一方面或者第一方面任一实现方式创建的时序数据库集群,时序数据库集群包括至少一个集群代理容器和至少一个哈希环,每个哈希环包括至少一个时序数据库容器,本实施例的方法包括:
目标节点获取写数据请求,写数据请求包括待写入的数据;目标节点中包含一个集群代理容器和至少一个时序数据库容器;目标节点将基于负载均衡策略通过至少一个集群代理容器将写数据请求发送至至少一个哈希环中的时序数据库容器中,以使接收到写数据请求的时序数据库容器将待写入的数据写入。
需要指出的是,第三方面所能达到的有益效果可参考第一方面中的有益效果,此处不再赘述。
第四方面,本申请实施例提供一种目标节点,包括处理器和存储器。存储器用于存储程序代码。处理器用于调用存储于存储器的程序代码,以执行第一方面、第二方面或第一方面的任一种可能的实现方式提供的方法。
第五方面,本申请实施例提供一种服务器集群,该服务器集群包括多个服务器节点,如第一方面、第一方面的任一中可能的实现方式中或第三方面中的目标节点为多个服务器节点中的一个,或者多个服务器节点中的虚拟机。
第六方面,本申请实施例提供了一种计算机存储介质,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如第一方面、第三方面或第一方面任一种可能的实施方式提供的方法。
第七方面,本申请实施例提供一种计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行如第一方面、第三方面或第一方面任一种可能的实现方式提供的方法。
可以理解地,第二方面所述的目标节点、第四方面所述的目标节点、第五方面所述的服务器集群、第六方面所述的计算机存储介质和第七方面所述的计算机程序产品均用于实现第一方面中任一所提供的方法。因此,其所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
图1a为Swarm集群架构示意图;
图1b为influxDB集群架构示意图;
图2为本申请实施例提供的一种influxDB集群构建方法的流程示意图;
图3为本申请实施例提供的另一种influxDB集群构建方法的流程示意图;
图4为本申请实施例提供的一种节点示意图;
图5为本申请实施例提供的一种influxDB集群架构示意图;
图6为本申请实施例提供的一种目标节点的结构示意图;
图7为本申请实施例提供的一种服务器节点的结构示意图。
具体实施方式
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
首先对本申请中的相关术语进行解释。
容器,一种虚拟化的操作系统,通过Linux内核的命名空间隔离实现,实质上是一个被高度隔离的进程。Linux为一种操作系统。
服务的镜像,服务的镜像是容器的静态方式,与容器的关系就像是软件包和软件进程的关系一样。
Swarm为集群管理系统,是一个软件,提供集群管理能力。
influxDB服务,是指一组提供相同业务能力的influxDB容器,能够共同提供业务服务,具备扩容能力。influxDB服务定义如下信息:influxDB服务名称、使用哪个镜像来创建influxDB容器、需要运行influxDB容器的数量、influxDB容器要连接在哪个网络上。
influx-proxy服务,是指一组提供相同业务能力的influx-proxy容器,能够共同提供业务服务,具备扩容能力。influx-proxy服务定义如下信息:influx-proxy服务名称、使用哪个镜像来创建influx-proxy容器、需要运行influx-proxy容器的数量、influx-proxy容器要连接在哪个网络上。
influx-proxy开源软件,用于提供influxDB集群的能力。
overlay网络,是Swarm提供的一种容器网络类型,与主机的网络是隔离开的,可以实现跨节点容器间的网络通信。
下面以时序数据库中的influxDB、集群代理服务中的influx-proxy服务、集群代理容器中的influx-proxy容器为例来具体说明本申请的方案。对应的,集群代理开源软件可以为influx-proxy开源软件,集群代理启动程序可以为influx-proxy启动程序。
下面结合附图对本申请的实施例进行描述。
参见图1a,图1a为一种Swarm集群架构示意图。如图1a所示,该架构包括至少一个管理节点和至少一个工作节点。
其中,管理节点可以是一个物理机,也可以是一个虚拟机;工作节点可以是一个物理机,也可以是一个虚拟机。
管理节点负责整个Swarm集群的管理工作,包括集群的配置、服务管理、容器编排等所有跟集群有关的工作。这里的服务可以包括influx-proxy服务和influxDB服务。在管理节点有多个时,会选举出一个管理节点作为主节点。主节点负责容器的编排。gossip网络用于实现gossip协议的功能,gossip协议用于实现Swarm集群的选举,比如从多个管理节点中选举出主节点。
工作节点接收和执行管理节点分配的任务,运行在响应的服务上。
任务实质上是一个容器和在容器上运行的命令。任务与容器一一对应,在分配的节点上运行。
参见图1b,图1b为一种influxDB集群架构示意图。如图1b所示,该架构包括客户端、至少一个influx-proxy容器和至少一个哈希环。每个哈希环包括至少一个influxDB容器。至少一个哈希环分别位于不同的物理机中;当存在多个哈希环时,多个哈希环之间互为备份。也就是说,多个哈希环之间存储的数据是相同的。比如哈希环A包括influxDB1容器、influxDB2容器和influxDB3容器,哈希环B也包括influxDB1容器、influxDB2容器和influxDB3容器。其中,可以是:哈希环A中influxDB1容器存储的数据与哈希环B中influxDB1容器存储的数据相同,哈希环A中influxDB2容器存储的数据与哈希环B中influxDB2容器存储的数据相同,哈希环A中influxDB3容器存储的数据与哈希环B中influxDB3容器存储的数据相同。当哈希环A中influxDB3容器存储的数据发生变化时,哈希环B中influxDB3容器存储的数据发生同样的变化。
客户端可以通过influx-proxy容器查询哈希环内influxDB容器存储的数据或者通过influx-proxy容器向哈希环内influxDB容器写入数据。其中,客户端和influx-proxy容器基于overlay网络进行通信。具体的,客户端向influx-proxy容器发送查询指令或者写入指令。influx-proxy容器接收到查询指令或者写入指令后,执行对应的操作。可选的,在存在多个influx-proxy容器时,Swarm会根据负载均衡策略向influx-proxy容器发送查询指令或者写入指令,以使多个influx-proxy容器上的负载满足预设的条件。其中,预设条件可以是多个influx-proxy容器中两两influx-proxy容器上待执行的指令数量的差值小于数量阈值。
当存在多个influx-proxy容器,多个influx-proxy容器的功能互为备份,也就是说,当一个influx-proxy容器故障时,其他的influx-proxy容器能够正常的工作。
参见图2,图2为本申请实施例提供的一种influxDB集群构建方法的流程示意图。如图2所示,该方法包括:
S201、目标节点获取influx-proxy服务的镜像和influxDB服务的镜像。
其中,influx-proxy服务的镜像包括influx-proxy程序及相应的启动程序。该启动程序用于查询目标节点中influxDB服务信息,配置并启动influx-proxy开源软件。
influxDB是一个时间序列数据库。influx-proxy用于提供influxDB集群的能力。
目标节点为Swarm集群(或服务器集群等)中的一个节点,在Swarm集群中,节点可是物理机,也可以是虚拟机。
通过Docker networkcreate<network-name>-d overlay命令创建overlay网络。overlay网络用于Swarm集群中节点之间的通信和各节点中的容器之间的通信。
S202、目标节点加载influx-proxy服务的镜像和influxDB服务的镜像。
具体的,目标节点通过dockerload-i<服务镜像路径>命令来实现服务镜像的加载。
应理解,目标节点在加载influx-proxy服务的镜像和influxDB服务的镜像之前,需要在目标节点上完成运行环境的准备工作。具体的,在目标节点上的操作系统安装Docker软件,并配置IP地址,以保证网络正常。该操作系统为常见的linux系统,比如Debian系统、Gentoo系统、Ubuntu系统等。
通过dockerswarminit命令使能Swarm模式,以使该目标节点变成Swarm集群的管理节点。
在其他节点上的操作系统部署Docker,并配置IP地址,以保证网络正常。其他节点通过运行dockerswarmjoin命令,使得其他节点以管理节点加入Swarm集群中。其中,目标节点是主节点。
S203、目标节点根据influx-proxy服务的镜像在目标节点上创建influx-proxy容器。
具体的,目标节点通过其API创建目标节点对应的influx-proxy服务,influx-proxy服务中参数定义了服务名称、使用哪个镜像来创建influx-proxy容器、需要运行influx-proxy容器的数量、influx-proxy容器要连接在哪个网络上等。目标节点基于influx-proxy服务中的相关参数确定出支撑influx-proxy服务的influx-proxy服务的镜像,并根据influx-proxy服务的镜像在目标节点中创建influx-proxy容器。目标节点基于influx-proxy服务中的相关参数对influx-proxy容器进行网络连接。
在此需要指出的是,本申请为了举例说明,只给出了influx-proxy服务的镜像。当然,支撑influx-proxy服务还可以包括其他镜像,在此不做限定。
在一个示例中,可以通过如下命令创建influx-proxy服务:
docker service create
--name InfluxProxyService\
--hostname={{.Node.ID}}-{{.Task.ID}}\
--network<overlay网络>\
--mode global\
其中,nameInfluxProxyService表示所创建的服务名称为:InfluxProxyService;hostname={{.Node.ID}}-{{.Task.ID}}表示所创建的服务的操作系统的主机名为{{.Node.ID}}-{{.Task.ID}},在该实施例中,Node.ID为目标节点的ID,Task.ID为目标节点中需要调用该服务的任务的ID;network<overlay网络名称>表示将所创建的服务连接到overlay网络;mode global表示在Swarm集群中所有的节点上均创建一个容器。
influx-proxy服务包括两个关键程序,一个是influx-proxy启动程序,该启动程序有两个功能:1)用于配置启动同一容器内的influx-proxy开源软件;2)创建属于当前节点的influxDB服务;另一个是influx-proxy开源软件,由属于同一容器内的启动程序配置及启动,与influxDB容器配合组建influxDB集群。
在目标节点上创建influx-proxy服务后,目标节点根据influx-proxy服务的参数和influx-proxy服务的镜像在目标节点上创建influx-proxy容器。
S204、目标节点通过influx-proxy容器根据influxDB服务的镜像在目标节点上创建influxDB容器。
在一个可能的实现方式中,influx-proxy容器包括influx-proxy启动程序,目标节点通过influx-proxy容器根据influxDB服务的镜像在目标节点中创建influxDB容器,包括:
目标节点通过influx-proxy启动程序调用目标节点的Swarm的API创建目标节点的influxDB服务,目标节点根据influxDB服务中用于创建influxDB容器的参数和influxDB服务的镜像在目标节点上创建influxDB容器。
其中,influxDB服务定义了服务名称、使用哪个镜像来创建influxDB容器、需要运行influxDB容器的数量、influxDB容器要连接在哪个网络上等。
目标节点基于influxDB服务中的相关参数确定出支撑influxDB服务的influxDB服务的镜像,并根据influxDB服务的镜像在目标节点中创建influxDB容器。目标节点基于influxDB服务中的相关参数对influxDB容器进行网络连接和端口映射。
在一个可能的实现方式中,在目标节点通过influx-proxy容器根据influxDB服务的镜像在目标节点中创建influxDB容器之前,本实施例的方法还包括:
目标节点通过influx-proxy启动程序查询目标节点上是否已创建influxDB服务;若确定目标节点上未创建influxDB服务,则目标节点通过influx-proxy启动程序调用目标节点的Swarm的API创建目标节点的influxDB服务。
在一个可能的实现方式中,本实施例的方法还包括:
目标节点通过influx-proxy容器中的influx-proxy启动程序获取目标节点中的influxDB服务信息,目标节点通过influx-proxy启动程序根据目标节点中的influxDB服务信息配置目标节点的influx-proxy容器中的influx-proxy的开源软件,并启动influx-proxy容器中的influx-proxy开源软件,以将目标节点中的influxDB容器分配到不同的哈希环。
其中,influxDB服务包含节点ID,位于同一哈希环的influxDB服务具有相同的节点ID。
具体的,如图3所示:
S301、influx-proxy启动程序通过hostname获取本容器所处节点的ID。
其中,上述本容器是指influx-proxy启动程序所属的容器,也即是上述influx-proxy容器,这里本容器所处节点的ID就是目标节点的ID。
在influx-proxy容器创建完毕后,目标节点的influx-proxy容器中的influx-proxy启动程序通过主机名获取该influx-proxy容器所在节点的ID。
S302、influx-proxy启动程序根据目标节点的ID获取目标节点上influxDB服务信息,若没有influxDB服务信息则进行创建。
具体的,influx-proxy启动程序通过socket通道根据目标节点的ID获取目节点上的influxDB服务信息,若未获取到influxDB服务信息,则表示目标节点上并未创建influxDB服务。influx-proxy启动程序将用于创建influxDB服务的参数传输至Swarm。
S303、目标节点的Swarm根据influx-proxy启动程序传入的参数创建influxDB服务。
其中,用于创建influxDB服务的参数包括服务名称、所连接网络的名称,节点ID、挂载的目录名称、influxDB服务的镜像的名称。应理解,用于创建influxDB服务的参数当然还可以包括其他参数,在此不做限定。
如图3所示,可以通过如下命令创建influxDB服务:
dockerservicecreate\
--network<network-name>\
--mount type=bind,source=<主机侧数据持久化目录>,destination=<容器内数据持久化目录>,bind-propagation=reslave\
--nameinfluxDB-<节点ID>\
--constraint node.id=<节点ID>
<influxDB服务镜像名>
其中,network<network-name>表示influxDB服务连接的网络。
mount type=bind,source=<主机侧数据持久化目录>,destination=<容器内数据持久化目录>,bind-propagation=reslave\用于将容器内持久化数据目录挂载到主机侧持久化数据目录上,以将持久化数据存储到主机侧,避免容器重启后数据丢失。其中,比如主机侧数据持久化目录为/var/run/docker.sock,/var/run/docker.sock为容器内数据持久化目录。
nameinfluxDB-<节点ID>用于将influxDB服务命名为“influxDB-<节点ID>”。
--constraint node.id=<节点ID>表示Swarm只在名称为<节点ID>的节点上创建influxDB容器。
在目标节点上创建influxDB服务后,目标节点根据influxDB服务的参数和influxDB服务的镜像在目标节点上创建influxDB容器。
应理解,目标节点在创建好influxDB服务后,influx-proxy启动程序通过socket通道获取目节点上的influxDB服务信息。
S304、influx-proxy启动程序获取目标节点的influxDB服务信息。
按照上述方式,Swarm集群中所有节点中的每个节点的influx-proxy启动程序均可以获取各自的influxDB服务信息,在此不再叙述。
其中,influxDB服务信息包括但不限于创建该influxDB服务的节点的ID,influxDB服务的名称和标识等。
S305、influx-proxy启动程序配置influx-proxy开源软件,并启动influx-proxy开源软件。
具体的,influx-proxy启动程序根据目标节点中的influxDB服务信息配置目标节点的influx-proxy容器中的influx-proxy开源软件,启动influx-proxy容器中的influx-proxy开源软件,以将目标节点中的influxDB服务分配到一个哈希环。
按照上述方式,Swarm集群中所有节点上的influxDB服务可以分配到不同的哈希环。
其中,influx-proxy开源软件的配置结果可以为:
上述配置信息是将名称为“influxDB-<节点ID>”的influxDB服务分配到名称为“circle-1”的哈希环中,并且将名称为“influxDB-<节点ID>”的influxDB服务的端口配置为8080。按照上述配置方式,可以将所有节点中的influxDB服务分配到不同的哈希环中。
在此需要指出的是,本申请中将influxDB服务分配到哈希环,本质是将基于该influxDB服务构建的容器分配到一个哈希环。
在一个示例中,influxDB容器的数据是通过influxDB容器的挂载参数将容器内持久化数据目录挂载到主机目录上的,以将持久化数据存储到主机侧,避免容器重启后数据丢失。其中,挂载参数包括挂载类型、源目录和目的目录。其中,源目录为主机侧数据持久化目录,目的目录为容器内数据持久化目录。
按照上述方式,可以创建如图4所示的两个节点:节点1和节点2。在节点1和节点2的操作系统(也即是host OS)上部署有Swarm。两个节点上的Swarm均创建有两个容器,分别为influx-proxy容器和influxDB容器。其中,节点1中influxDB容器是基于名称influxDB-节点1的influxDB服务创建的,节点2中influxDB容器是基于名称influxDB-节点2的influxDB服务创建的。通过挂载的方式将分别两个节点中的influxDB容器内数据持久化目录挂载到两个节点对应的主机的数据持久化目录上,以将持久化数据存储到主机侧,避免容器重启后数据丢失。如图5所示,两个节点中的容器通过overlay网络进行通信。安装在主机中的客户端通过overlay网络向两个节点中的容器分发任务。分发任务时会考虑负载均衡,负载均衡策略是由Swarm执行的。
可选的,在节点中创建完后influx-proxy容器和influxDB容器,将influx-proxy容器的端口映射到该节点或者该节点对应的主机侧,以使容器内外的进程均可以访问influx-proxy服务。应理解,若仅通过容器内的网络就可以提供服务的,则不需要进行端口的映射。
可以看出,在本申请的方案中,使用Docker原生的Swarm作为influx集群的基础管理设施,可以实现集群的轻量化部署,减低部署的复杂度。通过一个influx-proxy启动程序管理influxdb容器的创建和influx-proxy开源软件的配置,在扩容时只需要通过Swarm向influx集群中添加节点,无需其他操作即可进行influxdb的扩容,influx集群扩容简单。
本申请实施例还提供的一种数据存储方法,应用于采用图2-图3所示实施例创建的influxDB集群。influxDB集群包括至少一个influx-proxy容器和至少一个哈希环,每个所述哈希环包括至少一个influxDB容器。上述目标节点的Swarm中创建的influx-proxy容器和influxDB容器均包含于influxDB集群中。
目标节点获取写数据请求,写数据请求包括待写入的数据;目标节点将基于负载均衡策略通过至少一个influx-proxy容器将写数据请求发送至至少一个哈希环中的influxDB容器中,以使接收到写数据请求的influxDB容器将待写入的数据写入。
具体的,目标节点的Swarm获取的写数据请求可以来自于客户端。在接收到写数据请求后,目标节点的Swarm会将写数据请求传输至influx-proxy容器,influx-proxy容器再将接收到的写数据请求传输至每个哈希环的一个influxDB容器中,influxDB容器将接收的写数据请求中的待写入数据写入influxDB容器的目录中。最终达到将待写入的数据写入每个哈希环中。
由于将写数据请求中待写入的数据写入每个哈希环中任一个influxDB容器中,因此influx-proxy容器需要执行多个将写数据请求传输至influxDB容器的操作。当存在多个influx-proxy容器时,为了均衡多个influx-proxy容器的工作量,目标节点的Swarm会基于负载均衡策略将写数据请求传输至合适的influx-proxy容器,以使多个influx-proxy容器上的负载均衡,也即是使得多个influx-proxy容器所执行的任务的数量的差值小于预设阈值。
本申请实施例还提供一种服务器集群,该服务器集群包括多个服务器节点,图2和图3所示实施例中的目标节点为一个服务器节点或者服务器节点中的虚拟机。
服务器节点为具有计算能力和存储能力的设备。
参见图6,图6为本申请实施例提供的一种目标节点的结构示意图。如图6所示,该目标节点600包括:
获取单元601,用于获取influx-proxy服务的镜像和influxDB服务的镜像;
创建单元602,用于根据influx-proxy服务的镜像在目标节点上创建influx-proxy容器,目标节点通过influx-proxy容器根据influxDB服务的镜像在目标节点上创建influxDB容器,influxDB容器用于创建influxDB集群。
在一个可能的实现方式中,influx-proxy容器包括influx-proxy启动程序,在通过influx-proxy容器根据influxDB服务的镜像在目标节点上创建据influxDB容器的方面,创建单元602具体用于:
通过influx-proxy启动程序调用目标节点的Swarm的API创建目标节点的influxDB服务;根据influxDB服务中用于创建influxDB容器的参数使用influxDB服务的镜像在目标节点上创建influxDB容器。
在一个可能的实施例中,创建单元602还用于:
通过influx-proxy启动程序查询目标节点上是否已创建influxDB服务;若确定目标节点上未创建influxDB服务,则通过influx-proxy启动程序调用目标节点的Swarm的API创建目标节点的influxDB服务。
在一个可能的实现方式中,用于创建influxDB容器的参数是通过Swarm的socket通道传入所述Swarm的。
在一个可能的实现方式中,
获取单元601,还用于通过influx-proxy容器中的influx-proxy启动程序获取目标节点中的influxDB服务信息,
目标节点600还包括:
配置单元603,用于通过influx-proxy启动程序根据目标节点中的influxDB服务信息配置目标节点的influxDB容器中的influx-proxy开源软件,并启动influx-proxy容器中的influx-proxy开源软件,以将目标节点中的influxDB服务分配到哈希环中。
在一个可能的实现方式中,通过influxDB容器的挂载参数将influxDB容器内持久化数据目录挂载到主机侧持久化数据目录。
在一个可能的实现方式中,目标节点600还包括:
映射单元604,用于将Swarm中influx-proxy容器的端口映射到主机侧。
在一个可能的实现方式中,influxDB集群中的容器是基于overlay网络通信的。
值得指出的是,其中,目标节点600的具体功能实现方式可以参见上述图2所示的influxDB集群构建方法的描述,比如获取单元601用于执行S201的相关内容,创建单元602、配置单元603和映射单元604用于执行S202-S204的相关内容,这里不再进行赘述。目标节点600中的各个单元或模块可以分别或全部合并为一个或若干个另外的单元或模块来构成,或者其中的某个(些)单元或模块还可以再拆分为功能上更小的多个单元或模块来构成,这可以实现同样的操作,而不影响本发明的实施例的技术效果的实现。上述单元或模块是基于逻辑功能划分的,在实际应用中,一个单元(或模块)的功能也可以由多个单元(或模块)来实现,或者多个单元(或模块)的功能由一个单元(或模块)实现。
当然,目标节点600还用于实现如图6所示的数据存储方法,在此不再叙述。
基于上述方法实施例以及目标节点的实施例的描述,请参见图7,本发明实施例还提供的一种服务器节点700的结构示意图。该服务器节点用于执行上述时序数据库集群构建方法,或者数据存储方法。上述目标节点600可以为服务器节点700,也可以为服务器节点700中的虚拟机。
图7所示的服务器节点700(该服务器节点700具体可以是一种服务器设备)包括存储器701、处理器702、通信接口703以及总线704。其中,存储器701、处理器702、通信接口703通过总线704实现彼此之间的通信连接。
存储器701可以是ROM,静态存储设备,动态存储设备或者,RAM。
存储器701可以存储程序,当存储器701中存储的程序被处理器702执行时,处理器702和通信接口703用于执行本申请实施例的时序数据库集群构建方法或者数据存储方法的各个步骤。
处理器702可以采用通用的CPU,微处理器,ASIC,GPU或者一个或多个集成电路,用于执行相关程序,以实现本申请实施例的服务器节点700中的单元所需执行的功能,或者执行本申请方法实施例的时序数据库集群构建方法或者数据存储方法。
处理器702还可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,本申请的influxDB集群构建方法或者数据存储方法的各个步骤可以通过处理器702中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器702还可以是通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器701,处理器702读取存储器701中的信息,结合其硬件完成本申请实施例的目标节点600中包括的单元所需执行的功能,或者执行本申请方法实施例的时序数据库集群构建方法或者数据存储方法。
通信接口703使用例如但不限于收发器一类的收发装置,来实现服务器节点700与其他设备或通信网络之间的通信。例如,可以通过通信接口703获取数据。
总线704可包括在服务器节点700各个部件(例如,存储器701、处理器702、通信接口703)之间传送信息的通路。
应注意,尽管图7所示的服务器节点700仅仅示出了存储器、处理器、通信接口,但是在具体实现过程中,本领域的技术人员应当理解,服务器节点700还包括实现正常运行所必须的其他器件。同时,根据具体需要,本领域的技术人员应当理解,服务器节点700还可包括实现其他附加功能的硬件器件。此外,本领域的技术人员应当理解,服务器节点700也可仅仅包括实现本申请实施例所必须的器件,而不必包括图7中所示的全部器件。
本申请实施例还提供了一种芯片,所述芯片包括处理器与数据接口,所述处理器通过所述数据接口读取存储器上存储的指令,以实现所述的时序数据库集群构建方法或者数据存储方法。
可选地,作为一种实现方式,所述芯片还可以包括存储器,所述存储器中存储有指令,所述处理器用于执行所述存储器上存储的指令,当所述指令被执行时,所述处理器用于执行所述的时序数据库集群构建方法或者数据存储方法。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。
本申请实施例还提供了一种包含指令的计算机程序产品。当该计算机程序产品在计算机或处理器上运行时,使得计算机或处理器执行上述任一个方法中的一个或多个步骤。
本领域技术人员能够领会,结合本文公开描述的各种说明性逻辑框、模块和算法步骤所描述的功能可以硬件、软件、固件或其任何组合来实施。如果以软件来实施,那么各种说明性逻辑框、模块、和步骤描述的功能可作为一或多个指令或代码在计算机可读媒体上存储或传输,且由基于硬件的处理单元执行。计算机可读媒体可包含计算机可读存储媒体,其对应于有形媒体,例如数据存储媒体,或包括任何促进将计算机程序从一处传送到另一处的媒体(例如,基于通信协议)的通信媒体。以此方式,计算机可读媒体大体上可对应于(1)非暂时性的有形计算机可读存储媒体,或(2)通信媒体,例如信号或载波。数据存储媒体可为可由一或多个计算机或一或多个处理器存取以检索用于实施本申请中描述的技术的指令、代码和/或数据结构的任何可用媒体。计算机程序产品可包含计算机可读媒体。
作为实例而非限制,此类计算机可读存储媒体可包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁性存储装置、快闪存储器或可用来存储指令或数据结构的形式的所要程序代码并且可由计算机存取的任何其它媒体。并且,任何连接被恰当地称作计算机可读媒体。举例来说,如果使用同轴缆线、光纤缆线、双绞线、数字订户线(DSL)或例如红外线、无线电和微波等无线技术从网站、服务器或其它远程源传输指令,那么同轴缆线、光纤缆线、双绞线、DSL或例如红外线、无线电和微波等无线技术包含在媒体的定义中。但是,应理解,所述计算机可读存储媒体和数据存储媒体并不包括连接、载波、信号或其它暂时媒体,而是实际上针对于非暂时性有形存储媒体。如本文中所使用,磁盘和光盘包含压缩光盘(CD)、激光光盘、光学光盘、数字多功能光盘(DVD)和蓝光光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光以光学方式再现数据。以上各项的组合也应包含在计算机可读媒体的范围内。
可通过例如一或多个数字信号处理器(DSP)、通用微处理器、专用集成电路(ASIC)、现场可编程逻辑阵列(FPGA)或其它等效集成或离散逻辑电路等一或多个处理器来执行指令。因此,如本文中所使用的术语“处理器”可指前述结构或适合于实施本文中所描述的技术的任一其它结构中的任一者。另外,在一些方面中,本文中所描述的各种说明性逻辑框、模块、和步骤所描述的功能可以提供于经配置以用于编码和解码的专用硬件和/或软件模块内,或者并入在组合编解码器中。而且,所述技术可完全实施于一或多个电路或逻辑元件中。
本申请的技术可在各种各样的装置或设备中实施,包含无线手持机、集成电路(IC)或一组IC(例如,芯片组)。本申请中描述各种组件、模块或单元是为了强调用于执行所揭示的技术的装置的功能方面,但未必需要由不同硬件单元实现。实际上,如上文所描述,各种单元可结合合适的软件和/或固件组合在编码硬件单元中,或者通过互操作硬件单元(包含如上文所描述的一或多个处理器)来提供。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应步骤过程的具体描述,在此不再赘述。
应理解,在本申请的描述中,除非另有说明,“/”表示前后关联的对象是一种“或”的关系,例如,A/B可以表示A或B;其中A,B可以是单数或者复数。并且,在本申请的描述中,除非另有说明,“多个”是指两个或多于两个。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。另外,为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。同时,在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念,便于理解。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是ROM,或随机存取存储器RAM,或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digitalversatile disc,DVD)、或者半导体介质,例如,固态硬盘(solid state disk,SSD)等。
以上所述,仅为本申请实施例的具体实施方式,但本申请实施例的保护范围并不局限于此,任何在本申请实施例揭露的技术范围内的变化或替换,都应涵盖在本申请实施例的保护范围之内。因此,本申请实施例的保护范围应以所述权利要求的保护范围为准。

Claims (10)

1.一种时序数据库集群构建方法,其特征在于,所述方法包括:
目标节点获取集群代理服务的镜像和时序数据库服务的镜像;
所述目标节点根据集群代理服务的镜像在所述目标节点上创建集群代理容器;
所述目标节点通过所述集群代理容器根据所述时序数据库服务的镜像在目标节点上创建时序数据库容器,所述时序数据库容器用于构建所述时序数据库集群。
2.根据权利要求1所述的方法,其特征在于,所述集群代理容器包括集群代理启动程序,所述目标节点通过所述集群代理容器根据所述时序数据库服务的镜像在目标节点上创建据时序数据库容器,包括:
所述目标节点通过所述集群代理启动程序调用所述目标节点的集群管理系统的应用程序编程接口API创建所述目标节点的时序数据库服务;
所述目标节点根据所述时序数据库服务中用于创建所述时序数据库容器的参数,使用所述时序数据库服务的镜像在所述目标节点上创建所述时序数据库容器。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
所述目标节点通过所述集群代理启动程序查询所述目标节点上是否已创建所述时序数据库服务;
若确定所述目标节点上未创建所述时序数据库服务,则目标节点通过所述集群代理启动程序调用所述目标节点的集群管理系统的API创建所述目标节点的时序数据库服务。
4.根据权利要求2或3所述的方法,其特征在于,所述用于创建所述时序数据库容器的参数是通过集群管理系统的套接字通道传入所述集群管理系统的。
5.根据权利要求2-4任一项所述的方法,其特征在于,所述方法还包括:
所述目标节点通过所述集群代理容器中的集群代理启动程序获取所述目标节点中的时序数据库服务信息,
所述目标节点通过所述集群代理启动程序根据所述目标节点中的时序数据库服务信息配置所述集群代理容器中的集群代理开源软件,并启动所述集群代理容器中的集群代理开源软件以将所述目标节点中的时序数据库服务分配到哈希环。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述目标节点通过所述时序数据库容器的挂载参数将所述时序数据库容器内持久化数据目录挂载到主机侧持久化数据目录。
7.根据权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
所述目标节点将集群管理系统中集群代理容器的端口映射到主机侧。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述时序数据库集群中的容器是基于覆盖网络通信的。
9.一种数据存储方法,其特征在于,所述方法应用于时序数据库集群,所述时序数据库集群包括至少一个集群代理容器和至少一个哈希环,每个所述哈希环包括至少一个时序数据库容器,所述方法包括:
目标节点获取写数据请求,所述写数据请求包括待写入的数据;所述目标节点中包含一个所述集群代理容器和至少一个所述时序数据库容器;
所述目标节点基于负载均衡策略通过所述至少一个集群代理容器将所述写数据请求发送至所述至少一个哈希环中的时序数据库容器中,以使接收到所述写数据请求的时序数据库容器将所述待写入的数据写入。
10.一种服务器集群,其特征在于,所述服务器集群包括多个服务器节点,所述服务器节点用于执行如权利要求1-8或9任一项所述的方法。
CN202310358035.1A 2023-04-03 2023-04-03 时序数据库集群构建方法、数据存储方法及相关装置 Pending CN116578621A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310358035.1A CN116578621A (zh) 2023-04-03 2023-04-03 时序数据库集群构建方法、数据存储方法及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310358035.1A CN116578621A (zh) 2023-04-03 2023-04-03 时序数据库集群构建方法、数据存储方法及相关装置

Publications (1)

Publication Number Publication Date
CN116578621A true CN116578621A (zh) 2023-08-11

Family

ID=87538498

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310358035.1A Pending CN116578621A (zh) 2023-04-03 2023-04-03 时序数据库集群构建方法、数据存储方法及相关装置

Country Status (1)

Country Link
CN (1) CN116578621A (zh)

Similar Documents

Publication Publication Date Title
US20200192588A1 (en) Data migration agnostic of pathing software or underlying protocol
US8473692B2 (en) Operating system image management
CN107368358B (zh) 实现客户端所在虚拟机在不同主机间迁移的装置和方法
CN111314799A (zh) 终端系统构架、通信系统及通信方法、存储介质
US7970852B2 (en) Method for moving operating systems between computer electronic complexes without loss of service
KR20160097363A (ko) 자원 프로세싱 방법, 운영체제, 및 장치
US9798552B2 (en) Cloud computing architecture for managing hardware resources on network elements
US20220100550A1 (en) Accelerator Loading Method, System, and Apparatus
CN108491278B (zh) 一种处理业务数据的方法和网络设备
US9858096B2 (en) Communication device migration method of extension function and communication system
CN110262893B (zh) 配置镜像内存的方法、装置及计算机存储介质
US20140006767A1 (en) Boot strap processor assignment for a multi-core processing unit
CA3129984A1 (en) Method and system for accessing distributed block storage system in user mode
CN111857956A (zh) 虚拟机启动方法及设备
US8838768B2 (en) Computer system and disk sharing method used thereby
CN114422537A (zh) 多云存储系统、多云数据读写方法及电子设备
US8386594B2 (en) Network controller circuitry to initiate, at least in part, one or more checkpoints
CN116578621A (zh) 时序数据库集群构建方法、数据存储方法及相关装置
CN106790521B (zh) 采用基于ftp的节点设备进行分布式组网的系统及方法
CN109656679A (zh) 一种虚拟机的存储访问方法及装置
US11507512B2 (en) Fault tolerant cluster data handling
CN109656674A (zh) 一种计算机设备、虚拟化芯片及数据传输方法
CN116418848A (zh) 网络节点的配置和访问请求的处理方法、装置
CN115202803A (zh) 一种故障处理方法及装置
CN116339926B (zh) 一种ats软件的容器化部署方法

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