实时数仓Hologres新一代弹性计算组实例技术揭秘

news2024/11/24 3:43:46

作者:王奇(花名慧青) 阿里云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弹性计算组实例的核心组件的设计都具有灵活扩展扩展、资源隔离的特性。核心组件主要有分为三个层面:以一个实例为例

  1. 计算组:计算组是独立弹性可扩展的计算资源,负责执行用户的查询请求。用户可以根据业务需求,创建不同的计算组,通过不同的计算组来支撑业务需求,比如写入、查询等。
  2. 数据存储:数据存储在Alibaba Pangu存储服务上,不同的计算组共享一份pangu存储,有效节省存储资源。
  3. 云服务组件:云服务组件包括网关、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也将持续优化核心技术竞争力,未来持续在资源隔离、弹性、高可用等方面进行技术完善和产品演进,助力更多业务构建企业级一站式实时数仓。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/360665.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Facebook广告投放的正确姿势:玩转目标定位

如果你正在投放 Facebook广告,那么你一定有过这样的经历:明明设置了目标受众,但是广告却没有带来转化。在这方面,你可能忽略了一个很重要的因素——目标定位。想要打造高质量、高曝光率的 Facebook广告,如何才能成功实…

「TCG 规范解读」第7章 TPM工作组 TPM 总结

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

90%的人都理解错了HTTP中GET与POST的区别

Get和Post是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是Get把参数包含在URL中,Post通过request body传递参数。 你可能自己写过无数个Get和Post请求,或者已经看过很多权威网站总结…

数据分析-2.必会的六大实用模型

对于刚刚接触数据分析的人来说,经常会有这样的困惑和疑问:数据分析究竟难不难?难的话难在哪?为什么有时候作分析不知道从何下手,只能眉毛胡子一把抓? 其实就连我这种已经在数据分析行业浸淫十几年的老油条…

JavaSE学习day9 集合(基础班结束)

1.ArrayList 集合和数组的优势对比: 长度可变 添加数据的时候不需要考虑索引,默认将数据添加到末尾 不能存基本数据类型。只能通过包装。 1.1ArrayList类概述 什么是集合 提供一种存储空间可变的存储模型,存储的数据容量可以发生改变 Ar…

shell脚本中那些关于时间的处理方案,你都掌握了吗?

文章目录前言一. linux中关于时间的命令有哪些?1.1 命令一: hwclock命令二:date的那些事二. 时间命令在脚本中的应用2.1 用date命令实现统计执行时间的脚本2.2 time命令3. sleep命令总结前言 大家好,我是互联网老辛,专注云原生领…

[Css]Grid属性简单陈列(适合开发时有基础的快速过一眼)

[css进阶]Grid属性简介 文章目录[css进阶]Grid属性简介典型需求网格容器的属性displaygrid-template-columns和grid-template-rowsgrid-template-areasgrid-templategrid-column-gap grid-row-gapgrid-gapjustify-itemsalign-itemsjustify-contentalign-contentgrid-auto-colum…

【面试题】ES6 如何将 Set 转化为数组

大厂面试题分享 面试题库后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库Set 是 ES6 中新增的一种集合类型,类似于数组,但其成员的值是唯一的,即不会重复。关于Set,可以阅…

Leaf说明

什么是Leafleaf是叶子的意思我们使用的Leaf是美团公司开源的一个分布式序列号(id)生成系统我们可以在Github网站上下载项目直接使用为什么需要Leaf上面的图片中是一个实际开发中常见的读写分离的数据库部署格式专门进行数据更新(写)的有两个数据库节点它们同时新增数据可能产生…

ThinkPHP5篮球培训报名系统

有需要请私信或看评论链接哦 可远程调试 ThinkPHP5篮球培训报名系统一 介绍 此篮球培训报名系统基于ThinkPHP5框架开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。用户可注册登录,充值,报名,反馈信息等&…

手摸手快速入门 正则表达式 (Vue源码中的使用)

vue2源码 在 vue2 源码的 src\compiler\parser\html-parser.js 文件中 里面有大量的正则表达式,如下图 可以看到非常的长,不是我说,就前几行,如果没有相关的 正则表达式 的工具,我可能就被劝退了😭 这里…

反沙箱CobaltStrike木马加载器分析

前言 近日,笔者参加了浙江护网,在攻击队停止攻击的那一天凌晨,Windows服务器被攻破大量失分,早晨溯源时拿到了这一份名为chrome.exe的木马样本。 木马HASH SHA256:7fbe93d7c29b4ea4ce918f3d16a74d2930120f44d00862bdc0a1f82899…

ubuntu server系统树莓派安装mysql8.0开启远程访问

文章目录前言博客一、安装mysql8.0二、创建一个远程访问的新用户三、在MySQL配置文件中启用远程访问。四、navicat15连接mysql8.0返回10061chatgpt回复前言 百度了半天没解决,问了下chatgpt成功解决了…… 博客 一、安装mysql8.0 确认MySQL 8.0服务器已安装并正在…

【ESP32-S3】Pycharm 使用 microPython 教程(避坑)

一、下载Pycharm等操作 1.百度云下载链接 链接:https://pan.baidu.com/s/1tkbMzS5B_v-Cn4WQlTqS3Q?pwd0108 提取码:0108 2.安装 按照压缩包中的教程来,你懂的。 二、配置microPython环境 1.安装 microPython 插件 1.1 File > Sett…

【云原生】k8s之Yaml文件详解

一、K8S支持的文件格式 kubernetes支持YAML和JSON文件格式管理资源对象。 JSON格式:主要用于api接口之间消息的传递YAML格式:用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读 1、yaml和json的主…

企业级信息系统开发学习笔记1.5 初探Spring AOP

文章目录零、本讲学习目标一、Spring AOP(一)AOP基本含义(二)AOP基本作用(三)AOP与OOP对比(四)AOP使用方式(五)AOP基本概念二、提出游吟诗人唱赞歌任务&#…

手把手教你做插件(2)模块大串联

0,前言 这篇文章笔记比较简略,大部分的操作都是和上一篇文章重复了,建议先看上一节文章,直达电梯:UE4 手把手教你做插件(1) 从代码引用插件_asiwxy的博客-CSDN博客UE4 手把手教你创建插件https:…

Windows10神州网信政府版麦克风、摄像头的使用

Windows10神州网信政府版默认麦克风摄像头是禁用状态,此禁用状态符合版本规定。 在录课和直播过程中,如果需要使用麦克风和摄像头的功能,可以这样更改: 1、鼠标右键点击屏幕左下角的开始菜单图标,选择windows中的“运…

[6/101] 101次软件测试面试之经典面试题剖析

01、自我介绍答:大家好,我是一名软件测试工程师,但我更喜欢称自己为“软件bug捕手”。我相信,软件测试工程师的使命就是让软件更加健壮、更加可靠、更加美好。我们就像是一群“特警”,在黑暗的代码中寻找漏洞和缺陷&am…

spring boot——自定义依赖实现自动配置

需求 要实现的功能是:实现一个可以支持miniooss两种方式,上传下载文件的自定义依赖。其中还包括一些创建桶、删除桶、删除文件等功能,但是最主要的是实现自动配置。 如果对spring理解很深的话,自动配置这些东西很容易理解&#…