ClickHouse开源增强特性
MRS ClickHouse具备“手动挡”集群模式升级、平滑弹性扩容、高可用HA部署架构等优势能力,具体详情如下:
- 手动挡集群模式升级
如图1所示,多个ClickHouse节点组成的集群,没有中心节点,更多的是一个静态资源池的概念,业务要使用ClickHouse集群模式,需要预先在各个节点的配置文件中定义cluster信息,等所有参与的节点达成共识,业务才可以正确的交互访问,也就是说配置文件中的cluster才是通常理解的“集群”概念。
常见的数据库系统,隐藏了表级以下的数据分区、副本存储等细节,用户是无感知的,而ClickHouse则要求用户主动来规划和定义数据分片(shard)、分区(partition)、副本(replica)位置等详细配置。它的这种类似“手动挡”的属性,给用户带来极不友好的体验,所以MRS服务的ClickHouse实例对这些工作做了统一的打包处理,适配成了“自动挡”,实现了统一管理,灵活易用。
具体部署形态上,一个ClickHouse实例将包含3个ZooKeeper节点和多个ClickHouse节点,采用Dedicated Replica模式,数据双副本高可靠。图2 ClickHouse的cluster结构
- 平滑的弹性扩容能力
随着业务的快速增长,面对集群存储容量或者CPU计算资源接近极限等场景,MRS服务提供了ClickHouse数据迁移工具,该工具可以将某几个ClickHouseServer实例节点上的一个或多个MergeTree引擎分区表的部分分区迁移至其他ClickHouseServer节点上相同的表中,以便保障业务可用性,实现了更加平滑的扩容能力。
在用户对集群进行扩容ClickHouse节点时,可以使用该工具将原节点上的部分数据迁移至新增节点上,从而达到扩容后的数据均衡。
- 高可用HA部署架构
MRS服务提供了基于ELB的HA部署架构,可以将用户访问流量自动分发到多台后端节点,扩展系统对外的服务能力,实现更高水平的应用容错。如图3所示,客户端应用请求集群时,使用ELB(Elastic Load Balance)来进行流量分发,通过ELB的轮询机制,写不同节点上的本地表(Local Table),读不同节点上的分布式表(Distributed Table),这样,无论集群写入的负载、读的负载以及应用接入的高可用性都具备了有力的保障。
ClickHouse集群发放成功后,每个ClickHouse实例节点对应一个副本replica,两个副本组成一个shard逻辑分片。如创建ReplicatedMergeTree引擎表时,可以指定分片,相同分片内的两个副本数据就可以自动进行同步。