【虹科干货】Lambda数据架构和Kappa数据架构——构建现代数据架构

news2024/11/27 4:29:17

如何更好地构建我们的数据处理架构,如何对IT系统中的遗留问题进行现代化改造并将其转变为现代数据架构?该怎么为你的需求匹配最适合的架构设计呢,本文将分析两种最流行的基于速度的数据架构,为你提供一些思路。

文章速览:

  • 什么是数据架构?
  • 基于速度的数据架构
  • 结语

一、什么是数据架构?

数据架构是企业架构中的一个元素,继承了企业架构的主要属性:流程、策略、变更管理和评估权衡。根据Open Group架构框架,数据架构是对“企业主要数据类型、来源、逻辑数据资产、物理数据资产和数据管理资源的结构和交互” 的描述。

根据数据管理知识体系,数据架构是“识别企业的数据需求(无论结构如何)并设计和维护核心蓝图以满足这些需求”的过程。它使用核心蓝图来指导数据集成、控制数据资产并使数据投资与业务战略保持一致。

然而,糟糕的数据架构是僵化且过度集中的。它使用了错误的工具来完成工作,这阻碍了开发和变更管理。

二、基于速度的数据架构

数据速度是指数据生成的速度、数据移动的速度以及将其处理为可用指导的速度
根据处理数据的速度,数据架构通常分为两类:Lambda和Kappa。

(一)Lambda数据架构
1、什么是Lambda
Lambda数据架构由Apache Storm的创建者Nathan Marz于 2011 年开发,旨在解决大规模实时数据处理的挑战。术语 Lambda 源自lambda演算 (λ),描述了在多个节点上并行运行分布式计算的函数。Lambda数据架构提供了一个可扩展、容错且灵活的系统来处理大量数据。它允许以混合方式访问批处理和流处理方法

2、Lambda架构的使用场景
1)当您有各种工作负载和速度要求时,Lambda架构是理想的选择。由于它可以处理大量数据并提供低延迟查询结果,因此适合仪表板和报告等实时分析应用程序。Lambda架构对于批处理(清理、转换、数据聚合)、流处理任务(事件处理、开发机器学习模型、异常检测、欺诈预防)以及构建集中存储库(称为“数据湖”)非常有用。

2)Lambda架构的关键区别在于,它使用两个独立的处理系统来处理不同类型的数据处理工作负载。第一个是批处理系统,它将结果存储在集中式数据存储(例如数据仓库或数据湖)中。第二个系统是流处理系统,它在数据到达时实时处理数据并将结果存储在分布式数据存储中。

3、Lambda架构的组成
Lambda架构由摄取层、批处理层、速度层(或流层)和服务层组成。

  • 批处理层:批处理层处理大量历史数据并将结果存储在集中式数据存储中,例如数据仓库或分布式文件系统。该层使用Hadoop或Spark等框架进行高效的数据处理,使其能够提供所有可用数据的总体视图。
  • 速度层:速度层处理高速数据流,并使用Apache Flink或Apache Storm等事件处理引擎提供最新的信息视图。该层处理传入的实时数据并将结果存储在分布式数据存储中,例如消息队列或NoSQL数据库。
  • 服务层:无论底层处理系统如何,Lambda架构服务层对于为用户提供一致的数据访问体验至关重要。它在支持需要快速访问当前信息(例如仪表板和分析)的实时应用程序方面发挥着重要作用。

4、Lambda架构的优势
Lambda架构解决了计算任意函数的问题,系统必须评估任何给定输入的数据处理函数(无论是慢动作还是实时)。此外,它还提供容错功能,确保在一个系统出现故障或不可用时,任一系统的结果都可以用作另一个系统的输入。在高吞吐量、低延迟和近实时应用程序中,这种架构的效率是很明显的
Lambda架构示意图
Lambda架构示意图

