CN112905719A - 数据处理方法、装置、设备和介质 - Google Patents

数据处理方法、装置、设备和介质 Download PDF

Info

Publication number
CN112905719A
CN112905719A CN202110257362.9A CN202110257362A CN112905719A CN 112905719 A CN112905719 A CN 112905719A CN 202110257362 A CN202110257362 A CN 202110257362A CN 112905719 A CN112905719 A CN 112905719A
Authority
CN
China
Prior art keywords
clickhouse
cluster
data
target
clickhouse 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.)
Pending
Application number
CN202110257362.9A
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.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology 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 Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202110257362.9A priority Critical patent/CN112905719A/zh
Publication of CN112905719A publication Critical patent/CN112905719A/zh
Pending legal-status Critical Current

Links

Images

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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/282Hierarchical databases, e.g. IMS, LDAP data stores or Lotus Notes
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Hardware Redundancy (AREA)

Abstract

本发明实施例公开了一种数据处理方法、装置、设备和介质。该方法包括:接收数据写入请求;在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作;其中,每个所述Clickhouse集群单独对应于一个Zookeeper集群,并共同部署于同一机房。上述技术方案有效地提高了Clickhouse集群的可用性,降低了Clickhouse集群到Zookeeper集群的网络延迟,还能避免由一个Zookeeper集群服务多个Clickhouse集群带来的Zookeeper性能压力较大的问题。

Description

