OB体育StarRocks 是国产开源、极速全场景MPP数据库,它采用新一代弹性MPP架构,可以高效支持大数据量级的多维分析、实时分析、高并发分析等多种数据分析场景,性能出色,比同类产品平均快3-5倍。
白山云大数据团队在两年多的学习和实践中,基于StarRocks搭建了全新的大数据平台,并已全量投入使用。因此我们将选型接入、改造优化的过程与经验进行分享,希望能为大家带来一些借鉴与思考。
白山云CDN每天数万亿次访问的规模下,面对业务方需要实现全网日志写入分钟级延迟,查询毫秒级响应,旧的数据架构在性能、规模、分析与挖掘上都面临巨大挑战,大数据团队对数据底座提出了更高的要求。
在引入StarRocks之前,白山云大数据团队采用ClickHouse作为分布式数据库。ClickHouse是一个面向列的开源数据库管理系统,它使用C++编写OB体育,并支持SQL查询语言。随着业务的发展,ClickHouse逐渐暴露出一些明显的问题,例如查询速度慢、横向扩展能力差、数据写入时延长、故障恢复用时较长等。当遇到故障或问题时,ClickHouse全靠文档和阅读源码,这更造成解决问题的途径又变成新的问题。
因此白山云大数据团队开始寻找替代方案,目标是找到一款高性能、高可用的分布式数据库。经过选型评估,最终选择了 StarRocks 作为数据平台的底座。
1、基于pipeline查询引擎和物化视图两大特性,StarRocks 查询性能在同类数据库中具有明显优势,尤其是物化视图机制可以做到数据在写入时自动完成上层的细粒度聚合,无需单独跑聚合任务,在获得更低延迟的同时节省了大量的任务资源。
4、在缩减或扩容资源时,只需一行命令,无需重启集群即可自动完成扩缩容,不会对稳定性造成影响,这也是ClickHouse无法支持的。
在此期间,白山云大数据团队不断摸索与调优,使得业务达到了相对满意的效果,在这里也将经验进行分享。
首先是StarRocks受限于自身的架构问题,不支持过高的写入频率,否则会高频触发压缩机制,影响集群稳定性,因此白山云大数据团队在StarRocks上游自行开发了Agglog组件,所有写入方将数据统一由HTTP接口提交到Agglog接口,由Agglog定时写入StarRocks,保证写入数据频率可控。
StarRocks在多机房部署集群,针对重保数据同时写入多个机房,然后由ProxySQL组件提供数据查询,同时设计集群稳定性监测组件,实时观测每个IDC的集群性能和稳定性,在单一IDC发生稳定性抖动时,集群稳定性监测组件会自动修改ProxySQL的配置,此时用户通过ProxySQL查询时就自动查到了另一个机房获取结果。
为预防StarRocks单一节点抖动,大数据团队针对StarRocks集群配置了内部域名,所有查询、写入均使用域名访问,当集群需要进行扩缩容或者节点发生异常宕机时,可自助修改域名,使用方无需任何操作即可访问新节点、下掉旧节点,实现了无痛甚至无感知的扩缩容。
此外,大数据团队还针对自身业务逻辑和StarRocks的架构组成,设计了几十个监控维度和告警指标。在集群发生慢查询、慢压缩、节点抖动、查询写入突增突降等多个异常场景时,自动发出告警,进行自动处理或者等待人工介入。
1、业务价值:受益于StarRocks的架构优势,引入StarRocks后多个之前无法满足的需求场景得到了开发的机会,并得到业务部门的良好反馈,例如:
(1)万亿量级数据承载能力:每天万亿级别的用户请求日志分散在全球的数万台边缘服务器,由于数据量过于庞大,在旧架构中,中心数据仓库仅存储了秒级粒度到分钟粒度的聚合数据,在部分特定需求场景下非常不方便。引入StarRocks 后,基于StarRocks的湖仓一体特性,将全量的CDN明细日志接入了hudi集群,并通过StarRocks作为查询引擎对外提供查询。业务方可以无需额外的学习成本,快速地检索到明细的CDN请求日志的明细数据。
(2)数据入库时延降低期望:传统的数仓分层每一层都要数据落盘,上一层计算完成后下一层任务才开始执行,整体数据时延较长。改为写入StarRocks后,受益于StarRocks物化视图特性,在查询聚合数据的使用场景下,查询速度获得了2-16倍的提升,聚合表的数据延迟由15min降低到了2-3min。
(3)聚合数据毫秒响应需求:在全量接入StarRocks数据库之后,基于StarRocks的高性能低延迟,针对各类业务绘制了质量大盘、成本大盘,并针对下载速率、卡顿率等关键指标向外输出了低延迟的接口,为各个部门的性能优化,成本节约,调度策略优化,故障节点摘除等模块提供有效的数据支撑。
从实践结果来看,StarRocks 能满足90%以上的需求场景,对白山云各业务线的数据分析应用起到了关键性作用。
2、对社区的贡献:在使用过程中,针对发现的各种问题,大数据团队对源码进行阅读分析,发现了一些bug,并主动修复回馈给了社区。基于白山云超大访问量的业务场景,为社区进一步发展完善StarRocks提供了许多有价值的参考:
白山云大数据团队将进一步探索StarRocks冷热分离、湖仓一体、存算分离等多个全新模块,将StarRocks的性能发挥到极致。针对冷热分离,大数据团队已经进行了初步测试,以9台 1NVMe 12HDD的StarRocks BE节点集群为例,经过测试,热数据命中NVMe硬盘时,查询性能将是HDD硬盘的十倍以上。
作为白山云的技术底座,大数据团队将进一步对所有的StarRocks写入、查询收口,统一管理,拦截异常行为,提高集群性能,向各业务需求方提供更低延迟、更高性能、更加稳定的数据平台。
除此之外,未来我们将不再局限于问题修复类型的代码提交,而是要积极参与到社区新功能开发建设中,参与一些StarRocks新特性的开发。