实时数仓 Hologres 新一代弹性计算组实例技术揭秘
作者:王奇(花名慧青) 阿里云 Hologres 研发
随着实时数仓在业务生产系统的普及,资源弹性、资源隔离等保障业务稳定性方面的技术需求开始变得越来越迫切。Hologres 在保障业务方面持续优化核心技术竞争力,过去一年中,Hologres 创新提出并实现了新一代弹性计算组实例,旨在通过更强的隔离和弹性能力,进一步提高业务系统的稳定性。Hologres 弹性计算组在 2022 年双 11 也成功落地阿里众多核心业务场景,比如阿里巴巴 CCO 客服体验部,助力 CCO 在大促场景中实现更加平稳的客服调度和问题处理。
通过本文,我们将会详细介绍 Hologres 弹性计算组实例的实现原理,助力更多业务进一步提升企业级资源隔离和弹性能力。
大数据面临资源、成本、隔离、弹性的综合挑战
在业务发展初期,数据量和并发访问量较小的情况下,利用传统的实时数仓可以轻松满足各类业务数据的分析。随着业务的极速发展,业务复杂度、数据量、并发访问量逐步增加,实时数仓技术开始被越来越多的业务使用,并逐渐在生产业务中落地。于此同时,业务也开始不可避免的遇见分析场景、服务场景、离线加工场景等场景的系统负载冲突等资源隔离问题,业务对系统的隔离和弹性能力都提出了更高更严苛的要求,尤其是像双 11 等大促场景上,系统需要有负载隔离、弹性等高可用能力来支撑更加迅猛的流量峰值。
传统分布式系统是通过副本和隔离来实现业务生产系统的进一步稳定,而要实现生产更高的稳定也需要面临一定的取舍和挑战:
系统面向流量洪峰时的动态可扩展能力
系统因意外或者故障宕机时的快速恢复能力
多副本隔离带来的资源成本问题
业务高低峰时资源的弹性能力
.......
为了解决以上挑战,实现更加稳定、弹性、低成本的系统,Hologres 不断演进其技术能力:
在产品设计之初,就采用存储计算分离模式,可以非常高效的实现资源水平扩展能力,满足不同流量洪峰对资源的不同需求
内置调度系统,实现了节点故障、Failover 的快速检测以及自动调度恢复能力,即使有节点挂了,也能快速的拉起和切换,保障节点的可用性
支持资源组隔离、多形态 Replication 包括 Binlog、单实例 Replication、主从实例等,有效解决数据读写分离、实现资源隔离、故障隔离
....
更多关于高可用的实现请见>>Hologres高可用技术揭秘
随着业务的发展和技术的演进,以及企业对降本增效的诉求加深,如何在降低成本的同时还能保持更加极致的隔离和资源弹性能力,又成为实时数仓技术的另一大挑战。为了应对这个挑战,在今年 Hologres 创新提出建设实现了新一代弹性计算组实例技术,与主从实例不同之处在于,业务可以通过将计算资源分解为不同的计算组模式,不同的计算组共享一份存储,计算资源可弹性分配,按需创建,可同时完美支撑读写分离、资源隔离、业务隔离等诸多场景。
下面我们将会介绍 Hologres 弹性计算组实例的具体技术实现原理和最佳使用实践。
Hologres 技术再升级:新一代弹性计算组实例
Hologres 弹性计算组实例设计的最终目的是为用户提供高更强的资源隔离,不仅具有灵活性(即买即用)、资源隔离、弹性和极致扩展性等特点,最大化解决用户在数据分析上的诸多痛点难点问题,让“数据价值”不再可望不可即。
1、整体架构
Hologres 弹性计算组实例采用 Multi-cluster&Shared Data 架构,将计算资源分解为不同的计算组(一个计算组可以理解为一个 Virtual Warehouse,下文统一简称 Warehouse),计算组独立弹性可扩展(弹性分配、按需创建),计算组之间共享数据、元数据。
基于弹性、隔离和低成本的前提,Hologres 弹性计算组实例的核心组件的设计都具有灵活扩展扩展、资源隔离的特性。核心组件主要有分为三个层面:以一个实例为例
计算组:计算组是独立弹性可扩展的计算资源,负责执行用户的查询请求。用户可以根据业务需求,创建不同的计算组,通过不同的计算组来支撑业务需求,比如写入、查询等。
数据存储:数据存储在 Alibaba Pangu 存储服务上,不同的计算组共享一份 pangu 存储,有效节省存储资源。
云服务组件:云服务组件包括网关、Meta Service、Holo Master 等,主要有数据管理、安全认证管理、统一接入管理,以及节点管理等能力。
下面针对每个组件做更详细的介绍。
2、计算组 Warehouse
购买了一个 Hologres 实例之后,就拥有了计算资源。而计算组 Warehouse 是由 Hologres 的一组计算节点组成,用户可以通过 SQL 的方式十分灵活的按需定制每个计算组的计算资源大小。
目前 Hologres 每个实例默认最多可以创建 10 个 计算组(可调整),每个计算组最小为 32 Core,最大 512 Core(guc 可控制),用户可以根据需要设置合适的大小。
Warehouse 之间共享数据、元数据,不同的计算组访问同一个数据目录;计算组的内存部分的数据(mem table)会进行同步,默认是最终一致模式,也支持配置为强一致模式。
Warehouse 具有资源隔离、弹性等核心能力,下面我们主要逐一介绍。
资源隔离
可以根据业务需求创建多个计算组,每个计算组之间是共享同一份数据,并任意按需扩展计算组的数量和配置,底层只需要存储一份数据。不同负载的查询任务可以运行在不同的计算组上,计算组之间的计算资源是互相独立的。每个计算组上可以并发运行多个查询,每个查询请求会被路由到某个计算组进行执行;不同的计算组不会共享计算节点,因此不同 计算组 上运行的查询之间互相不会有资源竞争和性能影响,这样可以保证不同负载的查询之间互不影响性能,做到很好的资源隔离。
因为不同的 Warehouse 之间天然的计算资源隔离,因此可以通过多个计算资源组的方式实现不同的隔离需求:
读写隔离:一个实例既有写入又有查询时,如果因为写入过猛,会使用大量的资源,就会导致查询因等待资源而出现超时、变慢等问题,通过设置不同的计算组,能很好的解决因写入争抢资源,导致查询变慢的问题。
读读隔离:在实时数仓场景上,一个实例可能会有多种查询需求,比如对内的 BI 报表 OLAP 分析,对外的风控、推荐等在线服务,且不同的 OLAP 分析业务的保障程度可能也会不同,当有大 query 需要消耗较多资源时,可能会导致其余 SQL 因等待资源而变慢、超时等问题,尤其是在线服务场景,如果变慢可能会影响在线业务。可以通过设置不同的计算组,来支撑不同的查询场景,查询之间相互隔离,互不影响,能有效的提高在线服务的稳定性
写写隔离:根据不同的业务需求,不同写入任务之间的优先级会有不同,通过设置不同的计算组,可以很好的实现写入分离、离线写入分离,以及 实时写入 和 离线写入等写入之间的隔离,保障写入的稳定性。
业务场景隔离:除了任务、查询和写入之间的隔离,还可以通过 Warehouse 实现不同业务之间的隔离。将多个业务部门按照不同的计算组 隔离开,实现业务之间的完全的资源隔离,避免业务之间相关影响。
弹性
作为纯粹、弹性的计算资源,可以通过 SQL 的方式在任意时间进行按需地创建、删除或者重新配置 Warehouse。创建或者删除计算组不会影响底层存储的用户数据。可以根据业务需求动态地创建或者扩容计算资源,实现最大程度上的资源弹性,这样就能很好的满足用户在高峰和低谷对不同资源的诉求。
计算组的弹性可以为用户带来性价比更高的服务:在几乎同样的价格下,用户可以享受更快的性能。
例如:如果某个工作负载在 4 个计算节点上执行需要花费 15 个小时,那么在 30 个计算节点上执行可能只需要花费 2 个小时。虽然这两种模式的价格差不多,但是带给用户的体验却有着根本的区别:在同样花费的情况下,性能越快用户感受就越好。而计算组的弹性恰恰提供了极佳体验的选择,通过动态配置计算组,以更快地完成计算任务,但是并不需要额外多的花费开销。
Hologres 具有天然的计算存储分离架构,因此可以同时做到计算、存储高度可扩展,在弹性计算组的加持下做到双重弹性。
3、数据存储
Alibaba Pangu 是阿里巴巴自研的分布式文件系统,将并不高可靠的服务器中的磁盘连接成一个整体,向外提供安全稳定易用的文件存储能力,具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性。
Hologres 借助 Pangu 分布式文件系统,对用户提供高性能、高可靠、高可用、低成本、弹性存储空间、强大稳定安全等核心存储服务。不同的计算组共享一份 pangu 存储资源,这样就能有效的节省存储资源,数据不需要存储多份,没有冗余,同时也保障了数据的一致性。
4、云服务组件
在 Hologres 弹性计算组实例模式下,云服务组件也标准模式一致,包括元数据管理、安全认证管理、统一接入管理等能力,其中:
元数据管理:每个实例有统一的元数据管理的服务,被各个计算组共享。
Hologres Gateway 主要负责 统一的 安全认证、接入管理 等,并负责统一的高性能路由转发和连接管理 Warehouse 的能力
Hologres 弹性计算组实例产品优势
通过 Hologres 弹性计算组实例可以非常方便的支持/实现以下优势:
1、生态兼容
Hologres 弹性计算组实例兼容 Hologres 已有产品形态,已有实例可无缝平滑迁移至弹性计算组实例,使用计算组时可以像使用一个单独实例一样方便。功能使用上也无任何差异, Hologres 本身内置的函数、 SQL 扩展等全面兼容。
2、弹性
可根据业务负载需求即时扩缩容计算组,同时也可以按时或按需暂停或者拉起计算组(Scale Out),此外计算组可动态热扩缩容(Scale Up),这样就能使得资源得到最充分的利用。
计算和存储都可以高度按需水平扩展,满足业务的不同资源需求,真正做到双重弹性。
3、资源隔离
计算组之间的资源是天然隔离的,可以实现写写隔离、读写隔离、读读隔离、不同业务隔离等,在保障性能的同时满足复杂业务对资源的隔离需求,减少业务之间的相互影响。
4、低成本
可按需弹性使用资源,成本可控制到最低,同时计算组之间共享同一份存储数据,节省存储成本。
5、简单易用
弹性计算组实例只有一个 Endpoint,解决只读实例模式下多个 Endpoint 的配置问题。同时相关运维操作(扩缩容、启动暂停等)均可以通过 SQL 实现,通过简单配置就能支持多种业务场景,简单易用,有效降低使用和学习成本。
Hologres 弹性计算组实例最佳实践
目前 Hologres 弹性计算组实例可以实现但不仅限于如下三种典型应用场景,也可以是这几种场景的任意组合等。
1、读写分离场景
此种方式是实现完整的读写隔离、读读隔离,是资源隔离的部分场景,是比较常见的需求场景,一般业务场景可以考虑使用这种方式。
Hologres 的 只读实例 目前已可实现 读写分离,和 只读实例 相比 Hologres 弹性计算组实例 具有如下优势:
1、Hologres 弹性计算组实例对外享有同一个 Endpoint,解决了只读实例多个 Endpoint 的问题,业务也不被需要不同的应用配置不同的 Endpoint;
2、可以通过 SQL 一键切换默认 Virtual Warehouse,无需执行 JDBC 数据源的切换操作;
3、只读实例 目前 和主实例之间 数据完全同步,Virtual Warehouse 可以根据 Table Group 进行数据的定制同步,更加方便和灵活;
4、Hologres 弹性计算组可以实现更灵活定制的资源隔离:比如写写隔离等;
5、可根据业务情况,在任意时间进行按需地创建、销毁或者重新配置 Virtual Warehouse,实现资源更极致的弹性。
2、资源隔离场景
此种方式是更典型的资源隔离场景,可灵活的将多种场景隔离开,比如写写之间的隔离,读写隔离,以及查询隔离,适用于有更加灵活定制的资源隔离的需求。
3、业务隔离场景
此种方式是业务隔离场景,一个实例可能是有多个业务部门在使用,因此多个业务部门可以通过补贴计算组的方式进行隔离,实现完全的业务隔离。业务隔离也可以在此基础上再进行 写写分离、读写分离、读读分离等多种资源隔离的组合等十分灵活的多种资源隔离方式。
典型用户案例
CCO 为阿里巴巴集团客户体验事业部,通过触达消费者和商家的最前线,为消费者、商家和经济体提供专业的客户服务和客户体验,业务范围涵盖全阿里集团的客户体验,典型的如 88VIP 客服。
CCO 通过与 Hologres 高度共建,将传统数仓升级为集实时化、自助化、系统化于一体的用户体验实时数仓,支撑 CCO 内部的客服调度实时大屏,智能客服坐席分配、用户声音洞察分析等多个实时数仓场景,并支撑 CCO 历年双 11 大促,支撑上千+服务大屏,节约成本近 30%。
同时随着业务的快速发展,为了更好的洞察用户声音,提升产品体验的同时,CCO 也不断的与 Hologres 共建实时数仓核心能力:
2020 年年双 11 大促首次采用以 Hologres 为核心实时数仓方案,统一了实时核心数据与部分离线数据的存储,为了保障业务系统的高可用,通过数据双写的方式来支撑。见>>Hologres是如何完美支撑双11智能客服实时数仓的?
2021 年通过对实时数仓进行高可用架构升级,由链路双写顺利升级为读写分离高可用以及灾备架构,并在双 11 以及双 12 等核心场景规模应用。实时任务规模由几百+增加至上千+,写入压力增加至 1700 万+每秒,数据规模高达几百 TB,直接服务数十个在线服务场景,数百个核心分析业务,有效降低了构建实时数仓主备链路的人力以及机器成本,减轻了核心业务对于读取稳定的压力,完美经受住各大促核心场景的检验,实现生产高可用。见>>CCO x Hologres:实时数仓高可用架构再次升级,双11大规模落地
在今年,CCO 也将读写分离的架构升级为 Hologres 弹性计算组实例。相比去年的架构实现了资源的弹性按需使用,写写隔离,业务读写隔离等需求,同时在使用上不需要维护多个实例 Endpoint,系统变得更加灵活,也减少了运维压力。下图为今年 CCO 其中一个业务场景升级后的技术架构:
1)数据通过 Flink 实时写入至 Hologres,在 Hologres 中采用弹性计算组实例来支撑高可用。
2)因为写入的保障需求不同,将写入场景用多个写入计算组支撑,比如实时写入为一个计算组,离线写入为一个计算组,维表关联为一个计算组。在查询侧也拆分成不同的计算组,实现查询之间的资源隔离,比如在线查询场景分为一个计算组,OLAP 分析分为一个计算组。
总结与未来展望
实时数仓 Hologres 新一代弹性计算组实例在今年阿里巴巴部分核心业务场景落地和验证,并在稳定性、性能等方面经受大促的考验,为业务在资源隔离、弹性、易用性等发挥了重要作用,最终为业务降本提效。
随着业务的发展和技术的演进,Hologres 也将持续优化核心技术竞争力,未来持续在资源隔离、弹性、高可用等方面进行技术完善和产品演进,助力更多业务构建企业级一站式实时数仓。
版权声明: 本文为 InfoQ 作者【阿里云大数据AI技术】的原创文章。
原文链接:【http://xie.infoq.cn/article/29d11d39761556a9bca785747】。文章转载请联系作者。
评论