5、Lambda架构的缺点
Lambda架构提供了许多优势,例如可扩展性、容错性以及处理各种数据处理工作负载(批处理和流)的灵活性。但它也有缺点:

  • Lambda架构很复杂,它使用多种技术堆栈来处理和存储数据。
  • 设置和维护可能具有挑战性,尤其是在资源有限的组织中。
  • 每个阶段的批处理和速度层中都会重复底层逻辑。这种重复有一个代价:数据差异。因为尽管具有相同的逻辑,但一层与另一层的实现不同。因此,错误/错误的概率较高,并且您可能会遇到批处理层和速度层的不同结果。

(二)Kappa数据架构
2014年,Jay Kreps指出了Lambda架构的一些缺点。这次讨论使大数据社区找到了一种使用更少代码资源的替代方案——Kappa数据架构。

1、什么是Kappa数据架构
Kappa(以希腊字母 ϰ 命名,在数学中用于表示循环)背后的主要思想是单个技术堆栈可用于实时和批量数据处理。该名称反映了该体系结构对连续数据处理或再处理的重视,而不是基于批处理的方法。

Kappa 的核心依赖于流式架构。传入数据首先存储在事件流日志中。然后,它由流处理引擎(例如 Kafka)连续实时处理或摄取到另一个分析数据库或业务应用程序中。这样做需要使用各种通信范例,例如实时、近实时、批处理、微批处理和请求响应等。

2、Kappa数据架构的组成
数据重新处理是 Kappa的一项关键要求,使源端的任何更改对结果的影响可见。因此,Kappa 架构仅由两层组成:流处理层和服务层

在Kappa架构中,只有一层处理层:流处理层。该层负责采集、处理和存储直播数据。这种方法消除了对批处理系统的需要。相反,它使用先进的流处理引擎(例如 Apache Flink、Apache Storm、Apache Kafka 或 Apache Kinesis)来处理大量数据流并提供对查询结果的快速、可靠的访问。

流处理层有两个组件:

  • 摄取组件:该层从各种来源收集传入数据,例如日志、数据库事务、传感器和API。数据被实时摄取并存储在分布式数据存储中,例如消息队列或NoSQL数据库。
  • 处理组件:该组件处理大量数据流并提供对查询结果的快速可靠的访问。它使用事件处理引擎(例如 Apache Flink 或 Apache Storm)来实时处理传入数据和历史数据(来自存储区域),然后将信息存储到分布式数据存储中。

对于几乎所有用例,实时数据都胜过非实时数据。尽管如此,Kappa架构不应该被视为 Lambda 架构的替代品。反之,在不需要批处理层的高性能来满足标准服务质量的情况下,您应该考虑 Kappa架构。

3、Kappa架构的优势
Kappa架构旨在提供可扩展、容错且灵活的系统,用于实时处理大量数据。它使用单一技术堆栈来处理实时和历史工作负载,并将所有内容视为流。Kappa 架构的主要动机是避免为批处理层和速度层维护两个独立的代码库(管道)。这使得它能够提供更加精简的数据处理管道,同时仍然提供对查询结果的快速可靠访问
Kappa架构示意图
Kappa架构示意图

4、Kappa架构的缺点
Kappa架构承诺可扩展性、容错性和简化的管理。然而,它也有缺点。

  • Kappa架构理论上比 Lambda更简单,但对于不熟悉流处理框架的企业来说,技术上仍然可能很复杂。
  • 扩展事件流平台时的基础设施成本。在事件流平台中存储大量数据可能成本高昂,并会引发其他可扩展性问题,尤其是当数据量达到TB或PB级时。
  • 事件时间和处理时间之间的滞后不可避免地会产生数据延迟。因此,Kappa
    架构需要一套机制来解决这个问题,例如水印、状态管理、重新处理或回填。

(三)探索数据流模型
1、为什么会出现数据流模型
Lambda和Kappa试图通过集成本质上不兼容的复杂工具来克服2010年代Hadoop生态系统的缺点。这两种方法都难以解决协调批处理和流数据的根本挑战。然而,Lambda和Kappa 为进一步的改进提供了灵感和基础。

统一多个代码路径是管理批处理和流处理的一项重大挑战。即使有了Kappa架构的统一队列和存储层,开发人员也需要使用不同的工具来收集实时统计数据并运行批量聚合作业。今天,他们正在努力应对这一挑战。