数据处理方法、装置、设备和介质
技术领域
本发明实施例涉及计算机技术,尤其涉及一种数据处理方法、装置、设备和介质。
背景技术
Clickhouse是一个用于OLAP(Online Analytical Processing,联机分析处理)的列式数据库管理***,数据在Clickhouse中以列式存储的方式存储于数据表中,Clickhouse通过ReplicatedMergeTree引擎和Zookeeper集群实现高可用。
现有技术中,Clickhouse集群的高可用部署架构通常可以如图1所示,多个Clickhouse集群共用一个Zookeeper集群作为元数据协调组件。一张数据表会同时在多个Clickhouse集群(Cluster)上创建,在每个Clickhouse集群下,数据分为多个分片(shard),每个分片拥有0到1个副本(replica),同个分片的不同副本之间的数据通过比对存储在Zookeeper集群的元数据来确保一致,每个分片都是一个clickhouse服务(server)节点。用户查询Clickhouse表时,当某个分片所在的服务器故障时,该分片对应的另一个副本会提供服务。当一个Clickhouse集群的服务由于缺少多个分片及其副本时,这个Clickhouse集群出现不可用的情况,此时用户可以访问冗余的另一个Clickhouse集群上的数据,从而达到高可用。
在实际应用中,当涉及到Clickhouse集群和Zookeeper集群跨机房时,Clickhouse集群到Zookeeper集群的网络延迟会进一步增大,从而使Clickhouse集群不稳定。为了降低延迟,CK集群需要和Zookeeper集群部署在同个机房,然而为了同城双活或者异地多活,不同的Clickhouse集群又需要部署在多个不同的机房。因此,如何解决“Clickhouse集群同城双活或者异地多活”与“Clickhouse集群和Zookeeper集群间通信延迟过大”之间的矛盾,是亟待解决的问题。
发明内容
本发明实施例提供一种数据处理方法、装置、设备和介质,以在Clickhouse集群同城双活或者异地多活的前提下,降低Clickhouse集群到Zookeeper集群的网络延迟。
第一方面,本发明实施例提供了一种基于Clickhouse集群的数据处理方法,包括:
接收数据写入请求;
在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作;
其中,每个所述Clickhouse集群单独对应于一个Zookeeper集群,并共同部署于同一机房。
第二方面,本发明实施例还提供了一种基于Clickhouse集群的数据处理装置,包括:
数据写入请求接收模块,用于接收数据写入请求;
数据写入执行模块,用于在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作;
其中,每个所述Clickhouse集群单独对应于一个Zookeeper集群,并共同部署于同一机房。
第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现任意实施例所述的基于Clickhouse集群的数据处理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任意实施例所述的基于Clickhouse集群的数据处理方法。
在本发明实施例提供的技术方案中,每个Clickhouse集群单独对应于一个Zookeeper集群,避免了由一个Zookeeper集群服务多个Clickhouse集群带来的Zookeeper性能压力较大的问题;Clickhouse集群与Zookeeper集群并共同部署于同一机房,有效降低了Clickhouse集群到Zookeeper集群的网络延迟;当需要进行数据写入时,在多机房中的各个Clickhouse集群中均执行匹配的数据写入操作,有效地提高了Clickhouse集群的可用性。
附图说明
图1是现有技术中的Clickhouse集群的高可用部署架构示意图;
图2是本发明实施例提供的Clickhouse集群的高可用部署架构示意图;
图3是本发明实施例一提供的一种基于Clickhouse集群的数据处理方法的流程图;
图4是本发明实施例二提供的一种基于Clickhouse集群的数据处理方法的流程图;
图5是本发明实施例二提供的Clickhouse集群的高可用部署架构示意图;
图6是本发明实施例三提供的一种基于Clickhouse集群的数据处理装置的模块结构示意图;
图7是本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
为了便于理解,将本发明实施例的主要发明构思进行简述。
如图1所示,在实际使用中,当涉及Clickhouse集群和Zookeeper集群跨机房部署时,Clickhouse集群和Zookeeper集群之间的网络延迟会进一步增大,导致Clickhouse集群性能稳定。为了降低Clickhouse集群和Zookeeper集群之间的网络延迟,Clickhouse集群和Zookeeper集群的节点会部署在同一个机房。然而,为了同城双活或者异地多活,不同的Clickhouse集群又需要部署在多个不同的机房,共用同一个Zookeeper集群就很难做到,需要进行分拆。同时,多个Clickhouse集群共用一个Zookeeper集群,会导致Zookeeper集群压力特别大。Clickhouse集群对Zookeeper集群的依赖非常严重,数据每次写入、修改操作,都会记录很多元数据在Zookeeper集群中,Zookeeper集群的延迟严重影响了数据写入Clickhouse集群的性能。
本发明实施例提供的一种Clickhouse集群的高可用部署架构,如图2所示,在本高可用部署架构中,每个Clickhouse集群单独对应于一个Zookeeper集群(图2中以三个Clickhouse集群为例示出),而且每个Clickhouse集群与其对应的Zookeeper集群共同部署于同一机房。也即,在不同的机房(同城或异地)中各自部署一套相同的Clickhouse集群和Zookeeper集群,多个Clickhouse集群同时对外进行服务,以此降低了Clickhouse集群到Zookeeper集群的网络延迟,也能避免由一个Zookeeper集群服务多个Clickhouse集群带来的Zookeeper性能压力较大的问题。
实施例一
图3是本发明实施例一提供的一种基于Clickhouse集群的数据处理方法的流程图,本实施例可适用于部署高可用Clickhouse集群的情况,该方法可以由本发明任意实施例提供的基于Clickhouse集群的数据处理来执行,该装置可由硬件和/或软件组成,并一般可集成在计算机设备中。
如图3所示,本实施例提供的基于Clickhouse集群的数据处理方法,包括:
S110、接收数据写入请求。
可选的,通过代理服务接收用户发起的数据写入请求,并将数据写入请求转发至每个Clickhouse集群中。
S120、在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作;其中,每个所述Clickhouse集群单独对应于一个Zookeeper集群,并共同部署于同一机房。
在本实施例中,多个Clickhouse集群对外提供的服务是对等的,因此,数据写入请求需要发送至每个Clickhouse集群中去执行与数据写入请求匹配的数据写入操作,以保持不同Clickhouse集群的数据一致性。
针对一张数据表,在创建表时会将数据表的元数据发送至每个Clickhouse集群中进行建表。可选的,每张数据表在每个Clickhouse集群中对应着一张本地表和一张分布式表,其中,本地表使用ReplicatedMergeTree引擎,分布式表使用Distributed引擎。当在Clickhouse集群中进行数据写入时,数据只写入本地表,分布式表只用于数据查询,不用于数据写入。
进一步的,在上述技术方案的基础上,本实施例提供的基于Clickhouse集群的数据处理方法,还包括:
接收数据查询请求;在所述各个Clickhouse集群中选择一个目标Clickhouse集群,并在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作。
可选的,通过代理服务接收用户发起的数据查询请求,并将数据查询请求转发至多个Clickhouse集群中的目标Clickhouse集群中。其中,目标Clickhouse集群为可用Clickhouse集群,可以是多个Clickhouse集群中任意一个可用Clickhouse集群。
可选的,通过代理服务接收用户发起的数据查询请求之后,根据预设的负载均衡策略,在多个Clickhouse集群中选择一个可用Clickhouse集群作为目标Clickhouse集群。其中,预设的负载均衡策略可以是根据预先配置好的数据流量比例选择一个可用Clickhouse集群作为目标Clickhouse集群,也可以是根据就近访问原则选择一个可用Clickhouse集群作为目标Clickhouse集群,本实施例对此不作具体限定。
可选的,在上述技术方案的基础上,本实施例提供的基于Clickhouse集群的数据处理方法,还包括:根据各个所述Clickhouse集群中的Clickhouse节点上报的心跳信号监控Clickhouse节点的可用性。
每个Clickhouse集群中的各个Clickhouse节点定时上报心跳信号。如果超过设定时间接收不到某个Clickhouse节点上报心跳信号,则确定该Clickhouse节点不可用。在一个Clickhouse集群中,若与同个数据分片对应的多个Clickhouse节点均不可用,则该Clickhouse集群不可用。
可选的,设置一个控制中心,用于接收每个Clickhouse集群中的各个Clickhouse节点定时上报的心跳信号,并根据各个Clickhouse集群中各个Clickhouse节点上报的心跳信号来实时监控各个Clickhouse节点的可用性。
可选的,针对一张数据表,在创建表时通过控制中心将数据表的元数据发送至每个Clickhouse集群中进行建表。
进一步的,在上述技术方案的基础上,本实施例提供的基于Clickhouse集群的数据处理方法,在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作时,还包括:若确定所述目标Clickhouse集群不可用,则在各个Clickhouse集群中选择一个可用Clickhouse集群重新作为所述目标Clickhouse集群,并在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作。
在确定当前执行数据查询操作的目标Clickhouse集群不可用时,在各个Clickhouse集群中重新选择一个可用Clickhouse集群作为待执行数据查询操作的目标Clickhouse集群,并将接收到的数据查询请求转发到该重新确定的目标Clickhouse集群中,以在该目标Clickhouse集群中继续执行与数据查询请求匹配的数据查询操作。
进一步的,在上述技术方案的基础上,本实施例提供的基于Clickhouse集群的数据处理方法,在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作时,还包括:在目标Clickhouse集群可用的情况下,若确定当前执行数据查询操作的目标Clickhouse节点不可用,则在所述目标Clickhouse集群中选择与所述目标Clickhouse节点对应的一个Clickhouse节点重新作为所述目标Clickhouse节点,并在所述目标Clickhouse节点中执行与数据查询请求匹配的数据查询操作。
在确定当前执行数据查询操作的目标Clickhouse节点不可用时,则在其所在目标Clickhouse集群中重新选择一个Clickhouse节点作为待执行数据操作的目标Clickhouse节点,可以选择互为分片副本的Clickhouse节点重新作为目标Clickhouse节点。若同个分片的多个Clickhouse节点均不可用(如宕机),则这些Clickhouse节点所在的目标Clickhouse集群不可用,需重新选择一个Clickhouse集群重新作为所述目标Clickhouse集群。
进一步的,在上述技术方案的基础上,本实施例提供的基于Clickhouse集群的数据处理方法,在所述目标Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作时,还包括:在目标Clickhouse集群可用的情况下,若确定当前执行数据写入操作的目标Clickhouse节点不可用,则在所述目标Clickhouse集群中选择一个Clickhouse节点重新作为所述目标Clickhouse节点,并在所述目标Clickhouse节点中执行与数据写入请求匹配的数据写入操作。
需要指出的是,若在执行数据写入操作的过程中,某Clickhouse集群不可用,无法正常完成数据写入操作,则在该Clickhouse集群恢复后人工介入进行数据同步操作。
在上述技术方案中,当Clickhouse集群不可用时,能够自动切换请求负载至正常的Clickhouse节点,当Clickhouse集群恢复可用时Clickhouse集群即可正常响应请求负载,此过程对于业务方来讲是无感知的。而现有技术中,用户对Clickhouse的部署方式并不关心,当某个Clickhouse集群服务不可用时,用户需要在平台方的支持下切换查询的Clickhouse集群,可能涉及到修改用户程序,比较麻烦。由此,上述技术方案解决了现有技术中当Clickhouse节点出现故障时需要用户手动切换集群进行使用的问题。
在本发明实施例提供的技术方案中,每个Clickhouse集群单独对应于一个Zookeeper集群,避免了由一个Zookeeper集群服务多个Clickhouse集群带来的Zookeeper性能压力较大的问题;Clickhouse集群与Zookeeper集群并共同部署于同一机房,有效降低了Clickhouse集群到Zookeeper集群的网络延迟;当需要进行数据写入时,在多机房中的各个Clickhouse集群中均执行匹配的数据写入操作,有效地提高了Clickhouse集群的可用性。
实施例二
图4是本发明实施例二提供的一种基于Clickhouse集群的数据处理方法的流程图,本实施例以上述实施例为基础进行具体化,其中,设置负载均衡代理服务对接收到的数据查询请求和数据写入请求进行转发处理。可选的,分别设置查询负载均衡代理服务和写入负载均衡代理服务对接收到的数据查询请求和数据写入请求进行转发处理。
在本实施例中,在所述各个Clickhouse集群中选择一个目标Clickhouse集群,可以具体为:
通过负载均衡代理服务依据预设的负载均衡策略确定在所述各个Clickhouse集群中选择一个目标Clickhouse集群,基于名字服务与所述目标Clickhouse集群建立通信连接,并将所述数据查询请求转发至所述目标Clickhouse集群中。
在本实施例中,在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作,可以具体为:
通过负载均衡代理服务基于名字服务与各个Clickhouse集群建立通信连接,将所述数据写入请求转发至所述各个Clickhouse集群中,并在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作。
如图4所示,本实施例提供的基于Clickhouse集群的数据处理方法,包括:
S210、在接收到数据写入请求时,通过负载均衡代理服务基于名字服务与各个Clickhouse集群建立通信连接,将所述数据写入请求转发至所述各个Clickhouse集群中。
在本步骤中,负载均衡代理服务,用于执行对接收到的数据写入请求进行转发处理操作,也可以通过专门设置的写入负载均衡代理服务执行对接收到的数据写入请求进行转发处理操作。
其中,负载均衡代理服务是基于名字服务来实现对数据写入请求的转发处理的。名字服务承载了运维自动化的重要角色,使用名字进行抽象,屏蔽了后端节点信息,例如物理机的IP等。负载均衡代理服务基于名字服务与各个Clickhouse集群建立通信连接,与名字对应的IP变化,负载均衡代理服务可以无需关心,以此可以将负载均衡代理服务与Clickhouse集群进行解耦,减少负载均衡代理服务与Clickhouse集群间对接的成本。
部署名字服务后,在Clickhouse集群启动的时候Clickhouse集群包括的各个Clickhouse节点自动注册名字服务,名字服务对外给负载均衡代理服务提供统一的名字。其中,可以为各个Clickhouse集群部署一个名字服务,也可以单独为每个Clickhouse集群部署一个名字服务。
其中,在名字服务中,记载的是Clickhouse集群中各个Clickhouse节点的名字以及与每个名字对应的Clickhouse节点信息,如节点IP等。而在负载均衡代理服务中记载的是Clickhouse集群中各个Clickhouse节点的名字列表。可选的,负载均衡代理服务在查询名字服务获取与某个名字对应的节点信息后,也可以将相应的节点信息本地保存。
在接收到数据写入请求时,负载均衡代理服务根据记载的Clickhouse节点名字列表查询名字服务获取各个Clickhouse集群的通信地址,分别建立与各个Clickhouse集群建立通信连接,并将接收到的数据写入请求转发到各个Clickhouse集群中,以使能够在Clickhouse集群中完成相应的数据写入操作。其中,针对任意一个Clickhouse集群,通过该Clickhouse集群下的任意一个Clickhouse节点都可以建立与该Clickhouse集群的通信连接。
在一种可选的实施方式中,通过负载均衡代理服务基于名字服务与各个Clickhouse集群建立通信连接,可以具体为:
通过负载均衡代理服务以轮询的方式确定分别用于连接各个Clickhouse集群的各个目标Clickhouse节点,并基于所述名字服务查询所述各个目标Clickhouse节点的通信方式,以与各个Clickhouse集群建立通信连接。
在负载均衡代理服务中,针对每个Clickhouse集群可以单独存储一个Clickhouse节点名字列表。与每个Clickhouse集群建立通信时,可以在与Clickhouse集群对应的Clickhouse节点名字列表中以轮询的方式选取一个Clickhouse节点作为用于与Clickhouse集群建立通信连接的目标Clickhouse节点。进而,根据该目标Clickhouse节点的名字查询名字服务获取该目标Clickhouse节点的节点信息,以建立与Clickhouse集群的通信连接,进而可以将数据写入请求转发至该Clickhouse集群,以使能够在该Clickhouse集群中执行匹配的数据写入操作。
在本实施方式中,通过轮询的方式选取一个用于与Clickhouse集群建立通信连接并执行相应数据写入操作的Clickhouse节点,能够确保数据写入操作的均衡性。
S220、在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作。
S230、在接收到数据查询请求时,通过负载均衡代理服务依据预设的负载均衡策略确定在所述各个Clickhouse集群中选择一个目标Clickhouse集群,基于名字服务与所述目标Clickhouse集群建立通信连接,并将所述数据查询请求转发至所述目标Clickhouse集群中。
在本步骤中,负载均衡代理服务,用于执行对接收到的数据查询请求进行转发处理操作,也可以通过专门设置的查询负载均衡代理服务执行对接收到的数据写入请求进行转发处理操作。负载均衡代理服务也是基于名字服务来实现对数据查询请求的转发处理的。
预设的负载均衡策略,可以是就近访问的负载均衡策略,也可以是依据预配置的流量访问比例确定的负载均衡策略,本实施例对此不作具体限定。
在接收到数据查询请求时,负载均衡代理服务根据预设的负载均衡策略在多个可用Clickhouse集群中选择一个可用Clickhouse集群作为目标Clickhouse集群,并在与目标Clickhouse集群对应的Clickhouse节点名字列表中选择一个Clickhouse节点,通过查询名字服务确定该Clickhouse节点的节点信息,并基于该Clickhouse集群建立与目标Clickhouse集群之间的通信连接,进而可以将接收到的数据查询请求转发到该目标Clickhouse集群中,以使能够在该目标Clickhouse集群中完成相应的数据查询操作。
可选的,在与目标Clickhouse集群对应的Clickhouse节点名字列表中选择一个Clickhouse节点时,可以在与目标Clickhouse集群对应的Clickhouse节点名字列表中以轮询的方式选择一个Clickhouse节点作为用于与Clickhouse集群建立通信连接的目标Clickhouse节点。
S240、在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作。
S250、若确定所述目标Clickhouse集群不可用,则在各个Clickhouse集群中选择一个可用Clickhouse集群重新作为所述目标Clickhouse集群,并在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作。
各个Clickhouse集群中的所有Clickhouse节点定时上报心跳信号,故可以根据各个Clickhouse集群中各个Clickhouse节点上报的心跳信号实时监控各个Clickhouse节点的可用性。
可选的,设置控制中心根据各个Clickhouse集群中各个Clickhouse节点上报的心跳信号实时监控各个Clickhouse节点的可用性,在监控到不可用的Clickhouse节点时,通过控制指令将不可用Clickhouse节点的信息(例如可以是Clickhouse节点的名字或IP地址等)下发给负载均衡代理服务和名字服务,以使负载均衡代理服务和名字服务将不可用的Clickhouse节点剔除;在监控到不可用Clickhouse节点恢复可用时,通过控制指令将恢复可用的Clickhouse节点的信息下发给负载均衡代理服务和名字服务,以使负载均衡代理服务和名字服务添加恢复可用的Clickhouse节点。
在目标Clickhouse集群中执行查询操作时,若确定该目标Clickhouse集群不可用,则可以继续依据预设的负载均衡策略在其余各个可用Clickhouse集群中重新选择一个Clickhouse集群作为目标Clickhouse集群,继续执行与接收到的数据查询请求匹配的数据查询操作。
在一具体示例中,图5示出了一种Clickhouse集群的高可用部署架构,如图5所示,将现有方案里的一个Zookeeper集群服务多个Clickhouse集群进行分拆,一个Clickhouse集群对应着一个Zookeeper集群服务,分别在两个机房,即在机房1和机房2分别进行部署。
机房1和机房2中各部署一套一模一样的Zookeeper集群和Clickhouse集群,两个Clickhouse集群可同时对外进行服务。控制中心负责整个基于Clickhouse集群的分析平台的控制和运维工作,两个机房的所有Clickhouse节点定时发送健康心跳汇报到控制中心,以使控制中心可以监控Clickhouse节点的可用性。名字服务用于提供统一的查询名字,对写入负载均衡服务和查询负载均衡服务提供的节点名字进行解析,以使写入负载均衡服务和查询负载均衡服务能够与相应的Clickhouse集群建立通信连接,并将相应的数据写入请求或数据查询请求转发到相应的Clickhouse集群中执行相应的数据操作。
由于两个Clickhouse集群对外提供的服务是对等的,因此对于数据写入请求,会通过写入负载均衡服务将其转发到两个Clickhouse集群中。具体的,对应于一张表,用户创建表时,可以通过控制中心创建好表的元数据并下发到两个Clickhouse集群中进行建表,每张表在每个Clickhouse集群对应着一个本地表和一个分布式表,其中,本地表基于ReplicatedMergeTree引擎,分布式表基于Distributed引擎。当进行数据写入操作时,每一批写入的数据会通过写入负载均衡服务转发到两个Clickhouse集群的服务器中,数据只写入本地表,分布式表只用于查询不用于写入。
写入负载均衡服务基于名字服务建立与Clickhouse集群的通信连接,其中,写入负载均衡服务可以以轮询Clickhouse节点名字列表的方式查询名字服务,进而建立与Clickhouse节点的通信连接完成数据写入操作,能够确保数据写入的均衡性,
当控制中心监控到任意一个机房的Clickhouse集群不可用时,即某些Clickhouse节点不可用时,控制中心向名字服务以及写入负载均衡服务发送控制命令指示不可用的Clickhouse节点。若该Clickhouse节点执行数据写入操作,则数据写入异常,此时可以通过本Clickhouse集群下的其余可用Clickhouse节点完成相应的数据写入操作。当控制中心监控到Clickhouse节点恢复可用时,也会发送控制指令指示恢复可用的Clickhouse节点。
当两个Clickhouse集群正常时,两个Clickhouse集群都对外提供服务,用户查询某一张表的数据时,查询负载均衡服务将数据查询请求根据预设的负载均衡策略(如预先配置好的流量比例)转发到对应的Clickhouse集群中去。当控制中心监控到某个Clickhouse集群不可用时,即存在同个分片的多个副本节点同时宕机,查询负载均衡服务会将接收到的流量转发到可用的Clickhouse集群中。在宕机节点恢复后,控制中心会通知查询负载均衡服务,以使查询负载均衡服务恢复对集群的正常访问,从而达到查询服务的高可用。
在上述技术方案中,通过多机房部署Clickhouse集群,可以有效地提高Clickhouse集群的可用性;一个Clickhouse集群对应一个Zookeeper集群,且同机房部署,有效降低了Clickhouse和Zookeeper之间的通信延迟,也避免了一个Zookeeper集群服务多个Clickhouse集群带来的Zookeeper性能问题。另外,通过写入负载均衡服务、查询负载均衡服务、控制中心和名字服务的协作,当Clickhouse集群不可用时,可以自动切换数据写入请求、数据查询请求到正常的Clickhouse节点,当Clickhouse集群恢复时立即恢复正常访问,此过程在业务侧是无感知的。
实施例三
图6是本发明实施例三提供的一种基于Clickhouse集群的数据处理装置的模块结构示意图,本实施例可适用于部署高可用Clickhouse集群的情况,该装置可以采用软件和/或硬件的方式实现,并一般可集成在计算机设备中。如图6所示,该装置包括:数据写入请求接收模块310和数据写入执行模块320。其中,
数据写入请求接收模块310,用于接收数据写入请求;
数据写入执行模块320,用于在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作;
其中,每个所述Clickhouse集群单独对应于一个Zookeeper集群,并共同部署于同一机房。
在本发明实施例提供的技术方案中,每个Clickhouse集群单独对应于一个Zookeeper集群,同时避免由一个Zookeeper集群服务多个Clickhouse集群带来的Zookeeper性能压力较大的问题;Clickhouse集群与Zookeeper集群并共同部署于同一机房,有效降低了Clickhouse集群到Zookeeper集群的网络延迟;当需要进行数据写入时,在多机房中的各个Clickhouse集群中均执行匹配的数据写入操作,有效地提高了Clickhouse集群的可用性。
进一步的,上述装置还包括:数据查询请求接收模块和数据查询处理模块,其中,
数据查询请求接收模块,用于接收数据查询请求;
数据查询处理模块,用于在所述各个Clickhouse集群中选择一个目标Clickhouse集群,并在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作。
可选的,数据查询处理模块,具体用于通过负载均衡代理服务依据预设的负载均衡策略确定在所述各个Clickhouse集群中选择一个目标Clickhouse集群,基于名字服务与所述目标Clickhouse集群建立通信连接,并将所述数据查询请求转发至所述目标Clickhouse集群中。
进一步的,上述装置还包括:集群查询切换模块,用于在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作时,若确定所述目标Clickhouse集群不可用,则在所述各个Clickhouse集群中选择一个可用Clickhouse集群重新作为所述目标Clickhouse集群,并在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作。
可选的,数据写入执行模块320,具体用于通过负载均衡代理服务基于名字服务与各个Clickhouse集群建立通信连接,将所述数据写入请求转发至所述各个Clickhouse集群中,并在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作。
进一步的,数据写入执行模块320,具体用于通过负载均衡代理服务以轮询的方式确定分别用于连接各个Clickhouse集群的各个目标Clickhouse节点,并基于所述名字服务查询所述各个目标Clickhouse节点的通信方式,以与各个Clickhouse集群建立通信连接。
可选的,上述装置还包括:Clickhouse节点监控模块,用于根据各个所述Clickhouse集群中的Clickhouse节点上报的心跳信号监控Clickhouse节点的可用性。
本发明实施例所提供的基于Clickhouse集群的数据处理装置可执行本发明任意实施例所提供的基于Clickhouse集群的数据处理方法,具备执行方法相应的功能模块和有益效果。
实施例四
图7是本发明实施例四提供的一种计算机设备的结构示意图,如图7所示,该计算机设备包括处理器40、存储器41、输入装置42和输出装置43;计算机设备中处理器40的数量可以是一个或多个,图7中以一个处理器40为例;计算机设备中的处理器40、存储器41、输入装置42和输出装置43可以通过总线或其他方式连接,图7中以通过总线连接为例。
存储器41作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的基于Clickhouse集群的数据处理方法对应的程序指令/模块(例如,附图7中基于Clickhouse集群的数据处理装置中的数据写入请求接收模块310和数据写入执行模块320)。处理器40通过运行存储在存储器41中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的基于Clickhouse集群的数据处理方法。
存储器41可主要包括存储程序区和存储数据表区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据表区可存储根据计算机设备的使用所创建的数据等。此外,存储器41可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器41可进一步包括相对于处理器40远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置42可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置43可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种存储有计算机程序的计算机可读存储介质,计算机程序在由计算机处理器执行时用于执行一种基于Clickhouse集群的数据处理方法,该方法包括:
接收数据写入请求;
在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作;
其中,每个所述Clickhouse集群单独对应于一个Zookeeper集群,并共同部署于同一机房。
当然,本发明实施例所提供的存储有计算机程序的计算机可读存储介质,其计算机程序不限于如上的方法操作,还可以执行本发明任意实施例所提供的基于Clickhouse集群的数据处理方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
值得注意的是,上述基于Clickhouse集群的数据处理装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (10)

