【实时数仓架构】方法论

news2024/11/17 0:53:49

笔者不是专业的实时数仓架构,这是笔者从其他人经验和网上资料整理而来,仅供参考。写此文章意义,加深对实时数仓理解。

一、实时数仓架构技术演进

1.1 四种架构演进

1)离线大数据架构
  一种批处理离线数据分析架构,通过采用Hadoop技术栈,采用任务调度工具+小时/分钟级别调度任务方式,达到小时/分钟级别的实时数据分析。
2)Lambda架构
  一种以批处理为主的离线数据分析架构,它将数据处理分为实时和离线两部分,其中离线部分通过批量计算来处理数据,实时部分则通过增量追加方式将数据合并到批处理结果中。
![![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/9a4409f9524d4c3996d7b25532a0b7f5.png](https://img-blog.csdnimg.cn/direct/f8d501de176d4c9e937b80a70822ac78.png

优势:满足实时处理低延迟需要,数据修正计算资源消耗少。
劣势:同样的需求需要开发两套一样的代码。后期维护困难,数据一致性得不到保证。

3)Kappa架构
  一种以流处理为主的实时数据分析框架,它将实时数据直接存储在Kafka等消息队列中,并通过流处理器将数据转换为目标数据模型。
在这里插入图片描述

优势:架构简单,避免了维护两套系统还需要保持结果一致的问题,也很好解决了数据订正问题。
劣势:在 Kappa 架构中,需求修改或历史数据重新处理都通过上游重放完成。Kappa 架构最大的问题是流式重新处理历史的吞吐能力会低于批处理。消息中间件缓存的数据量和回溯数据有性能瓶颈。

4)数据湖架构
  一种存算分离为主的统一存储(数据湖格式满足ACID)、多样化计算引擎的数据分析架构,它将实时数据的明细、中间、结果写入同一存储,供多样化计算引擎实时查询和访问。
在这里插入图片描述

优势:hudi、 iceberg 本身提供了ACID属性,这些特性可以解决数据回溯成本高,OLAP引擎结合困难的问题。
劣势:采用Copy-on-Wite (COW)会造成写放大,影响写入的性能;采用Merge-on-Read(MOR)会造成读放大,影响实时数据的查询分析性能:而湖格式存储,通常采用COW或者MOR,不可两者兼得,会造成性能不足以满足实施业务需求,通常存在分钟级别或者是小时级别的延迟。

1.2 架构能力对比

技术组件和实效性对比

离线大数据Lambda架构Kappa架构数据湖架构
典型技术组合离线:Hadoop+Spark;
调度工具:Azkaban;
OLAP引擎:Impala/presto;
数据服务:HBase
离线:Hadoop+Hive/Spark 流处理;
Flink OLAP引擎:ClickHouse;
数据服务:HBase
流处理:Flink;
OLAP引擎:Doris;
数据服务:HBase
湖格式:Hudi/iceberg/Delta on HDFS;
流处理:Flink;
OLAP引擎:Impala/Pretsto;
数据服务:HBase
数据源结构化/半结构化结构化/半结构化结构化/半结构化结构化/半结构化、非结构化
实时处理技术栈典型代表:Spark Streaming、Flink典型代表:Flink典型代表:Flink
实时性小时/分秒/毫秒秒/毫秒小时/分

实时数据分析对比

离线大数据Lambda架构Kappa架构数据湖架构
实时数据存储HDFS,且OLAP&HBase基于HDFS离线数据:HDFS;
实时数据:CK+HDFS(HBase底层存储)
OLAP引擎:DorisHDFS
实时数据更新能力HDFS: OverwriteHDFS: Overwrite;
CK:更新能力不完善;
HBase: Upsert
Doris: UpsertHudi/Iceberg/Delta : Upsert
实时查询DWD、DWS中间层结果支持查询中间结果一般不写入OLAP引擎;
写入HDFS,则支持查询
中间结果存储Kafka,不支持查询支持查询
实时性小时/分秒/毫秒秒/毫秒小时/分
OLAP引擎Impala/presto查询性能弱,适合联邦查询CK适合单表聚合,多表Join能力差Doris单表和多表Join查询能力较好湖格式有相关索引能力,查询性能优Impala/Presto on HDFS
数据服务使用HBase,支持高并发,离线实时数据都可查使用HBase,支持高并发,只能查实时数据使用HBase,支持高并发,只能查实时数据使用HBase,支持高并发,离线实时数据都可查
实时AI分析基于Spark ML/TF/PyTorch离线训练和推理基于Flink ML/TF/PyTorch实时训练和推理基于Flink MLTF/PyTorch实时训练和推理基于Flink MLTF/PyTorch实时训练和推理