2、什么是数据流模型
数据流模型的基本前提是将所有数据视为事件并在不同类型的窗口上执行聚合。实时事件流是无界数据,而批量数据是具有自然窗口的有界事件流。
窗口模式示意图
窗口模式示意图

数据工程师可以选择不同的窗口,例如滑动窗口或会话窗口,以进行实时聚合。数据流模型允许使用几乎相同的代码在同一系统内进行实时和批处理。

“批处理作为流处理的一个特例”的想法已经变得越来越普遍,Flink和Spark等框架也采用了类似的方法。

结语

当然,关于速度模型的数据架构讨论还有另一个用处:适合物联网 (IoT) 的设计选择,在本篇文章中,我们就不再赘述。如何最好地构建我们处理数据的架构,如何对僵化且缓慢的IT遗留系统,进行现代化改造并将其转变为现代数据架构,显然,关于这个问题还尚未有定论。欢迎与我们共同探讨。

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

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

相关文章

2023最新版JavaSE教程——第5天:数组

目录 一、数组的概述1.1 为什么需要数组1.2 数组的概念1.3 数组的分类 二、一维数组的使用2.1 一维数组的声明2.2 一维数组的初始化2.2.1 静态初始化2.2.2 动态初始化 2.3 一维数组的使用2.3.1 数组的长度2.3.2 数组元素的引用 2.4 一维数组的遍历2.5 数组元素的默认值 三、一维…

【开源】基于Vue和SpringBoot的生活废品回收系统

项目编号: S 003 ,文末获取源码。 \color{red}{项目编号:S003,文末获取源码。} 项目编号:S003,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&…

SAP 50策略测试简介

上篇博文写了40策略的测试,40策略就是典型的按库存生产,考虑库存,考虑销售订单。 本文将测试50策略,按单生产用的最多的策略。相信很多公司按单生产应该都会用到50的策略 1、首先还是先创建物料AB3 同时将BOM中的原材料的独立集中的字段设置为1 2、创建BOM—CS01 3、同杨…

01_ddim_inversion_CN

DDIM反转 设置 # !pip install -q transformers diffusers accelerateimport torch import requests import torch.nn as nn import torch.nn.functional as F from PIL import Image from io import BytesIO from tqdm.auto import tqdm from matplotlib import pyplot as p…

离散Hopfield神经网络分类——高校科研能力评价

大家好,我是带我去滑雪! 高校科研能力评价的重要性在于它对高等教育和科研体系的有效运作、发展和提高质量具有深远的影响。良好的科研能力评价可以帮助高校识别其在不同领域的强项和薄弱点,从而制定战略,改进教学和科研&#xff…

C语言求解:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位(约瑟夫问题)

完整代码&#xff1a; /* 有n个人围成一圈&#xff0c;顺序排号。从第一个人开始报数&#xff08;从1到3报数&#xff09;&#xff0c;凡报到3的人 退出圈子&#xff0c;问最后留下的是原来第几号的那位*/ #include<stdio.h>//约瑟夫问题 //递推关系f(n)(f(n-1)2)\mod n…

白嫖阿里云服务器,速看!数量不多

白嫖阿里云服务器攻略来了&#xff0c;在阿里云免费试用中心可以申请免费服务器&#xff0c;但是阿里云百科不建议选择免费的&#xff0c;只有3个月使用时长&#xff0c;选择99元服务器不是更香&#xff0c;2核2G配置3M固定带宽&#xff0c;一年99元&#xff0c;重点是新老用户…

使用screw一键生成数据库文档

今天分享一个好用的工具&#xff0c;screw&#xff0c;他是一款国产开源软件支持将数据库库表结构一键生成html、word、markdown文档&#xff0c;非常的好用&#xff0c;项目详情页&#xff1a;https://gitee.com/leshalv/screw 背景 我们项目的开发模式是甲方、乙方这种&…

k8s、数据存储

