作者:王奇(花名慧青)阿里云 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 的形式非常灵便的按需定制每个计算组的计算资源大小。
-- 示例:创立一个 128Core 的 Warehouse
CALL hg_create_warehouse ('warehouse_1', 128);
目前 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 也将继续优化核心技术竞争力,将来继续在资源隔离、弹性、高可用等方面进行技术欠缺和产品演进,助力更多业务构建企业级一站式实时数仓。