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