1.一种基于Clickhouse集群的数据处理方法,其特征在于,包括:
接收数据写入请求;
在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作;
其中,每个所述Clickhouse集群单独对应于一个Zookeeper集群,并共同部署于同一机房。
2.根据权利要求1所述的方法,其特征在于,还包括:
接收数据查询请求;
在所述各个Clickhouse集群中选择一个目标Clickhouse集群,并在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作。
3.根据权利要求2所述的方法,其特征在于,在所述各个Clickhouse集群中选择一个目标Clickhouse集群,包括:
通过负载均衡代理服务依据预设的负载均衡策略确定在所述各个Clickhouse集群中选择一个目标Clickhouse集群,基于名字服务与所述目标Clickhouse集群建立通信连接,并将所述数据查询请求转发至所述目标Clickhouse集群中。
4.根据权利要求2所述的方法,其特征在于,在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作时,还包括:
若确定所述目标Clickhouse集群不可用,则在所述各个Clickhouse集群中选择一个可用Clickhouse集群重新作为所述目标Clickhouse集群,并在所述目标Clickhouse集群中执行与所述数据查询请求匹配的数据查询操作。
5.根据权利要求1所述的方法,其特征在于,在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作,包括:
通过负载均衡代理服务基于名字服务与各个Clickhouse集群建立通信连接,将所述数据写入请求转发至所述各个Clickhouse集群中,并在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作。
6.根据权利要求5所述的方法,其特征在于,通过负载均衡代理服务基于名字服务与各个Clickhouse集群建立通信连接,包括:
通过负载均衡代理服务以轮询的方式确定分别用于连接各个Clickhouse集群的各个目标Clickhouse节点,并基于所述名字服务查询所述各个目标Clickhouse节点的通信方式,以与各个Clickhouse集群建立通信连接。
7.根据权利要求1所述的方法,其特征在于,还包括:
根据各个所述Clickhouse集群中的Clickhouse节点上报的心跳信号监控Clickhouse节点的可用性。
8.一种基于Clickhouse集群的数据处理装置,其特征在于,包括:
数据写入请求接收模块,用于接收数据写入请求;
数据写入执行模块,用于在各个Clickhouse集群中执行与所述数据写入请求匹配的数据写入操作;
其中,每个所述Clickhouse集群单独对应于一个Zookeeper集群,并共同部署于同一机房。
9.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202110257362.9A 2021-03-09 2021-03-09 数据处理方法、装置、设备和介质 Pending CN112905719A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110257362.9A CN112905719A (zh) 2021-03-09 2021-03-09 数据处理方法、装置、设备和介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110257362.9A CN112905719A (zh) 2021-03-09 2021-03-09 数据处理方法、装置、设备和介质

