返回

招商信诺人寿:基于 Apache Doris 统一 OLAP 技术栈实践

后端

前言

随着业务的快速发展,招商信诺人寿的数据量呈爆炸式增长,对实时数据分析的需求也越来越迫切。传统的数据仓库解决方案已经无法满足需求,需要一种新的技术栈来统一 OLAP 技术栈,实现数据实时化。

技术选型

在技术选型阶段,招商信诺人寿考察了多种 OLAP 数据库,包括 Apache Doris、Apache Druid、ClickHouse 等。最终,招商信诺人寿选择了 Apache Doris 作为其 OLAP 技术栈的统一方案。

Apache Doris 是一个开源的、分布式的、列式存储的 MPP 数据库,具有高性能、高可用、高扩展性、低成本等优点。Apache Doris 非常适合招商信诺人寿的业务场景,因为它可以满足招商信诺人寿对实时数据分析的需求,并可以很好地扩展到数百亿甚至数千亿的数据规模。

架构设计

招商信诺人寿的 OLAP 技术栈架构如下图所示:

招商信诺人寿 OLAP 技术栈架构图

在该架构中,数据源通过 CDC(Change Data Capture)工具将数据实时地同步到 Apache Doris 中。Apache Doris 将数据存储在分布式存储系统中,并通过计算框架对数据进行计算。计算结果通过 API 接口提供给前端应用。

数据处理

招商信诺人寿在 Apache Doris 中主要使用以下两种数据处理方式:

  • 批量导入: 将历史数据一次性导入到 Apache Doris 中。
  • 实时写入: 通过 CDC 工具将数据实时地同步到 Apache Doris 中。

批量导入是将历史数据一次性导入到 Apache Doris 中。批量导入的方式有很多种,包括但不限于:

  • 使用 Apache Sqoop: Apache Sqoop 是一个开源的工具,可以将数据从关系型数据库导入到 Hadoop 生态系统中。
  • 使用 Apache Flume: Apache Flume 是一个开源的工具,可以将数据从各种来源收集起来,并将其传输到 Apache Doris 中。
  • 使用 Apache Kafka: Apache Kafka 是一个开源的分布式流处理平台,可以将数据从各种来源收集起来,并将其传输到 Apache Doris 中。

实时写入是通过 CDC 工具将数据实时地同步到 Apache Doris 中。CDC 工具有很多种,包括但不限于:

  • Canal: Canal 是一个开源的工具,可以将 MySQL 的 binlog 日志解析成事件,并将其传输到 Apache Doris 中。
  • Debezium: Debezium 是一个开源的工具,可以将多种关系型数据库的 binlog 日志解析成事件,并将其传输到 Apache Doris 中。

性能优化

招商信诺人寿在 Apache Doris 中主要通过以下方式进行性能优化:

  • 选择合适的存储引擎: Apache Doris 支持多种存储引擎,包括但不限于:
    • Apache Parquet: Apache Parquet 是一种列式存储格式,具有高压缩比、高查询性能等优点。
    • Apache ORC: Apache ORC 是一种列式存储格式,具有高压缩比、高查询性能等优点。
    • Apache Kudu: Apache Kudu 是一种列式存储格式,具有高并发写入、高查询性能等优点。
  • 选择合适的查询引擎: Apache Doris 支持多种查询引擎,包括但不限于:
    • Apache Impala: Apache Impala 是一个开源的 MPP 查询引擎,具有高性能、低延迟等优点。
    • Apache Spark: Apache Spark 是一个开源的分布式计算引擎,具有高性能、高扩展性等优点。
  • 选择合适的索引: Apache Doris 支持多种索引,包括但不限于:
    • Bitmap 索引: Bitmap 索引是一种位图索引,具有查询速度快、空间占用小等优点。
    • Bloom Filter 索引: Bloom Filter 索引是一种布隆过滤器索引,具有查询速度快、空间占用小等优点。
    • In Memory 索引: In Memory 索引是一种内存索引,具有查询速度快、空间占用小等优点。

挑战与解决方案

招商信诺人寿在实践中也遇到了不少挑战,其中包括但不限于:

  • 数据量大: 招商信诺人寿的数据量非常大,达到了数百亿甚至数千亿的规模。如何高效地存储和处理这些数据是一个很大的挑战。
  • 数据实时性要求高: 招商信诺人寿对数据实时性的要求很高,需要在数据产生后几分钟内就能在 Apache Doris 中查询到。如何实现数据实时化是一个很大的挑战。
  • 运维成本高: Apache Doris 是一个分布式的系统,需要大量的服务器来部署和维护。如何降低运维成本是一个很大的挑战。

针对这些挑战,招商信诺人寿提出了以下解决方案:

  • 采用分布式存储系统: Apache Doris 采用分布式存储系统来存储数据,可以有效地扩展到数百亿甚至数千亿的数据规模。
  • 采用 CDC 工具: Apache Doris 采用 CDC 工具来实现数据实时化。CDC 工具可以将数据从各种来源收集起来,并将其实时地同步到 Apache Doris 中。
  • 采用云计算平台: Apache Doris 可以部署在云计算平台上,可以有效地降低运维成本。

总结

招商信诺人寿基于 Apache Doris 实现了 OLAP 技术栈的统一,赋能了 70 多个一线业务场景的实时化,并在性能、成本、运维等方面取得了显著成效。招商信诺人寿的实践经验证明,Apache Doris 是一个非常适合 OLAP 技术栈统一的数据库。