管理对比

离线大数据Lambda架构Kappa架构数据湖架构
运维成本维护一套代码,难度较小维护两套代码,难度较小维护一套代码,难度较小维护一套代码,难度较小
数据孤岛离线实时数据在同一个存储介质离线实时数据在不同存储介质离线实时数据在同一个存储介质离线实时数据在同一个存储介质
数据一致性离线、实时数据和指标不一致概率小离线、实时数据和指标不一致概率大离线、实时数据和指标不一致概率小,少量修正离线、实时数据和指标不一致概率小,少量修正

1.3 实时数仓

1.3.1 实时数仓定义

  遵循数据仓库的建设规范,一种支持事件发生后立即或不久对事件数据进行处理和分析的解决方案,数据实时采集、写入、加工、分析、应用都是连续,提供数据产生到应用的端到端秒级响应能力,以最小的延迟产出数据见解驱动业务行动。

1.3.2 实时数仓特点

1、毫米级延迟
低延迟主要体现三方面:
  1)整体链路:端到端毫秒延迟;
  2)数仓层级:层级毫秒级延迟;
  3)数仓数据:实时写入/更新/可见/可查,数据毫米级延迟。
2、高吞吐写和高QPS度
3、智能化
  实时数仓能够做到智能自适应,根据业务数据波峰波谷,自动调用计算资源;统计数据访问频次,自动完成冷热数据切换,兼顾性能、成本、自运维。
4、高可用架构
  实时数仓应该具备高可用,通过架构部署或者产品能力实现从集群、负载格力、服务主备等手段,避免单一故障,有应急系统可切换使用,服务不断。
5、高水平数据管理
  实时数仓需要建立完善的数据资产管理,包括但不限于源数据管理、数据安全、数据脱敏、数据备份、数据血缘、数据目录等,实现数据可查、能用、可用、好用。
6、支持混合负载
  实时数仓期望能多种类型的混合负载一体化支持,不同负载能够做到相互隔离不干扰,即一个引擎支持多种场景,简化架构、保证数据一致性。

1.4 实时数仓典型业务场景

  通常来讲,企业构建实时数仓,有以下几大类业务场景和技术需求。

1.4.1 六类场景

1)实时描述类:
  场景描述:通过数据实时反馈业务正在发生什么,协助管理层第一时间做出业务决策。
  教育行业场景-数据看板:采集企业的B段业务数据,包含交易、教学、人员等数据,按照不同的条件和学习层级等,形成营收、教学等实时报表。
  核心技术需求:实时预计算分析、离线实时数据关联分析
2)实时运营类
  场景描述:通过数据实时诊断业务为什么发生,找到差异性和根因,协助执行层实时决策和实时调控相关策略。
  电商行业场景-精准营销:产出实时用户标签数据,然后做人群圈选、用户画像分析、对不同的人群、不同的活动策略做AB测试,实时评估活动效果和差异性,实时调整人群包和营销活动。
  核心技术需求:OLAP分析、多维分析、即时分析、标签护具高效分析。
3)实时监控类
  场景描述:通过数据实时识别业务正在发生的风险,及时预警供相关人实时干预。
  行业场景-链路监控:直播行业的网络异常监控,及时处理较少投诉率。物流行业实时整合多源数据,结合出入库、仓库作业等实时数据协助小二日常物流订单分析、订单派送。
  核心技术需求:高QPS的在线数据服务、实时规则引擎、实时复杂时间处理
4)实时预测类
  场景描述:通过数据实时预测业务未来可能发生的风险或者行为,提前干预降低风险成本,促进业务规模化增长。
  行业场景-实时推荐:在搜索、推荐、广告行业,实时采集用户行为数据,计算实时特征,预测用户点击率/转化率,然后做个性化推荐,提升业务效果。
  核心技术需求:实时特征/样本计算、实时AI、高QPS的在线数据服务、向量召回。
5)实时自动决策类
  场景描述:通过对市场的实时事件的数据分析,快速响应市场变化,自动完成相关交易和价格调整。
  金融行业场景-金融量化投资:基于提前建立的交易模型实现交易执行的自动化,通过对市场数据的实时监控和分析,快速响应市场变化,减少人为干扰和误操作,提高交易效率和准确率。
  核心技术需求:实时特征/样本计算、实时AI、高QPS的在线数据服务
