四两拨千斤:小巧新秀ClickHouse如何完美支撑史上最强双十一?

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 第12个双11已圆满结束,但对技术的探索永不止步。每年双11,不仅仅是剁手族的狂欢节,更是数据人的“大考”,是检验阿里云数据库技术团队技术水平与技术创新实践的舞台。本站将陆续推出双11护航背后的数据库技术实践与经验分享系列干货文章,敬请关注!今天为云数据库ClickHouse的技术解析。

关于云数据库ClickHouse

ClickHouse是一款开源的列式分析型数据库,自从2016年开源以来在全世界开源社区内的受欢迎程序逐渐上升,GitHub上Star数目已经超过了Presto、Impala、Greenplum等开源时间更久的老牌经典项目。在国内,ClickHouse也越来越火,诸多互联网大厂都纷纷在内部业务中跟进使用并且普遍反馈性能优异。另外云厂商也推出了对应的云上托管服务,阿里云就已经推出了云数据库ClickHouse。

云数据库ClickHouse不仅面向公共云客户售卖,同时也在阿里巴巴集团内部承担着重要业务。2020年双十一,云数据库ClickHouse承载了阿里巴巴集团OLAP平台全量查询日志的存储分析,单日400亿级别增量数据导入,全量千亿级别数据聚合分析毫秒返回,平均10倍存储压缩率;提供的超低成本、超高性能的日志查询分析解决方案,助力监控告警、错误排查、查询Pattern分析、OLAP全景大屏、重点实例保障等业务场景稳定运行。下文将深入分析云数据库ClickHouse的核心技术。

云数据库ClickHouse核心技术解析

稳定高效的管控能力

开源ClickHouse的特色是性能十分优异,但是在运维上却相对比较复杂。自建ClickHouse往往面临着安全管理、扩缩容、配置管理、SQL查询分析、Failover高可用等多方面的挑战。云数据库ClickHouse基于开源ClickHouse内核,为之配备了稳定、高效、全方位的管控能力。

• 安全增强
在管控操作方面,借助于阿里云RAM身份鉴权服务,云数据库ClickHouse控制台提供了多用户登陆、子账号授权、跨账号授权等多种能力,方便企业客户按照自身需要合理切分权限体系,既保证权限可用,又不至于过度授权。搭配数据管理服务DMS,提供数据工单审批机制,进一步限制查询、导出、修改等权限的使用范围。

在网络链路方面,默认情况下只提供VPC endpoint,只能在内网联通,降低数据泄露风险;同时也保留了开通公网endpoint的能力,让客户自由选择。白名单机制配合ECS安全组策略,确保了只有指定IP Range能够访问数据库服务,进一步增强链路安全。

• 集群配置管理
ClickHouse是松散的share-nothing架构,一个集群往往有多个server共同构成。一般情况下,要修改配置需要逐台登陆机器进行修改,非常耗时费力而且容易出错。如何保持多台server上的配置一致性,也是个难题。

云数据库ClickHouse从2个方面增强了配置管理功能。首先,对于用户配置,修改数据库内核提供了新语法 set global on cluster default key = value,一行SQL即可修改所有server的用户配置,并且自动持久化。其次,对于系统参数,通过控制台页面提供可视化的修改功能,不仅能自动校验参数合法性,而且根据内核原理判断是否需要重启才能生效。最后,通过后台任务检查,确保所有server参数一致。

• 扩缩容&升降配
水平扩缩容、垂直升降配是数据库必备的能力,确保数据库集群能够动态满足业务需求。但是扩缩容无法自动rebalance数据、无法自动迁移库表结构等,是社区版本ClickHouse的一大痛点。

云数据库ClickHouse内在的实现了扩缩容场景下数据自动rebalance的能力,确保集群成员变更后能够不同server之间负载均衡。基于管控和内核的共同优化,自动rebalance数据的速度可以高达单机100MB/S~200MB/S,而且支持迁移本地表、分布式表、外部表、物化视图、词典、集群配置、安全白名单等多种数据库对象。

云数据库ClickHouse也提供了垂直升降配的能力,在不改变集群节点个数的情况下,完全动态的调整CPU、Memory、Disk的规格,在高峰期升配满足业务需求,在低峰期降配节省成本。

• 监控告警及SQL分析
云数据库ClickHouse提供开箱即用的监控界面,包括了丰富的性能及集群状态指标,如CPU利用率、内存利用率、磁盘空间及使用率、查询QPS、写入TPS、ZooKeeper延时等。搭配阿里云云监控产品CMS, 实现了强大的告警能力,支持客户按照业务特点灵活的自定义告警规则,比如可以通过页面拖拽的方式实现磁盘使用率超过80%时自动短信、电话、邮件告警等。

在监控告警的基础上,云数据库ClickHouse进一步提供了SQL分析的功能,帮助客户定位引起系统异常的原因。SQL分析功能能够自动识别系统中的慢SQL,并且展示这些慢SQL的执行统计信息,如耗时、执行状态、扫描数据量等。

流畅通达的数据链路

