阿里云云原生一体化数仓 — 分析服务一体化新能力解读

分析服务一体化一直都是阿里云离线实时一体化数仓的重要能力创新

分析服务一体化需求分析

业务在线化、运营精细化驱动数据实时化

随着互联网的信息,业务对于在线化、运营精细化的需求日益强烈,领导驾驶舱、实时大屏等,起到了越来越重要的作用。对于ToB业务,需要支持数据决策,将数据分析的能力赋予业务,同时要提供实时的精细化运营的能力;对于ToC的业务,核心是需要提高在线转化的效率,那么就产生了实时数据中台,实时用户画像,个性化推荐和实时风控的需求。

批流多路、混合负载的实时数仓场景

这是一个常见的业务需求架构。日志系统的数据和交易系统的数据实时地写入数仓。对于写入的数据,会经过两条链路,一条链路会生成明细数据,由前端BI系统在线Ad-hoc的查询。同时也可以持续的被Dashboad实时的展示出来。同时这些明细数据也会进行实时聚合,形成聚合数据,比如页面流量明细,用户点击明细会被聚合成5分钟的商品浏览记录,7天的浏览记录,30天的流转记录等,这些数据对推荐系统提供在线服务,同时这个过程中还会与维表数据关联,例如用户的特征,商品特征等,关联后进行聚合以服务于在线系统。

传统Lambda架构“纷繁芜杂”,数仓建设之痛

为了满足业务这样的需求,一般会使用Lambda架构搭建数仓,客户实时的写入例如Clickhouse或者Druid这样的OLAP系统,同时对于在线服务,使用Hbase、Redis这样的系统支撑,最后,对于离线服务将其归档到Hive和MaxCompute这类离线数仓中,有时业务需要离在线一体化的分析,会用到Presto来加速查询这些离线数据和在线数据,然后作为统一出口,再提供给报表和Dashboard去使用。上文提到过可能还会有一些实时聚合的需求,以及维表的需求,这些维表往往会存在HBase里面,同时跟交易数据实时聚合后,变成我们提到的如5日的sku的浏览量或者是七日页面流量数据等,再写回HBase里面或者Redis里面,再实时的面对如API的服务,或者手机App这种服务。那自然而然我们会发现在整条链路里面会有很多线,自然会形成一些问题,比如架构复杂,数据同步难,资源消耗大,数据孤岛等等一系列的问题。不难发现,在这种架构中,数据多次被搬迁,导致加工链路长,数据不一致,且随着组件增加,开发难度,架构复杂性,运维难度随之而增加。

每种技术仅解决一种问题

在这个架构下,我们一起来看看每种技术分别解决了什么问题。我们大概可以将这些技术分为三类,这是我们可以想一下整个场景的业务要求,例如适合聚合计算,高吞吐,高可用等。

第一类就是事务数据库,一般事务数据库是按照行存储的,对于交易型的数据有很好的更新能力,但是对于千万级及以上的统计型的查询,消耗时非常大的,所以一般我们也不用事务型数据库做分析。

第二类是OLAP系统,这一类技术会对分析的场景做很多的优化,例如列存的技术,分布式的技术,索引的技术等等,这类的技术查询都很快,但是往往在更新上稍显不足。

第三类在大数据分析场景中也很常见,我们把它们定义为serving的系统,需要提供在线服务,需要有高吞吐和超快的查询相应,但是牺牲了灵活性,例如文档数据库,或者KV查询的数据库,对于Key/Value的查询和更新的效率都非常高。

现有的架构,就是根据业务的特征,将不同的业务拆分到不同的系统存储,数据在各个系统中交换,每一次的数据交换就带来了数据搬迁的成本,数据不一致的可能性和数据开发的复杂性。所以大家自然而然的在很多领域做创新,第一类就是在TP和AP领域做创新,在混合负载的场景下,使用一种技术解决TP和AP的负载,一个系统既支持事务又支持分析,这个状态非常的理想,我们也希望这个系统能够真正的落地,但是我们看来现在这个系统还有些过于理想。因为要支持事务,那么会带来更多的锁的开销,那么在整个并发查询和更新上会有更高的代价,和更多的负载。其实从左侧也可以有一些创新,我们发现左侧最明显的是不支持事务。如果不需要那么多事务,那么不需要这么锁的,那么更有可能支持更高的查询性能、提供更强的写入和更新能力,可能左侧的技术呢,更加能覆盖我们以上提到的分析和服务一体化的场景。