6)实时用户增长类
  场景描述:通过对用户实时行为数据,在用户拉新、促活、流失、召回环节实时决策,实现日活、月活用户量的增长。
  游戏行业场景-游戏发现:基于用户实时行为数据,通过广告只能投放优化买量,提升用户拉新ROI。通过实时个性化推荐,促活。其他等。
  核心技术需求:实时特征/标签计算、OLAP分析、高QPS在线数据服务、向量召回、高效的留存/漏斗分析函数。

1.4.2 实时看板/大屏

  此类需求在技术上,常需要业务交易数据,设计高层管理人群关注的核心指标,基于实时数据计算毫秒级计算指标值,存储是OLAP引擎中,最终在展示工具设计出数据看板和大屏访问。

1.4.3 实时OLAP分析

  此类需求在技术上,需要查询业务总体情况,发现差异,然后基于数据立方体能力,从多维度、多指标对比分析,找到差异原因,反向指导业务的运作。

1.4.4 实时风险监测

  该场景下,首先实时采集设备、交易数据、结合交易数据,其次通过实时规则+AI算饭的智能识别,将风险、故障灯行为数据和用户,汇总推到相关人群做后续执行动作,完成风险识别、推送、执行的闭环链路。

1.4.5 实时推荐

  实时推荐场景下,首先采集用户行为数据进消息队列,其次基于实时数据计算完成实时特征计算,结合静态(离线)特征一起存储,即用户标签和画像,此时实时推荐的推理服务即可利用实时+离线特征进行物品推荐。更进一步,会结合实时特征+明细行为数据,基于Base离线模型,周期训一个实时模型,然后跟已经上线模型做对比,效果优则上线,此时完成实时推荐AI模型的更新。


二、需求分析

2.1 功能性需求

这些需求通常是可以明确的,可以被度量。主要包含以下几个方面:
1、实时数据采集
  1)离线数据同步
  2)实时数据同步:基于消息中间件的数据实时入仓;基于CDC数据实时入仓。
2、实时数据计算
3、实时数据存储
4、实时数据分析服务
5、实时数据接口
6、数据资产管理

2.2 非功能性需求

1、可用性
   1)服务可用性;2)容灾备份
2、安全性
   1)系统安全:比如账号认证、账号授权、日志审计
  2)数据安全:比如安全认证及标准、存储加密、传输加密、数据脱敏
  3)网络安全:比如底层服务网络安全、网络隔离、白名单
3、高性能
  1)数据延迟性能;2)数据实时采集性能;3)数据实时计算性能;4)实时数据存储性能;5)分析服务性能
4、成本可控
  1)显性成本:比如产品组件的脊梁、产品组件的使用、资源分层使用策略
  2)隐性陈本:产品使用成本、产品运维成本、产品技术升级成本
5、可观测性
  1)系统层面可观测:比如集群指标消耗、数据库监控、资源监控
  2)任务层面可观测

2.3 针对未的需求

  基于是实时业务场景、实时数仓架构理解和未来展望,我们认为实时数仓,数据分析服务需要支持ES倒排索引、离线ETL需求。
  1)ES倒排索引:实时分析服务查询,常涉及多字段匹配然后聚合,或者基于另外一张表去关联明细表然后聚合,包含基于分词的前后模糊、包含于等查询。这种场景下,ES擅长信息检索不擅长聚合查询,常常返回耗时长,无法满足。实时数仓擅长OLAP聚合分析,如果能支持倒排索引,即能擅长信息检索又擅长聚合查询,满足客户需求。已有产品已实现。
  2)离线ETL:实时数仓不可避免处理离线批处理,一方面是修正实时数据结果,另一方面是为了实现离线和实时计算统一引擎,更近一步是为了流任务和批任务统一,维护一套代码,因此我们认为未来实时数仓需要具备离线跑批能力,优化离线跑批性能,规划离线资源池不影响数据分析和线上服务。

三、架构总览

3.1 逻辑架构

架构图如下:
在这里插入图片描述

实时数据采集层
  两种方式:业务数据保存在关系数据库中,可通过CDC的技术采集Binlog到消息引擎中;日志通过各种采集工具采集到消息引擎。
实时数据计算层
  包含以下几种分析方式:统计分析、关联分析、CEP分析、AI分析
实时数据存储层
为了支持数据分析服务,需要满足以下能力:分层存储、实时更新、冷热存储
实时数据分析服务层
  包含以下几种功能:多维分析、KV查询、向量计算
数据资产管理层
  包含这几类:元数据、用户认证、数据脱敏、数据血缘、 数据安全