分析业务往往需要从不同数据源头汇聚数据,并最终基于多方数据给出分析结果。数据导入导出是否有相应的通道支持、速度是否满足性能要求,直接决定着分析业务的开发效率和产出质量。

云数据库ClickHouse提供了完善的云上数据生态。当前支持的数据源包括:

1)RDS MySQL及自建MySQL:配合阿里云数据传输服务DTS,云数据库ClickHouse实现了从RDS MySQL实时增量导入数据到ClickHouse。通过batch化写入,既保证了增量导入的性能,又提供了可控的同步延时。通过将delete/update转化为insert,避开了ClickHouse对于delete/update的限制,消除了常见的too many parts报错。另外,云数据库ClickHouse还支持批量自动迁移MySQL库表结构到ClickHouse,智能的根据MySQL库表特点、ClickHouse集群特点,从ClickHouse十几种表引擎中选择最合适的表引擎,并设置合理的引擎参数。

2)日志服务SLS:日志是分析数据的一大来源,云数据库ClickHouse打通了与日志服务SLS的数据迁移通道。能够自动识别SLS的数据schema,实时增量同步数据。同时,也提供了丰富的日志传输监控功能,包括导入速度、错误率、当前CPU/MEM消耗等。

3)MaxCompute(原ODPS):离线数仓中往往存储着海量历史数据,但是在业务越来越趋近实时化的大背景下,离线计算的性能已经无法满足要求。因此将热数据导入到ClickHouse中进行计算加速,是常见的业务架构。云数据库ClickHouse支持以外表方式直接导入MaxCompute数据,借助于精心实现的导入架构,云数据库ClicckHouse支持集群内多机并行、单机内多线程并行导入,能够实现单机80MB/S~100MB/S的导入速度,而且伴随着集群机器台数的增长,完全可线性拓展。

4)对象存储服务OSS及分布式文件系统HDFS:在OSS/HDFS中往往存储着大量Parquet、ORC、CSV等格式的对象文件,云数据库ClickHouse同样支持以外表方式直接导入各种格式的原始数据。

除了以上数据源,云数据库ClickHouse还支持Spark、Flink、Kafka等多种数据源的导入功能。

极致优化的内核技术

基于开源ClickHouse,云数据库ClickHouse实现了大量的内核优化及新功能开发。

• 维度表
开源ClickHouse提供了词典功能来模拟维度表,该方法存在以下问题:1)需要从外部数据源如MySQL中加载,对于词典数据的管理需要在其他系统中进行,业务上实现逻辑相对复杂且无法在ClickHouse中实时感知词典变化;2)词典数据需要一直保存在内存中,当词典数据较大且个数较多时,内存耗用大;3)使用时,需要通过dictGet等函数进行读取,不符合常规SQL使用习惯。

云数据库ClickHouse原生实现了维度表功能,解决了以上问题。首先,写入数据会自动同步到每台server上确保一致性;其次,数据落盘确保数据不丢且不会占用过多内存,结合cache机制也保证了热数据的IO性能;最后,维度表完全在云数据库ClickHouse内部管理,无需耦合其他系统,极大的简化了业务上的使用和维护代价。

• 资源队列
在分析型业务中,workload通常灵活多变,带来了稳定性上的诸多挑战。系统中既有对于响应速度要求高的简单查询,也有需要长时间run的复杂查询,如何避免高并发的复杂查询耗尽系统资源导致server OOM?又如何避免复杂查询一直占据系统资源不释放从而影响了简单查询的响应时间?

为了解决以上问题,云数据库ClickHouse开发了资源队列功能,使得用户可以指定某个资源队列的CPU、内存使用量。一来确保了特定资源队列中的查询,不会使用超过该队列限定的资源量,确保系统不会因为复杂查询并发太大而OOM;二来也确保了不同资源队列之间不会相互干扰,从而确保不同业务的相互独立。

此外,简单的资源队列硬隔离方案,会造成资源浪费,比如队列A不使用的内存也无法被队列B利用。云数据库ClickHouse在资源队列基础上,还实现了动态的资源共享与抢占。当一个队列资源空闲时,可以共享给其他队列使用;当查询下发到队列中后,会动态的将被占用资源抢占回来。

• 冷热数据分层存储
海量数据的存储成本往往是业务系统技术选型的关键考虑因素之一。在分析业务中,通常有着明显的冷热数据特征,比如经常查询最近一个月的数据且对性能要求较高,其他数据查询频率极低且可以容忍更高的响应时间。结合这个业务特点,将冷热数据分别存储于不同介质上,可以大幅度降低存储成本。

云数据库ClickHouse基于OSS,设计并实现了分层存储:热数据被存放在本地盘中,确保查询性能;冷数据按照过期时间或指定存储策略被转移到OSS上。考虑到OSS有如下系统特点,也即单次访问latency相对较高、对于metadata 的操作有QPS限制、按照object key前缀有序保存数据会引起访问热点。为了最大化分层存储的性能,云数据库ClickHouse全新设计了存储方案:将实际数据文件改名为随机文件名,并且存储到OSS bucket中;将数据文件对应的metadata仍旧保存在本地盘中,并在metadata中保存指向OSS实际文件的指针。这样对于metadata的访问延时很小且不会超出OSS QPS限制,而数据文件也因为随机文件命名而被分散到了OSS的不同分片上,从而具有最大的IO吞吐能力。

