理想汽车OLAP引擎经历了从StarRocks存算一体架构到存算分离架构的演进,以解决原有架构的稳定性、产品化能力和资源利用率问题。
StarRocks存算一体旧架构的挑战
- 资源浪费:按峰值配置资源导致低峰时资源利用率低(20%),扩磁盘需大量扩容机器造成CPU和内存浪费,冷数据存储资源未被有效利用。
- 稳定性不足:监控预警能力不完善,用户使用缺乏规范,集群内隔离能力不足。
- 产品化能力不完善:不易用,导致用户随意使用。
措施
- 统一OLAP引擎为StarRocks,采用存算分离架构,探索on Kubernetes部署。
- 构建完善的监控、告警、巡检体系,做好集群规划,规范用户使用,实现资源组隔离。
- 完善元数据、数据导入等产品能力,跟进社区最新版本。
StarRocks存算分离架构实践
- 资源削峰:通过夜间预计算(pipeline_dop设为1/2,加大query_timeout)和白天服务用户(pipeline_dop正常),机器资源节省30%,大表查询性能保持(6s左右),中小表秒级响应。
- 弹性伸缩:验证配置显示,命中本地缓存时性能与存算一体持平,不命中本地缓存时性能下降5.8倍。
- Spark与StarRocks互补:夜间Spark生产数据,日间StarRocks分析数据,单表单次写入存算分离稍优于存算一体,单BE导入能力单CN导入速度平均142MB/s。
- 资源利用率提升:Spark和StarRocks共用k8s集群,互相削峰填谷,资源利用率提高50%。
StarRocks统一引擎、DQS统一出口
- 全业务线覆盖:智能座舱、智能驾驶、运营/经营等。
- 全分析场景覆盖:湖仓分析、实时/离线分析、ad-hoc灵活分析、联邦查询。
存算分离架构优化方案
- 架构设计:
- 单集群内FE存算分离共享元数据,按场景隔离FE。
- 按场景切分warehouse,内外分离,读写分离,高优低优分离。
- 弹性伸缩:
- ad-hoc、低优场景on k8s弹性伸缩,内表场景设置弹性warehouse。
- 故障时基于k8s快速拉起backup集群。