3.2 架构决策

  实时数仓系统重点是实时数据采集、实时计算、实时数据存储、实时数据分析服务四部分,其中每个部分都会面临相关的架构决策,各部分关键决策如下:
实时数据采集决策
  需要实时采集具有多种数据源插件支持、高效的开发采集同步作业。所以往往需要对数据采集的方式、效率、操作便利性、任务监控等能力进行决策。
实时数据计算决策
  需要对实时计算的一站式开发、计算性能、资源弹性、任务恢复、资源弹性等关键能力进行决策,以下为一个典型的实时数据计算决策分析。
实时数据存储决策
  以需要对实时存储的实时写入/更新能力、延时多久可访问、支持Binlog捕捉要更数据、存储容量等关键能力进行决策。
实时数据服务决策
  需要对支持OLAP分析/KV查询、资源隔离、查询OPS、跟离线数据联邦查询等关键能力进行决策。

四、操作模型

4.1 稳定性

稳定性一般包含:高可用、容灾备份、同城容灾、异地容灾、数据备份和恢复、资源隔离。

4.2 安全性

实时数仓需要从网络安全、系统安全、数据安全(传输、存储、使用)、安全认证四方面综合考虑,全方位保证数据安全可靠的存储和使用。

4.3 高性能

包含两部分:Benchmark(基准测试)、性能优化。

4.4 成本可控

这属于阿里云计费方式,不在这里详细描述。

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

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

相关文章

SFOS1:开发环境搭建

一、简介 最近在学习sailfish os的应用开发,主要内容是QmlPython。所以,在开发之前需要对开发环境(virtualBox官方SDKcmake编译器python)进行搭建。值得注意的是,我的开发环境是ubuntu22.04。如果是windows可能大同小异…

ZooKeeper以及DolphinScheduler的用法

目录 一、ZooKeeper的介绍 数据模型 ​编辑 操作使用 ①登录客户端 ​编辑 ②可以查看下面节点有哪些 ③创建新的节点,并指定数据 ④查看节点内的数据 ⑤、删除节点及数据 特殊点: 运行机制: 二、DolphinScheduler的介绍 架构&#…

回溯法——(1)装载问题(C语言讲解)

目录 一、装载问题 1.问题概括: 2.解决方案(思路): 3.图片讲解(超详细): 4.代码分析: 二、算法改进:引入上界函数 1.问题概念: 2.图片讲解&#xff1a…

Room简单实操

1. Room介绍,直接Copy官网介绍: Room 持久性库在 SQLite 上提供了一个抽象层,以便在充分利用 SQLite 的强大功能的同时,能够流畅地访问数据库。具体来说,Room 具有以下优势: 提供针对 SQL 查询的编译时验…

深入理解分布式事务⑧ ---->MySQL 事务的实现原理 之 MySQL 事务流程(MySQL 事务执行流程 和 恢复流程)详解

目录 MySQL 事务的实现原理 之 MySQL 事务流程(MySQL 事务执行流程 和 恢复流程)详解MySQL 事务流程1、MySQL 事务执行流程1-1:MySQL 事务执行流程如图: 2、MySQL 事务恢复流程2-1:事务恢复流程如下图: MyS…

基于点灯Blinker的ESP8266远程网络遥控LED

本文介绍基于ESP8266模块实现的远程点灯操作,手机侧APP选用的是点灯-Blinker,完整资料及软件见文末链接 一、ESP8266模块简介 ESP8266是智能家居等物联网场景下常用的数传模块,具有强大的功能,通过串口转WIFI的方式可实现远距离…

区块链扩容:水平扩展 vs.垂直扩展

1. 引言 随着Rollups 的兴起,区块链扩容一直集中在模块化(modular)vs. 整体式(monolithic)之争。 如今,模块化与整体式这种一分为二的心理模型,已不适合于当前的扩容场景。本文,将展…

【C语言回顾】字符函数、字符串函数,内存函数

前言1. 字符函数1.1 字符分类函数1.2 字符转换函数1.2.1 tolower(将大写字母转化为小写字母)1.2.2 toupper(将小写字母转化为大写字母) 2. 字符串函数2.1 求字符串长度函数 strlen2.2 字符串输入函数 gets()&fgets()2.2.1 get…

虚拟机网络实现桥接模式