解决问题的方案:分析、服务一体化

Hologres就是符合左侧所说的分析和服务一体化的这么一个产品。一套系统支持多个场景,OLAP的分析可以、点查可以、在线服务也可以,同时支持离线的数据导入和实时的数据更新。真正意义上做到分析服务一体化。

分析服务一体化产品新能力解读

分析服务一体化产品能力需求

其实产品的能力也是和需求相关的,在OLAP分析场景,我们提供了高性能的实时写入与更新能力,写入即可查,使用了列存,压缩,索引等技术,以支撑高性能的查询分析。同时还支持了基于主键的全量更新和局部更新场景,这种能力在实时场景下尤为重要,实时场景下数据通常来在于OLTP的交易系统,事务型数据库中的数据通常都是有主键的,同时主键的设置也能有效的避免脏数据的重复写入,所以现在主键更新能力在实时场景下也越发重要。同时在线上服务场景,我们支持了行存,能够提供上万乃至千万级别的QPS的Key/Value点查能力,能够对于行存的数据支持多副本的高可用能力,保证服务的高可用。由于服务场景是非常敏感的,需要更强的资源隔离保证服务的稳定性,所以我们现在提供了读写分离的架构,避免了高吞吐写入对于读的影响。最后,在数据湖分析的场景中,我们可以对于MaxCompute的数据进行离线加速,无需数据搬迁即可分析MaxCompute中的数据,并且我们能够支持每秒百万行数据的极速同步,减少离线重刷等场景的数据延迟。

Hologres 技术特点

为什么Hologres能做到这些呢,其实没有那么多神秘的地方,还是得益于IT技术的发展,现在网络带宽越来越大,现在存储计算分离的架构,使用了阿里云自研的分布式文件系统盘古,这样就能将整个系统做的更轻,做到多副本和高可用。在发生意外的时候,可以快速的从盘古上将数据加载回来,快速恢复服务。下一步是对于存储的,对于数据更新的场景呢,过去很多的系统都是根据扫描场景设计的,所以对于快速更新不太适合,Hologres底层存储使用了SSD的存储介质,这样的介质随机读写能力更强,这样就让架构设计的时候就可以抛开传统的针对扫描场景的系统设计,有行存有列存,来应对不同的场景。第三个是CPU的多核化,随着现在CPU的核心越来越多,那么提升CPU的利用率,发挥并行计算的能力,就可以更有效的提升性能,Hologres本身使用C++进行开发,使用了全异步的执行引擎,最大程度的利用了多核的性能。

从行存、列存到行列共存

此前的版本中,我们支持行存,数据按行存储,行存更加适合Key/Value点查的场景,用于支撑高QPS的查询场景。同时也支持了列存,列存是将数据按列存储,更加适合OLAP场景。但是现实场景会更加复杂,一张表生成后很难绝对的只支持一种场景,因此我们推出了行列共存表,一张表在后端同时存储一张行存表也存储一张列存表,Hologres内部保证读写一致性,优化器会根据查询的特征,对于适合的场景使用最适合的存储进行回答查询。这样同时兼顾了行存和列存的优势场景。

资源隔离,高可用,统一存储

为了提高可用性,和提供更强的资源隔离的能力,我们现在不仅支持同一实例内的线程级别的资源组隔离,还能支持共享存储的高可用模式,多个实例共享一份存储。对于读写的主实例,提供高性能写入能力,进行加工负载。同时配置多个只读从实例,用于满足不同负载的需求,例如一个只读从实例提供在线的OLAP分析,一个只读从实例支持点查的分析。互相之间互不影响,实现高可用和资源隔离。

分析服务一体产品新能力解读

这里算是一个预告,Hologres在即将发布的1.3版本中,进一步的提供了更多的能力,在数据湖离线加速的场景,支持了读取OSS上的Hudi和Delta格式的数据,同时支持了MaxCompute的Transactional Table的离线加速。数据写入的场景上,进一步扩展了Fixed Plan支持的场景,支持了更新部分列,写入分区父表等场景。在数据查询上我们支持了实时物化视图,用来加速实时聚合查询场景。同时支持了JSONB的列存优化,通过采用列式存储,提高存储效率和查询效率。同时针对很多用户日常使用的分区表场景,支持了自动创建和删除分区子表,便于用户更加便捷的管理分区表。同时还有很多针对查询的优化。最后在生态兼容上,我们支持了Oracle扩展包,兼容了数百个兼容函数。同时PostGIS支持下推到Hologres原生的引擎,提升了查询效率。当然作为一个大数据产品,通常要用于对接BI系统,我们在最新版本对于Tableau的官方测试集的通过率达高了99%以上。