Publications (1)

Publication Number Publication Date
CN112905719A true CN112905719A (zh) 2021-06-04

Family

ID=76108383

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110257362.9A Pending CN112905719A (zh) 2021-03-09 2021-03-09 数据处理方法、装置、设备和介质

Country Status (1)

Country Link
CN (1) CN112905719A (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140149590A1 (en) * 2012-11-26 2014-05-29 Amazon Technologies, Inc. Scaling computing clusters in a distributed computing system
CN111475537A (zh) * 2020-04-09 2020-07-31 杭州趣维科技有限公司 基于pulsar的全球数据同步***

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140149590A1 (en) * 2012-11-26 2014-05-29 Amazon Technologies, Inc. Scaling computing clusters in a distributed computing system
CN111475537A (zh) * 2020-04-09 2020-07-31 杭州趣维科技有限公司 基于pulsar的全球数据同步***

Similar Documents

Publication Publication Date Title
US11360854B2 (en) Storage cluster configuration change method, storage cluster, and computer system
WO2020147331A1 (zh) 一种微服务监控方法及***
CN108632067B (zh) 容灾部署方法、装置及***
CN109828868B (zh) 数据存储方法、装置、管理设备和双活数据存储***
US7619965B2 (en) Storage network management server, storage network managing method, storage network managing program, and storage network management system
CN111459749B (zh) 基于Prometheus的私有云监控方法、装置、计算机设备及存储介质
US10038593B2 (en) Method and system for recovering virtual network
WO2019210580A1 (zh) 访问请求处理方法、装置、计算机设备和存储介质
CN111200532A (zh) 数据库集群节点主从切换的方法、装置、设备和介质
CN113572831B (zh) Kubernetes集群间的通信方法、计算机设备及介质
US11445013B2 (en) Method for changing member in distributed system and distributed system
CN112887368A (zh) 对复制型数据库的访问进行负载平衡
CA2467813A1 (en) Real composite objects for providing high availability of resources on networked systems
EP3935515A1 (en) Metadata routing in a distributed system
CN106452836B (zh) 主节点设置方法及装置
US11153173B1 (en) Dynamically updating compute node location information in a distributed computing environment
WO2021121067A1 (zh) 一种任务执行的方法及装置
CN110971702A (zh) 服务调用方法、装置、计算机设备及存储介质
CN112492022A (zh) 提高数据库可用性的集群、方法、***及存储介质
CN111600794B (zh) 服务器切换方法、终端、服务器及存储介质
CN114553900A (zh) 一种分布式块存储管理***、方法及电子设备
WO2023202049A1 (zh) 一种容灾管理方法以及容灾管理设备
CN112905719A (zh) 数据处理方法、装置、设备和介质
CN115967611B (zh) 跨域的切换处理方法、装置、设备和存储介质
US20240176762A1 (en) Geographically dispersed hybrid cloud cluster

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