虚拟机网络实现桥接模式 虚拟化软件:VMware 17 Linux:rocky8_9 主机:Win10 文章目录 虚拟机网络实现桥接模式1. 桥接模式介绍2. 查看Win本机的网络信息(以笔记本电脑以WiFi联网为例&#x…

vue快速入门(五十五)插槽基本用法

注释很详细&#xff0c;直接上代码 上一篇 新增内容 当传输内容只有一种时的基础写法 源码 App.vue <template><div id"app"><h1>被淡化的背景内容</h1><my-dialog><!-- 插槽内容:文字以及dom结构都可以传 --><span>你确…

【LLM 论文】背诵增强 LLM:Recitation-Augmented LM

论文&#xff1a;Recitation-Augmented Language Models ⭐⭐⭐ ICLR 2023, Google Research, arXiv:2210.01296 Code&#xff1a;github.com/Edward-Sun/RECITE 文章目录 论文速读 论文速读 论文的整体思路还是挺简单的&#xff0c;就是让 LLM 面对一个 question&#xff0c;…

蓝桥杯-路径之谜

题目描述 小明冒充X星球的骑士&#xff0c;进入了一个奇怪的城堡。城堡里面什么都没有&#xff0c;只有方形石头铺成的地面。 假设城堡的地面时n*n个方格。如下图所示。 按习俗&#xff0c;骑士要从西北角走到东南角。可以横向或者纵向移动&#xff0c;但是不能斜着走&#x…

详解SDRAM基本原理以及FPGA实现读写控制(一)

文章目录 一、SDRAM简介二、SDRAM存取结构以及原理2.1 BANK以及存储单元结构2.2 功能框图2.3 SDRAM速度等级以及容量计算 三、SDRAM操作命令3.1 禁止命令&#xff1a; 4b1xxx3.2 空操作命令&#xff1a;4b01113.3 激活命令&#xff1a;4b00113.4 读命令&#xff1a;4b01013.5 写…

使用docker-compose编排Lnmp(dockerfile) 完成Wordpress

目录 一、 Docker-Compose 1.1Docker-Compose介绍 1.2环境准备 1.2.1准备容器目录及相关文件 1.2.2关闭防火墙关闭防护 1.2.3下载centos:7镜像 1.3Docker-Compose 编排nginx 1.3.1切换工作目录 1.3.2编写 Dockerfile 文件 1.3.3修改nginx.conf配置文件 1.4Docker-Co…

GDPU Java 天码行空10

&#xff08;一&#xff09;实验目的 1、掌握JAVA中文件、IO类及其构造方法&#xff1b; 2、重点掌握文件类型所具有的文件操作方法&#xff1b; 3、重点掌握IO中类所具有的IO操作方法&#xff1b; 4、熟悉递归调用的思想及应用&#xff1b; 5、掌握IO中读写常用方法。 &…

鸿蒙UI复用

鸿蒙UI复用 简介BuilderBuilder的使用方式一Builder的使用方式二Builder的使用方式三 Component使用Component复用UI 简介 在页面开发过程中&#xff0c;会遇到有UI相似的结构&#xff0c;如果每个UI都单独声明一份&#xff0c;会产生大量冗余代码&#xff0c;不利于阅读。遇到…

CSS浮动(如果想知道CSS有关浮动的知识点,那么只看这一篇就足够了!)

前言&#xff1a;在学习CSS排版的时候&#xff0c;浮动是我们必须要知道的知识点&#xff0c;浮动在设计之初是为了实现文字环绕效果的&#xff0c;但是后来被人们发现浮动在CSS排版中有着很好的实用价值&#xff0c;所以浮动便成为了CSS排版的利器之一。 ✨✨✨这里是秋刀鱼不…

论文辅助笔记:Tempo 之 model.py

0 导入库 import math from dataclasses import dataclass, asdictimport torch import torch.nn as nnfrom src.modules.transformer import Block from src.modules.prompt import Prompt from src.modules.utils import (FlattenHead,PoolingHead,RevIN, )1TEMPOConfig 1.…

LabVIEW鸡蛋品质智能分级系统

LabVIEW鸡蛋品质智能分级系统 随着现代农业技术的飞速发展&#xff0c;精确、高效的农产品质量控制已成为行业的重要需求。其中&#xff0c;鸡蛋作为日常膳食中不可或缺的重要组成部分&#xff0c;其品质直接关系到消费者的健康与满意度。本文设计并实现了一套基于LabVIEW的鸡…

docker私有仓库的registry

简介 Docker私有仓库的Registry是一个服务&#xff0c;主要用于存储、管理和分发Docker镜像。具体来说&#xff0c;Registry的功能包括&#xff1a; 存储镜像&#xff1a;Registry提供一个集中的地方来存储Docker镜像&#xff0c;包括镜像的层次结构和元数据。 版本控制&…