冷热分层,成本优化

针对几个较为重要的功能,在此也做一些展开。在1.3中,为了进一步帮助客户优化成本,提供了冷热分层存储。在业务中,对于分区表中的数据,通常业务会高频访问近期的分区的数据,这样的需要高频访问的数据,使用SSD的存储介质中,以满足高性能访问的需求。随着时间的推移,热数据会渐渐的变为访问频次较低的冷数据,此时系统可以根据用户设置的策略,将系统转到HDD的存储介质中,以优化存储成本。

Fixed Plan场景拓展,提升写入性能

Fixed Plan是Hologres独有的执行引擎优化方式,传统的SQL执行要经过优化器、协调器、查询引擎、存储引擎等多个组件,例如这样一条SQL,如果没有走FixedPlan,那么其执行计划如下所示,整个过程需要经过优化器、协调器、查询引擎、存储引擎等多个组件。而Fixed Plan选择了短路径(Short-Cut)优化执行SQL,绕过了优化器、协调器、部分查询引擎的开销。通过Fixed FrontEnd直接对接Fixed Query Engine,实现SQL执行效率的成倍提升,是支持高吞吐实时写入,高并发查询的关键优化方法。所以如果使用了Fixed Plan,对应的执行计划就如图所示。以下是一个对比,对于数据更新场景,可以看出,无论是行存、列存、行列共存,使用了Fixed Plan之后,RPS有20倍以上的提升。下图橙色为使用了Fixed Plan之后的RPS,黄色为不使用Fixed Plan的RPS。

支持实时物化视图,优化聚合查询场景

在新版本中支持了实时物化视图。物化视图是一个通用的概念,一般的数据库需要定期刷新物化视图,存在一定的数据滞后性。Hologres的物化视图无需手动刷新,数据在写入时即预计算,进入物化视图。例如一个简单的业务场景,某客户有100多家门店,他想实时查看各个门店营业收入情况,以便实时调整经营策略。客户的明细表如下所示,存储了订单的明细数据,其中有订单号,客户号,门店ID,订单日期,订单金额。创建物化视图后,在数据写入明细表后,Hologres会实时的进行物化。当客户写SQL的时候,系统可以自动改写SQL,使SQL支持查询物化视图的数据,以提升查询性能。

JSON列式存储,提升半结构化数据查询和存储效率

最后一个大功能是JSON列式存储,是指使用列存存储JSON的数据,由于列存的压缩效率很高,可以那么有效提升数据的存储效率,节省存储空间。例如一个常见的场景,对于某视频网站厂商,希望查询男性用户的用户数量和平均年龄。他的数据按照如下的JSON类型存储。此时对应的SQL如图所示。此时需要查询结果时,需要扫描所有的JSON数据,把所有数据都读取出来,再汇总,才能得到最终结果。如果开启了列式存储,那么存储模式会如图所示,Hologres会将其按照列的存储模式将其存储到盘古上,此时如果需要查询男性用户的用户数量和平均年龄,今需要扫描2列数据,可以明显的提升查询效率。

典型案例

分析服务一体化架构升级案例

分享一个实际的优化案例:一家头部物流公司的实时数仓架构的升级历程。物流公司对实时的决策和实时的分析有很强的需求,也会有定期营销大促的流量高峰,系统负载的波动比较大,同时还需要直接支持很多2c场景,对服务的响应能力要求很高。在架构升级之前,该企业多采用一些传统的关系型数据库架构,来支撑在线业务的实时查询、实时监控,包括刷新每个包裹的物流状态等场景。

但这样的架构存在实时性不足的问题。订单的数据更新效率低,更新链路也很长,无法满足实时监控的需求,也会降低物流的配送效率。同时多个指标之间往往需要很复杂的关联计算,查询效率比较慢,无法满足业务实时决策的需求。

架构的另一个痛点就是稳定性不足,多个业务高并发查询的时候,整体的延迟会增加,影响业务的稳定性。双11期间需要承担的流量会数倍于日常的流量,原有的系统也无法承受突然的流量增加,会导致需要很多额外的人工运维。

