混合负载 HTAP
MatrixOne 是一款能够支持 HTAP(Hybrid Transaction Analytical Processing)混合负载处理的数据库,旨在提供满足单一数据库内事务处理(TP)和分析处理(AP)所有需求的解决方案。凭借其存储和计算事务的解耦架构,MatrixOne 能够在同一数据引擎中同时支持在线交易和实时统计分析,同时提供高效的资源隔离机制。这种设计大大保留了数据的新鲜度,省去了在许多业务场景中构建实时数据仓库的步骤,从而帮助客户实现其业务价值。
业务需求
随着企业业务规模的扩大,数据量的不断增长,以及业务系统的日益复杂,传统的在线数据库不得不面对拆分的问题。然而,拆分后的架构并不能满足一些需要关联统计和实时分析的需求。此时,类似实时数据仓库的产品应运而生。然而,由于实时数据仓库的架构复杂,成本高昂,并非所有的企业都能构建一整套生态链路。MatrixOne 的 HTAP 模式应运而生,它可以使用一套引擎在支持高并发在线吞吐的同时,提供海量数据的实时在线分析能力,为企业提升效率、持续创新提供了动力。
功能优势
- 一站式体验:满足在单一数据库内进行事务处理(TP)和分析处理(AP)的所有需求,用户可以享受到覆盖整个 TP 和 AP 场景的一站式体验。
- 简化集成工作:用户使用 MatrixOne 只需要进行少量的集成工作,就能实现全面的 TP 和 AP 场景的使用,尤其能显著减少从 TP 数据库同步到 AP 数据库的复杂 ETL 工作。
- 高性价比:MatrixOne 使用单一存储引擎来实现 HTAP,相比于传统的多引擎方案,用户只需要维护一套集群,存储一份数据,就能显著降低硬件投入。
技术架构
MatrixOne 通过模块化的存储、计算和事务架构,多级存储体系,以及负载处理链路隔离的模式来实现 HTAP。
存储、计算、事务模块化分离
MatrixOne 的整体技术架构采用完全的存储和计算分离架构。通过模块化设计,将数据库的计算、存储、事务处理分离为单独的模块,从而组建出一套各组件都具有独立伸缩能力的数据库系统。如下图所示,MatrixOne 由三个独立层级构成:
- 计算层,以计算节点 Compute Node 为单位,实现计算和事务处理的无服务器化,并有自己的 Cache,支持随意重启和扩缩容;多个 Compute Node 可以并行计算,提升查询效率。
- 事务层,由数据库节点 Database Node 和日志节点 Log Service 组成,提供完整的日志服务以及元数据信息,内置 Logtail 用于保存最近写入的新数据。
- 存储层,所有数据均保存在以 S3 为代表的对象存储中,实现了低成本、无限扩展的存储方式,通过命名为 File Service 的统一文件操作服务,实现了不同节点对底层存储的无感知操作。
多级存储体系
如上一章节中图示所示,MatrixOne 的存储体系由全量数据共享存储、少量共享日志和计算节点的无状态缓存组成。
- 全量数据保存在对象存储中,作为整个数据库的主存储,也是数据持久化的唯一保存位置。对象存储具有成本低廉,扩展性近乎无限的特性。
- LogService 提供共享日志服务,用于对整个集群的写入/更新等事务信息进行状态信息保存,它是整个集群唯一带状态的组件。因此,LogService 需要以分布式 Raft 协议以 3 节点的形式保证高可用。但是它只保留一段时间的事务处理日志,我们称之为 Logtail。隔一段时间,就会有 DN 来帮助将历史日志进行压缩,存入 S3,因此 Logtail 可以保持一个非常精简的数据大小,一般在几 GB 左右。
- 每个计算节点 CN 上都有缓存,在用户初次查询时,会从对象存储中读取相关数据并放入缓存中,作为热数据。当客户再次查询相同内容时,如果命中缓存,将会快速向用户返回查询结果。关于缓存带来的冷热数据分离的技术特性,可以参考数据缓存及冷热数据分离架构详解。另外,除了读取对象存储中的数据外,CN 节点还会向 LogService 订阅 Logtail 的数据,LogService 中有新的更新会即时推送给 CN。
负载处理链路隔离
自定义负载隔离
用户请求首先会进入 MatrixOne 集群并通过 Proxy 模块。Proxy 是用于实现计算节点分组和隔离的模块。该模块通过配置将计算节点 CN 分为若干组,并用标签区分各种租户或负载,让用户能够根据不同的业务需求设定不同的 CN 组处理不同的业务。
有关 Proxy 对 CN 分组使用的具体操作,可以参考使用 Proxy 管理 CN 组。
TP/AP 负载链路隔离
在执行层面,MatrixOne 会根据请求类型将其路由到不同的处理链路,从而实现 OLTP 和 OLAP 的隔离。下面我们将根据读写请求的处理方式来详细解释如何实现负载隔离。
写请求处理
如图所示,处理写请求(INSERT/UPDATE/DELETE)时:
CN 节点会启动一个事务,并检查写入请求是否有主键冲突或其他事务相关问题,如果有,则直接向用户返回错误。
接下来,CN 会根据写请求的数据量大小来决定操作的链路。如果数据量没有超过设定的阈值(通常为 10MB),则 CN 节点会将数据发送给 DN 节点,DN 节点会进行写写冲突检测和事务仲裁等操作,确保无误后,将这些数据以日志形式写入 LogService,形成 Logtail。
更新的 Logtail 将即时推送给订阅了 Logtail 数据的 CN 节点,以便查询。如果数据量超过阈值,则 CN 节点会直接将数据写入对象存储,并将提交 commit 信息发送给 DN,DN 节点会进行写写冲突检测和事务仲裁等操作,在确认无误后,提交事务。
从上图可知,少量数据的 OLTP 类型写入请求会经过 CN 至 DN 再至 LogService 的处理链路,而大数据量的写入请求,如 Load 等,则会主要经过 CN 至 S3,以及少量的 CN 至 DN。
读请求处理
如图所示,处理读请求时,CN 节点会首先查看已订阅的 Logtail 数据,如果数据直接命中 Logtail,则说明数据位于最新的一部分写入数据中,可以直接返回。如果没有命中 Logtail,CN 会检查自己及其他可见 CN 的缓存,如果命中缓存,将直接返回结果。如果没有命中缓存,CN 会通过分析执行计划判断是否需要大量读取数据,如果
超过一定的阈值(如 200 个 block size)则由多个 CN 节点并行从对象存储中读取,如果未超过阈值则由单个 CN 节点从对象存储中读取。
如上图所示,无论是 OLTP 还是 OLAP 的读请求,都会经过 CN 至 S3 的处理链路。通过 Proxy 对 CN 节点的隔离,可以进一步实现 CN 的隔离。
应用场景
无论在金融、电信、制造业还是互联网、科技等新兴行业,HTAP 都有广泛的应用场景。
例如,在金融领域,HTAP 数据库可以满足高速交易处理和实时风险管理的需求,支持金融交易的高吞吐量和低延迟要求,同时提供实时数据分析功能,以支持决策制定和风险监控。
在电信行业,HTAP 数据库可用于实时计费和网络优化,能处理大量实时数据,追踪用户通信和网络活动,同时支持实时分析和智能决策,以改善服务质量、网络性能和用户体验。
在物联网领域,HTAP 数据库可用于设备管理和实时监控,能处理大量传感器数据和设备状态信息,并提供实时设备监控和管理功能,这对于物联网系统的实时决策、远程故障诊断和预测维护具有重要意义。
金融实时风控系统
某银行作为一家领先的城市商业银行,其信用卡业务拥有一套实时风控系统,该系统主要负责监控和评估信用卡交易,识别交易风险并及时采取限制措施。
以下表格展示了这套系统的核心业务需求场景以及 MatrixOne 的 HTAP 如何满足这些需求:
核心业务需求 | 业务类型 | MatrixOne 的 HTAP 能力 |
---|---|---|
实时获取交易数据 | 快速且低延迟的数据写入 | MatrixOne 能够高效并发地写入海量数据,通过扩展多 CN 节点和对象存储来进一步提升性能。 |
离线计算大量数据指标,分析用户行为及风险因素 | 复杂的分析查询,需要处理 TB 级别的数据 | MatrixOne 具备处理海量星型和雪花型数据分析的能力,通过多 CN 节点并行计算可以线性提升分析能力。 |
实时分析交易数据,计算风险指标 | 典型的 AP 业务,需要在规定时间内计算数据结果 | MatrixOne 的多 CN 节点并行计算能力能够满足大规模数据报表的计算需求,同时提供快速的数据读取性能。 |
面对频繁且剧烈的业务波动 | 需要灵活的扩展性架构来应对大的负载波动 | MatrixOne 的存储和计算分离架构具备强大的扩展性,能在业务波动时快速扩缩容以匹配业务需求。 |
电信业务管理系统
某企业是一家省级电信运营商,服务用户数量达数千万,主要提供电话通信服务,需要同时支撑海量用户的使用和统计分析。
以下表格展示了这套系统的核心业务场景以及 MatrixOne 的 HTAP 如何满足这些需求:
核心业务场景 | 业务类型 | MatrixOne 的 HTAP 解决方案 |
---|---|---|
查询用户话费缴存情况并实时停机 | 高并发的短小事务,需要低延迟 | MatrixOne 具备 OLTP 能力,多 CN 节点分布式架构可以确保在高并发下的稳定性能,同时实现负载均衡。 |
用户充值后实时更新账户余额 | 高并发的 |
短小事务,需要低延迟 | MatrixOne 的 TP 能力可以满足高并发且低延迟的 TP 需求,同时分布式多 CN 节点架构提供负载均衡特性。 | | 批量调整用户套餐并在下月生效 | 超大事务,需要高性能 | MatrixOne 可直接写入 S3,避免了 Logservice 在高并发下的争用,从而实现快速批量的数据写入。 | | 对用户数据进行日、周、月、季度和年度统计 | 典型的 AP 业务,需要在规定时间内计算数据结果 | MatrixOne 的多 CN 节点并行计算能力能满足大规模数据报表的计算需求,同时提供快速的数据读取性能。 |
制造生产执行系统
某企业是一家电子产品制造商,拥有数十条各类消费电子产品的生产线。其生产制造执行(MES)系统需要对生产线上的人员、机器、物料和流程进行管理,同时定期分析生产效率和能耗等问题。
以下表格展示了这套系统的核心业务场景以及 MatrixOne 的 HTAP 如何满足这些需求:
核心业务场景 | 业务类型 | MatrixOne 的 HTAP 解决方案 |
---|---|---|
管理生产、仓储和质量 | 高并发短小事务,需要低延迟 | MatrixOne 具备 OLTP 能力,分布式多 CN 节点可以确保在高并发下的稳定性能,同时实现负载均衡。 |
实时采集大量机器生产数据 | 高并发多数据类型的数据写入 | MatrixOne 能够高效并发地写入海量数据,通过扩展多 CN 节点和对象存储来进一步提升性能。 |
分析海量历史生产记录的溯源 | 需要对海量离线数据进行多维查询分析 | MatrixOne 具备处理海量星型和雪花型数据分析的能力,通过多 CN 节点并行计算可以线性提升分析能力。 |
实时查询生产效率、能耗和设备状态 | 极快的 Ad-hoc 交互式分析 | MatrixOne 支持各种复杂 SQL 查询,通过多 CN 节点并行计算可以实现实时分析。 |