数据存储的概念 容器磁盘上的文件的生命周期是短暂的&#xff0c;这就使得在容器中运行重要应用时会出现一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubelet 会重启它&#xff0c;但是容器中的文件将丢失——容器以干净的状态&#xff08;镜像最初的状态&#xff09;…

ChatGPT风潮再起!最新国内产品一网打尽,畅游指南曝光!

一、国内类chatgpt产品 在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;是一个重要的方向&#xff0c;涉及到语音识别、文本生成、机器翻译、问答系统等多个应用场景。近年来&#xff0c;随着深度学习技术的发展&#xff0c;NLP也取得了突破性的进展&#…

PTE-DI 练习 + 模板

目录 重点&#xff1a;平时练习的模板&#xff0c;一定要滚瓜烂熟 25秒准备时间 要想拿还不错的分数&#xff0c;fluency 一定要足够地高 Preparation 1.Look at the title and other words inthe image 2.Look for simple information(highest/lowest) Speak 1.Speak …

断点续传-http中Header参数Range(分段请求基础)

文章目录 Range请求头信息介绍RangeIf-Range 响应头Content-RangeAccept-Ranges 需要用到几个http头 rangeif-rangecontent-rangeaccept-range 断点续传的优缺点 好处&#xff1a;防止大文件下载过程出现网络异常&#xff0c;而前功尽弃。缺点&#xff1a;要发起多次请求&…

Bean的循环依赖问题

2023.11.10 通俗来讲&#xff0c;循环依赖指的是一个实例或多个实例存在相互依赖的关系&#xff08;类之间循环嵌套引用&#xff09;。比如&#xff1a;丈夫类Husband&#xff0c;妻子类Wife。Husband中有Wife的引用。Wife中有Husband的引用。 正常调用这两对象不会出现问题&am…

【华为数通HCIP | 网络工程师】821-BGP 组播高频题与解析(1)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

echarts 圆环图 高亮事件 切换 中心文字

createEcharts() {let chartDom this.$refs.echartsthis.Echarts echarts.init(chartDom)let option {title: {text: 128, //主标题文本subtext: 总数, //副标题文本left: center,top: 32%,textStyle: {fontFamily: Montserrat-MediumItalic,fontSize: 30,color: #fff,align…

百度搜索深度学习模型业务及优化实践

作者 | Xin 导读 百度搜索架构部模型架构组&#xff0c;致力于将最新的人工智能技术以更低的成本被百度数亿用户体验到。这个过程中会面临非常多的系统、工程层面的问题&#xff0c;甚至在深度学习模型领域&#xff0c;我们看到越来越多的工作并不拘泥于工程本身。 本文主要分享…

Jython可以运行在java中的python

什么是Jython Jython是一种Python语言在Java平台上的实现。它旨在让Python程序员能够在Java平台上编写Python程序&#xff0c;同时还可以利用Java类库中的所有功能。 与传统的Python相比&#xff0c;Jython具有以下几个特点&#xff1a; 可以直接访问Java类库&#xff1a;因为…

C++结构体定义 创建 赋值 结构体数组

结构体是什么&#xff1f; struct是自定义数据类型&#xff0c;是一些类型集合组成的一个类型。结构体的定义方式 #include<iostream> using namespace std;struct Student {string name;int age;int score; };创建结构体变量并赋值 方式一&#xff0c;先创建结构体变…

无线通信测量仪器-4945B/C 无线电通信综合测试仪

01 4945B/C 无线电通信综合测试仪 产品综述&#xff1a; 4945B/4945C无线电通信综合测试仪是多功能、便携式无线电综合测试类仪器&#xff0c;基于软件无线电架构&#xff0c;集成了跳频信号发生与分析、矢量信号发生与解调分析、模拟调制信号发生与解调分析、音频信号发生与…

SAP 20策略测试简介

20策略相信也有很多小伙伴使用过,与50最大的不同之处就在于20策略是不能做计划独立需求的。 我看一下系统中20 策略的配置图,可以看到独立需求这里的配置都是空的。 1、我们开始测试准备物料 成品物料AB4 原材料:100197 2、创建BOM—CS01 3、创建主配方—c201 ,离散制造…