因此我们为用户做了一次实时数仓架构的升级改造,通过Flink+Hologres替代原有的数仓架构。对于高频访问的服务性数据,使用Flink从DataHub中消费数据,把计算结果直接存储在Hologres中;对于一些复杂查询的分析型数据,通过DataWorks读取上游的RDS binlog,在Hologres中进行ODS\DWD\DWS等数据的分层建设,从而将最终的汇总数据对接上层应用,实现了高并发快速查询。

该方案采用了分析服务一体化的混合模式,既发挥了Flink流计算能力进行业务的预加工,也充分利用了Hologres强大的复杂多维查询能力,成功替代了传统的OLAP系统、RDS系统等数据库软件,简化了数据的架构。

升级之后,系统的稳定性得到极大的改善,无论是实时的数据写入还是数据的读取,都体现了极强的稳定性。整个双11期间真正做到了零故障率,满足了实时的业务需求,支撑了比如实时的揽件、库内的操作中转调拨等实时大屏,为运营提供了强有力的实时数据支撑。

整体的实效性也得到了显著提升,为用户带来了良好的物流体验,提升了公司的服务水平。

此外,针对双11的流量高峰期比日常流量高出上千倍,通过Hologres云原生的弹性能力,实现了资源的动态扩缩容,满足了对资源的不同需求,也降低了运维的成本。

分享人:阿里云智能 产品专家 丁烨

原文链接

本文为阿里云原创内容,未经允许不得转载

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

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

相关文章

一位 sealer maintainer 的心路历程

引言 在 2021 年四月左右,我有幸在 sealer 启动初期了解到其相关工作,并且不久后就作为初始的几位开发同学之一,加入到了 sealer 的开发工作中。 本文,我将回顾个人参与 sealer 开源项目的机缘巧合,参与过程中的挑战…

龙蜥社区开源 coolbpf,BPF 程序开发效率提升百倍

引言 BPF 是一个新的动态跟踪技术,目前这项技术正在深刻的影响着我们的生产和生活。BPF 在四大应用场景发挥着巨大作用: 系统故障诊断:它可以动态插桩透视内核。网络性能优化:它可以对接收和发送的网络包做修改和转发。系统安全…

线上故障突突突?如何紧急诊断、排查与恢复

概述 稳定性大于一切,因此我们需要有更有效的方式避免线上故障。在发生故障不可避免的假设下,我们需要能够快速修复,减少线上影响。基于以上这些想法,我们提出了 1-5-10 的快恢目标,所谓 1-5-10 的目标就是是要我们对…

巧用 API 网关构建大型应用体系架构

近期阿里云重磅发布了BizWorks一体化的云原生应用的开发和运营平台,内置阿里巴巴业务中台构建的最佳技术实践。BizWorks提供的产品能力,普遍适用于企业云原生应用高效开发以及企业业务能力沉淀和复用的场景。BizWorks提供业务架构师一整套的可视化业务建…

可观测|时序数据降采样在 Prometheus 实践复盘

基于 Prometheus 的监控实践中,尤其是在规模较大时,时序数据的存储与查询是其中非常关键,而且问题点较多的一环。如何应对大数据量下的长周期查询,原生的 Prometheus 体系并未能给出一个令人满意的答案。对此,ARMS Pro…

倒计时1天!中国移动算力网络创新成果即将发布!

数字时代,随着计算机技术的普及,电脑及相关电子产品日新月异,给人们日常生活带来了翻天覆地的变化。多样化的电脑功能提高了各项事务协同管理的便捷性,电脑游戏也极大地丰富了人们的娱乐生活。未来电脑又会使人们的办公模式、娱乐…

托管式服务网络:云原生时代的应用体系架构进化

背景 回顾下应用服务架构体系的演进。从服务调用方与提供方的处理方式来看, 可以分为 3 个阶段。 第一个阶段是集中式负载均衡, 也就是说服务调用方是通过一个外部的负载均衡路由到对应的服务提供方。其优势显而易见, 对应用本身无侵入, 可以支持多语言多框架来开发实现应用本…

科普达人丨一文看懂阿里云的秘密武器“神龙架构”

在一台电脑中,我们把CPU和硬盘比作一家公司的加工厂和仓库,那么两个部门的任务就是处理数据和存储数据。 但是因为土地价格和劳动力价格差异较大等因素,需要将两个部门分别建在不同的地方,这也就是在云上的情况,也就是…

