云原生Clickhouse优势概述
以Clickhouse为基础,借鉴Snowflake等系统的设计思路,打造一款高性能的云原生OLAP系统,为用户提供多场景下的一站式的数据分析平台。
- 简单、易维护:集群管理、统一共享分布式调度服务
- 高可用、可扩展:支持500万以上的Table
- 低成本:存储成本至少降低了50%
- 兼容开源,复用超高性能:兼容协议、语法、数据库存储格式
Clickhouse是一款性能十分强悍的OLAP引擎,凭借优秀的性能在用户行为分析、ABTest、在线报表等多个领域大放异彩,但是目前Clickhouse在易用性、稳定性、可维护性、功能特性等方面都还有较多不足,主要体现在以下几方面:
- 易用性方面,需要用户感知本地表、分布式表、Zookeeper等概念,在建表、导入、查询等流程中都有涉及,后期Schema Change时也需要分别做处理,使用门槛较高;
- 稳定性方面,重度依赖Zookeeper,Zookeeper已经成为明显的中心化瓶颈,尤其在多副本场景下单机的写入、Merge、DDL的执行都需要经过Zookeeper协调,一旦Zookeeper不稳定或者代码有Bug,整个分布式集群都会不稳定;
- 可维护性方面,缺少节点加入、节点退出、副本均衡等必要的分布式管理功能,一旦集群数量变多,维护代价巨大;
- 功能特性方面,没有真正的MPP查询层,在分布式Join、聚合等方面能力不足,语法上也不符合相关标准,有一定的学习成本;
Snowflake 是当下最火的云原生数仓,它SaaS化的设计理念极大的提升了数据开发者的使用体验,Clickhouse高性能的存储引擎和计算算子是一个非常优秀的底座,我们希望以Clickhouse为基础,借鉴Snowflake的设计思路,打造一款高性能的云原生OLAP系统,为用户提供多场景下的一站式的数据分析平台,包括:
- HTAP 场景,与腾讯CDB、CynosDB等无缝集成,实时同步OLTP系统中的变更,基于列存和并行执行引擎,实现海量数据下的亚秒级分析;同时支持MySQL协议和语法,无缝兼容用户现有的工具,达到零迁移成本。
- 数仓场景,支持用户数据实时入仓,为用户提供超高性能的在线分析服务;针对结构化、半结构化数据,实现统一的分析解决方案,利用Clickhouse丰富可扩展的算子,构建简单易用的流式处理框架简化ETL流程。
- 数据湖场景,支持对象存储COS、CFS、Elasticsearch、MongoDB等多数据源的查询,通过跟多个数据源做深度的整合,利用高速的向量化执行引擎,提升多源数据的分析能力及性能。
1、云原生Clickhouse架构设计
存算分离正在数据库领域掀起一场变革,不论OLTP还是OLAP系统都在拥抱存算分离。通过对Clickhouse的源码进行阅读分析,发现在Clickhouse中一旦实现了存算分离,那么稳定性、可维护性以及成本等方面的问题都会迎刃可解。Clickhouse虽然在分布式集群管理方面很弱,但是这也意味着在改造存算分离架构时的负担很少,成为了一个巨大的优势,所以我们把存算分离作为第一个目标,希望通过引入存算分离技术,并且围绕存算分离技术对分布式集群管理等各个方面进行改造,为用户提供一个更好的Clickhouse。
云原生Clickhouse的架构设计如下图,具体包括三层:
(云原生Clickhouse架构设计图)
集群管理层:分布式集群的大脑,它主要包含基于分布式一致性协议实现的元数据管理服务、多集群共享的分布式任务调度服务;
计算层&