未来展望

云数据库ClickHouse未来会继续夯实弹性管控、数据链路等基础能力,同时从内核上不断增强ClickHouse现有性能优势,开发二级稠密索引、存储计算分离等核心功能,并且逐步优化分布式计算能力。云数据库ClickHouse将在产品体验和性价比上持续投入,做最快最便宜的列式数据库!

了解更多详情可点击:
https://www.aliyun.com/product/clickhouse

目录
相关文章
|
存储 SQL Cloud Native
双11特刊 | 迎难而上,支撑350亿次在线查询的数据仓库是怎样炼成的?
阿里云数据库已连续多年稳定支撑天猫双11,历经极端流量场景淬炼。除了保障稳定顺滑的基本盘,今年大促期间数据库通过全面云原生化,大幅提升用户体验,让技术帮助业务产生更有价值的消费者体验,持续通过技术创新赋能用户,引领技术发展路径。 双11已圆满落幕,但技术的探索,仍未止步。 “阿里云数据库” 公众号特此推出《好科技的新起点——2021双11阿里云数据库技术揭秘》系列干货文章,为你讲述年度“技术大考”背后的故事,敬请关注!
545 1
双11特刊 | 迎难而上,支撑350亿次在线查询的数据仓库是怎样炼成的?
|
存储 SQL 固态存储
秘密武器 | 看AnalyticDB如何强力支撑双十一
#前 言 每年双十一购物狂欢节都是云原生数据仓库AnalyticDB MySQL版(原分析型数据库MySQL版)的一块试金石。今年AnalyticDB除了在阿里数字经济体内进入更多核心交易链路,全力支撑双十一以外,AnalyticDB全面拥抱云原生,构建极致弹性,大幅降低成本,释放技术红利,重磅发布了诸多全新企业级特性,让用户及时拥有极高性价比的云原生数据仓库。 #云原生数据仓库An
秘密武器 | 看AnalyticDB如何强力支撑双十一
|
运维 监控 Cloud Native
国货之光业务增长背后的技术支持 - 完美日记的云原生实践
利用 ACK 容器快速弹性扩缩容,节约服务器成本 50% 以上。
国货之光业务增长背后的技术支持 - 完美日记的云原生实践
|
中间件 Java 测试技术
中间件性能挑战赛上线了两大黑科技,是高手就盘它!!
本届挑战赛的评测环节完全使用了云上的产品和服务,是一场真正意义上的云端赛事。可能有人会说:这有什么了不起?其实不然,纵观每届挑战赛,这还是第一次完全抛弃了阿里集团内部的专有系统而完全拥抱公共云,这是具有里程碑意义的一次改变。
4275 4
|
数据采集 运维 监控
阿里云心选!「DataFlux」云时代的数据监控横空出世
IT发展以来,从个人电脑到云计算,唯一没有缺席的一个技术就是监控,当我们打开Windows任务管理器的时候看到CPU、内存就是监控,到我们今天大部分工程师打开云的控制台,大部分情况也是想要看对应产品的监控。
2107 0
阿里云心选!「DataFlux」云时代的数据监控横空出世
|
人工智能 安全 JavaScript
汇总!如何高效利用阿里巴巴的“战疫情”方案与工具包
越来越多的阿里人行动起来,专项基金、远程办公方案、开发者工具等不断帮助更多企业和个人,争分夺秒,与时间赛跑,用技术提升效率,减少更多的损失。
3898 0
汇总!如何高效利用阿里巴巴的“战疫情”方案与工具包
|
Cloud Native 测试技术 分布式数据库
免费下载 |《双 11 背后——支付宝技术升级战》带你即刻了解千亿背后的“秘密武器”
蚂蚁金服全新电子书《双 11 背后——支付宝技术升级战》正式上线
611 0
免费下载 |《双 11 背后——支付宝技术升级战》带你即刻了解千亿背后的“秘密武器”
|
中间件 双11 流计算
给你机会挑战双十一实时计算,你敢来吗?【阿里中间件性能挑战赛来袭】
由阿里中间件与天池平台联合举办的“阿里中间件性能挑战赛”,大赛不仅为选手们开放双十一实时交易真实场景,还提供了丰厚奖金、诱人激励,欢迎社会人才加入挑战。大赛主要考察选手的网络编程能力和性能调优能力。我们希望通过大赛吸引和沉淀优秀的编程高手,加强内外部技术人员的交流与碰撞,并让技术发声。
5437 2
|
Cloud Native 架构师 双11
【1109 - 1113直播导视 | PPT 下载】开源日再度来袭:实时计算技术的最新探索成果和实践、今年双11究竟有啥黑科技?
本周4个专题页重磅推荐,直播&前沿技术知识两不误,分别是双十一技术回顾&亚洲最大的开源关系型数据库生态大会PostgresConf.CN&数据库&开源日,块办好小板凳前来观看吧!
2786 0
|
关系型数据库 大数据 分布式数据库

热门文章

最新文章