卓越工程实践之—前端高质量单测

高单测等于高质量? 笔者负责的npm包是 ICBU信天翁低代码平台渲染引擎,160应用 600页面基于该引擎开发,内网日npm下载 1K。经过不懈努力(CV),终于把单测提到了95%。 然而,虽然在覆盖率上获得了…

中国移动云电脑重磅发布,又一场革命到来!

12 月 11 日,2022 中国移动全球合作伙伴大会产业链创新暨算力网络分论坛顺利举办。会上,中国移动基于算力网络战略下的扛鼎力作——中国移动云电脑重磅发布!中国移动云能力中心总经理方力表示:“它将会成为中国移动算力网络对外输…

PolarDB-X 如何做分布式数据库热点分析

背景 PolarDB-X是一款计算存储分离的分布式数据库,分布式的处理能力是PolarDB-X的核心特性之一,单个数据库实例的多个计算节点会均摊全部的SQL流量,这样就可以通过节点的扩缩容来快速满足不同的流量峰值场景。 在PolarDB-X 1.0时代&#xff…

说说关系型数据库与Serverless

它是站在海岸遥望海中已经看得见桅杆尖头了的一只航船,它是立于高山之巅远看东方已见光芒四射喷薄欲出的一轮朝日,它是躁动于母腹中的快要成熟了的一个婴儿。-- 星星之火,可以燎原一、关于Serverless 看到如今Serverless在云计算行业喷薄欲出…

历时4年打磨,可信执行环境操作系统Occlum 1.0发布

12月10日,由中国计算机协会主办的2022中国计算机大会(CNCC2022)在线上举行,由蚂蚁集团主导开源的可信执行环境(TEE)操作系统Occlum 1.0在“可信隐私计算研讨会”上发布。Occlum是机密计算领域核心开源软件之…

全链路压测:影子库与影子表之争

业界盛传的全链路压测是什么 全链路压测诞生于阿里巴巴双 11 备战过程,如果说双 11 大促是阿里业务的“期末考试”,全链路压测就是大考前的“模拟考试”,诞生后被誉为双 11 稳定性保障的“核武器”。全链路压测通过在生产环境对业务大流量场…

当我们谈论不可变基础设施时,我们在谈论什么

午夜时分,电话响起,线上告急。你从千呼万钉中醒来,睡眼朦胧,手忙脚乱。 恍惚之间,终于梳理清楚发生了什么,一个陈年老应用突然停机,消息堆积,系统停摆。而你就像一个下水道小工疏通…

主流电脑形态大变革,云电脑才是未来?

数字技术与实体经济加速融合的时代,传统 PC 形态正面临着运算效率、成本、安全等多方面的挑战。首先是信息处理需求的爆发式增长,推动着人们对大算力应用的需求升级,终端的计算、储存能力更多地向云端转移。其次,复杂的国际形势下…

10亿+/秒!看阿里如何搞定实时数仓高吞吐实时写入与更新

导读:Hologres(原交互式分析)是阿里云自研的一站式实时数仓,这个云原生系统融合了实时服务和分析大数据的场景,全面兼容PostgreSQL协议并与大数据生态无缝打通,能用同一套数据架构同时支持实时写入实时查询…

阿里云云原生一体化数仓 — 数据建模新能力解读

DataWorks智能数据建模-产品建设背景 2009年,DataWorks就已经在阿里巴巴集团立项,支撑阿里巴巴数据中台建设,一路见证阿里巴巴大数据建设之路。2020年之前,DataWorks支持的是开发视角、自底向上、小步快跑,快速满足业…

如何快速理解复杂业务,系统思考问题?

正视复杂性 我们必须承认这个世界原本就非常复杂,就像以我们现在的科技仍然不能攻克新冠病毒、不能精确预测天气、不能有效控制经济形势异常波动一样,任何试图浮于表面、疏于投入就想了解并解决一个复杂问题的傲慢做法,最终都只能接受无情的…

云原生消息队列 Pulsar 浅析

一、前言 Pulsar是一个多租户,高性能的服务间消息解决方案。最初由Yahoo开发,现在由Apache Software Foundation负责。Pulsar是消息队列领域的一匹黑马,其最大优点在于它提供了比Apache Kafka更简单明了、更健壮的一系列操作功能&#xff0c…