首批通过分布式安全可靠测评,为关键业务系统打造
基于 Flink + OB Cloud 的实时维表服务显著提升性能
- 3-4倍性能提升
- 50%硬件成本节省
OceanBase 在贝壳场景下应用实践
肖赞-贝壳大数据中心平台工具部负责人
肖赞贝壳大数据中心平台工具部负责人
王天庆贝壳计算存储方向容器引擎团队负责人
王天庆贝壳计算存储方向容器引擎团队负责人
2023-07-06
2023-06-14
一、业务背景
在典型的实时数仓或实时业务场景里,Flink 实时流处理过程中,经常需要将事实表与外部维度表进行关联,查询维度表,补全事实表中的信息。例如,在贝壳家居等业务场景中,需要在用户下单后将订单信息与维度表中商品信息的相关信息进行实时关联。考虑到维表数据量较大,并且Flink实时查询QPS 较高,传统数据库 MySQL等难以支撑,因此,贝壳采用 HBase 作为维表。HBase 是一个分布式列存储NoSQL数据库,具有较好地查询性能,但是也存在一些痛点。
二、业务挑战
- HBase不支持二级索引
- 在许多应用场景中,Flink 任务关联维度表时,除了需要基于主键字段进行关联外,还需要其他非主键字段进行关联。但是,HBase 只支持行键(Row Key)作为单一索引,本身并不直接支持二级索引。Apache Phoenix 等项目对 HBase 的基础上进行扩展,能够实现类似于二级索引的功能,但是需要更多的开发和维护成本。
- HBase依赖较多,部署复杂,成本高
- HBase 是构建在 Hadoop 生态系统之上的,它依赖于分布式文件系统 HDFS 用于数据的持久化存储,依赖 ZooKeeper 来完成选举、节点管理、集群元数据维护等,因此,在生产环境中部署 HBase 之前,需要先部署和配置 Hadoop、ZooKeeper 等组件,涉及组件多,部署较复杂,运维成本较高,硬件成本也较高,特别是在一些特殊场景下需要分别为其部署独立的 HBase 集群。
三、解决方案
OceanBase 替换 HBase 方案
首先,OceanBase 原生支持二级索引功能,可以直接在维表上创建额外的索引,提升维表的查询性能。
其次,OceanBase只有 OBServer 一个角色,不依赖任何外部组件,天然具备高可用能力,部署非常简单。
同时,其自带的周边工具也可以快速安装,比如通过 OCP(OceanBase Cloud Platform)白屏化安装或通过 OBD(OceanBase Deployer)命令行安装集群,运维很方便。
四、应用场景
在典型的实时数仓或实时业务场景里,Flink 实时流处理过程中,经常需要将事实表与外部维度表进行关联,查询维度表,补全事实表中的信息。例如,在贝壳家居等业务场景中,需要在用户下单后将订单信息与维度表中商品信息的相关信息进行实时关联。
五、客户收益
在相同环境下,OceanBase 综合性能要优于 HBase,并且原生支持二级索引能力,部署简单,具有更低的硬件成本和运维成本。贝壳选择使用 OceanBase 替换 HBase,作为实时计算平台的实时维表存储后:
- 性能提升 3-4 倍
- 维表数据量在 2000万及1亿条(大数据量)时,低任务并行度下的 OceanBase QPS 优于 HBase,高任务并行度下 OceanBase 相比 HBase 有 3-4 倍性能提升,优势明显。
- 高并行度性能优势明显
- 表数据量在 10w(小数据量)时,低任务并行度下 HBase QPS 略高于 OceanBase,高并行度下 OceanBase 优势明显。对OceanBase 使用二级索引列关联(1 对 N 关联)性能良好,可满足较高QPS业务场景需求。
- 硬件成本节省 50%
- 在部署资源消耗方面,HBase 方案机器成本大概是 OceanBase 的 2倍。因为HBase为了保证高可用, 采用了双HRegionServer,而HBase 又是基于三副本的Hadoop 存储数据, 所以,一份数据通常需要六副本。在集群规模不大时,使用Zookeeper、Hadoop 会带来大量额外的机器冗余。但是,使用OceanBase存储数据只需要三副本,成本降低一半。