【大数据架构(2)】kappa架构介绍

文章目录

  • 一. Kappa架构
    • 1. Speed Layer (Stream Layer) - The Foundation of Kappa Architecture
    • 2. Stream Processing: The Heart of Kappa Architecture
  • 二. Benefits of Kappa and Streaming Architecture
    • 1. Simplicity and Streamlined Pipeline
    • 2. High-Throughput Processing of Historical Data(高吞吐处理历史数据)
    • 3. Optimizing Storage with Tiered Approach(通过分层来优化存储)
  • 三、Challenges of Implementing Kappa Architecture
    • 1. Complexity of Setup and Maintenance
    • 2. Cost and Scalability Considerations
    • 3. Managing Data Streams for Integrity, Correctness, and Consistency

一. Kappa架构

Kappa 架构代表了处理数据处理架构方式的转变。作为对 Lambda 架构提出的挑战的回应,Kappa 提出了一种更简单、更流畅的方法。Kappa 架构的主要目标是以一种能够及时提供洞察、减少系统复杂性并确保数据一致性的方式处理流数据。它通过专注于一个核心原则实现这一目标:将所有数据作为流。

 

1. Speed Layer (Stream Layer) - The Foundation of Kappa Architecture

在这里插入图片描述

在kappa架构中,LA的速度层是kappa的基础。与将数据处理拆分为两个独立层(批处理和实时处理)不同。kappa关注实时到来的数据,历史数据在kappa中只是数据流中比较老的数据,他和新到来的数据处理方式(实际上,Flink的批处理模式较流模式模型是不同的,效率会比流模式高 参考:execution_mode)是一样的。流层读取到来的数据,处理并将数据发送到下游进行存储或者进一步分析。此层提供了数据处理的低延迟。

 

2. Stream Processing: The Heart of Kappa Architecture

kappa架构的本质是流处理,kappa进行不断的流查询。这使得实时分析、模式检测、决策、系统监控等变成现实。如下流处理过程:
在这里插入图片描述

流处理层有两个关键组件:数据摄取部分、数据处理部分。

  • 数据摄取组件
    此组件用于捕获和存储raw data从例如日志文件、传感器数据和API。数据的流动是实时的,被存储在例如消息队列、nosql等分布式文件系统中。

  • 数据处理组件
    用于处理数据,并存储到分布式文件系统中。使用FLink或storm管理大量的数据流,并迅速的给出可靠的查询结果。
    在kappa架构中,服务层没有独立出来,而是通过流式系统中的子系统(connector?)将查询结果实时的发送给用户。

kappa架构简化了数据处理管道。通过去除批处理层,kappa简化了系统复杂性,带来了更容易维护和拓展的架构。

 

二. Benefits of Kappa and Streaming Architecture

Lamba和kappa架构对比图

在这里插入图片描述

 

1. Simplicity and Streamlined Pipeline

kappa将所有的输入源数据作为流,无论它来自历史或实时数据源。数据处理的统一减少了复杂性和编码开销,使得数据管道更容易管理、优化和分级。

 

2. High-Throughput Processing of Historical Data(高吞吐处理历史数据)

虽然看起来kappa主要处理实时任务,但对于处理高吞吐的历史数据也非常优雅。你只需要将所有的流数据,作为有界流处理即可处理批任务。

在这里插入图片描述

 

3. Optimizing Storage with Tiered Approach(通过分层来优化存储)

在 Kappa 架构中使用分层存储可以通过采用分层存储来实现成本效益和性能。虽然分层存储不是 Kappa 架构的核心概念,但它可以无缝地融入其框架中。

例如,企业可以将数据存储在成本较低、容错性强的分布式存储层,比如对象存储,同时将实时数据分配到性能更高的层,比如分布式缓存或 NoSQL 数据库。这种对流数据存储的战略性方法使得对数据湖的高效管理成为可能。

 

三、Challenges of Implementing Kappa Architecture

1. Complexity of Setup and Maintenance

尽管kappa比Lamba简化,但安装和维护kappa架构仍然有一定的复杂性,尤其是对于那些对流处理框架尚不熟悉的组织。理解流处理器内部工作机制,管理输入源、处理复杂的流事件,需要专家和踩坑。

 

2. Cost and Scalability Considerations

在实施 Kappa 架构时,更为明显的一个问题是与在事件流处理平台上存储大数据相关的成本。针对这一挑战的一个潜在解决方案是采用云存储服务(如 AWS S3 或 Google Cloud Storage)提供的数据湖方法。这些服务可以提供可扩展且高效的存储解决方案,能够处理通常与流数据架构相关的大量数据。

将“流数据湖”纳入数据流架构是另一种可行的方法。这涉及使用 Apache Kafka 作为流层,同时与对象存储结合进行长期数据存储。这种设置可以创建一个可扩展且成本效益高的基础架构,但需要仔细的规划和执行,以避免可扩展性问题和不必要的花费。

 

3. Managing Data Streams for Integrity, Correctness, and Consistency

由于传入数据的连续和并发特性,流系统本质上无法保证事件顺序。这个特性在处理延迟数据时需要进行一些权衡。

流数据架构通常通过采用诸如事件时间窗口和水印等策略来解决这个问题。这些策略使系统能够高效地处理乱序事件。然而,它们可能会引入不准确性,因为在水印之后到达的事件可能会被丢弃,从而在数据中产生轻微的不一致。

 
为了应对这些挑战,像 Uber 这样的公司创新地设计了他们的 Kappa 架构,以便使用统一的代码库来支持流式结果的回填。

回填管道在一定时间窗口后重新计算数据,以处理迟到和乱序事件。例如,如果乘客延迟对司机进行评分,直到他们的下一次Uber应用程序会话,这个事件可能会被流水线错过。然而,具有几天延迟的回填管道可以正确将这个事件归因于其正确的会话。通过这种方式,回填管道可以应对延迟,并修补由流水线引起的轻微不一致。

 
参考:
https://nexocode.com/blog/posts/kappa-architecture/

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

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

相关文章

数据服务安全的重要性

数据服务安全在当今信息化社会显得尤为重要。随着大数据、云计算、人工智能等技术的飞速发展,数据已经成为企业和组织的核心资产,数据服务安全也面临着前所未有的挑战。本文将从数据服务安全的重要性、常见威胁、防护策略以及未来发展趋势等方面进行探讨…

ROS 2基础概念#1:计算图(Compute Graph)| ROS 2学习笔记

在ROS中,计算图(ROS Compute Graph)是一个核心概念,它描述了ROS节点之间的数据流动和通信方式。它不仅仅是一个通信网络,它也反映了ROS设计哲学的核心——灵活性、模块化和可重用性。通过细致探讨计算图的高级特性和实…

2024年小程序云开发CMS内容管理无法使用,无法同步内容模型到云开发数据库的解决方案,回退老版本CMS内容管理的最新方法

一,问题描述 最近越来越多的同学找石头哥,说cms用不了,其实是小程序官方最近又搞大动作了,偷偷的升级的云开发cms(内容管理)以下都称cms,不升级不要紧,这一升级,就导致我…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之FlowItem容器组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之FlowItem容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、FlowItem组件 子组件 可以包含子组件。 接口 FlowItem() 使用该接口来…

Android14之解决编译报错:bazel: no such file or directory(一百八十九)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

Stable Diffusion WebUI 图库浏览器插件:浏览器以前生成的图片

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 大家好,我是水滴~~ 本文介绍的插件叫图库浏览器,是一个用于浏览器以前生成的图片信息的插件。本文将介绍该插件的安装和使用,希望能够对你有所帮助。 文章…

GitHub宣布GitHub Copilot Enterprise的全面发布;使用Python与Gemma和MongoDB构建RAG系统的全过程

🦉 AI新闻 🚀 GitHub宣布GitHub Copilot Enterprise的全面发布 摘要:GitHub Copilot Enterprise是一款基于OpenAI的GPT-4模型的代码助手,它结合了十多年的真实、安全可靠的代码数据进行开发。该工具可以通过文本提示来获取、审核…

JavaEE进阶(7)Spring Boot 日志(概述、用途、使用:打印日志,框架介绍,SLF4J 框架介绍、更简单的日志输出)

接上次博客:JavaEE进阶(6)SpringBoot 配置文件(作用、格式、properties配置文件说明、yml配置文件说明、验证码案例)-CSDN博客 目录 日志概述 日志的用途 日志使用 打印日志 在程序中获取日志对象 使用日志对象…

练习 3 Web [ACTF2020 新生赛]Upload

[ACTF2020 新生赛]Upload1 中间有上传文件的地方,试一下一句话木马 txt 不让传txt 另存为tlyjpg,木马文件上传成功 给出了存放目录: Upload Success! Look here~ ./uplo4d/06a9d80f64fded1e542a95e6d530c70a.jpg 下一步尝试改木马文件后缀…

Python的自然语言处理库NLTK介绍

NLTK(Natural Language Toolkit)简介 NLTK是Python中一个领先的自然语言处理(NLP)库,它提供了文本处理的基础设施,包括分词(tokenization)、词性标注(part-of-speech tag…

云计算与边缘计算:有何不同?

公共云计算平台可以帮助企业充分利用全球服务器来增强其私有数据中心。这使得基础设施能够扩展到任何位置,并有助于计算资源的灵活扩展。混合公共-私有云为企业计算应用程序提供了强大的灵活性、价值和安全性。 然而,随着分布在全球各地的实时人工智能应…

亚马逊自养号测评:如何安全搭建环境,有效规避风险

要在亚马逊上进行自养号测评,构建一个真实的国外环境至关重要。这包括模拟国外的服务器、IP地址、浏览器环境,甚至支付方式,以创建一个完整的国际操作环境。这样的环境能让我们自由注册、养号并下单,确保所有操作均符合国际规范。…

十三、Qt多线程与线程安全

一、多线程程序 QThread类提供了管理线程的方法:一个对象管理一个线程一般从QThread继承一个自定义类,重载run函数 1、实现程序 (1)创建项目,基于QDialog (2)添加类,修改基于QThr…

微软广告和网络服务CEO承认OpenAI的Sora将加入Copilot,但需要一些时间

事情的起因是一名网友询问 Sora 是否会加入 Copilot,微软广告和网络服务CEO首席执行官——Mikhail Parakhin 回应说:“最终,但这需要时间。”毕竟投了几十个亿美金进去,不亏是金主爸爸。 图为Mikhail Parakhin Sora是OpenAI开发的…

2024年阿里云2核4G配置服务器测评_ECS和轻量性能测评

阿里云2核4G服务器多少钱一年?2核4G服务器1个月费用多少?2核4G服务器30元3个月、85元一年,轻量应用服务器2核4G4M带宽165元一年,企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

nginx 日志,压缩,https功能介绍

一, 自定义访问日志 (一)日志位置存放 1,格式 2, 级别 level: debug, info, notice, warn, error, crit, alert, emerg 3,示例 服务机定义 错误日志存放位置 客户机错误访问 查看错误日志 4&#xff…

级联选择el-cascader可以选中任意一项

最近遇到一个需求,就是级联选择用的el-cascader组件,然后用户可以选中第一级,或者说可以选中第二级,或者说可以选中第三级,如下图所示: 代码如下: 单独选择任意一项须设置属性 checkStrictly为true ,绑定的是其 id ,popper-class设置自定义类名为popperClass,如下图…

only office-用着确实很省心

小程一言 最近一直在使用各种办公软件进行学习笔记整理,但是在使用过程中,总感觉不是自己想要的一款软件,想要一款真正懂自己的软件,是一个选择的过程。最近在网上闲逛发现一款宝藏软件,好奇心驱使我去进行适用&#…

去中心化时代,品牌如何赢得确定性增长

去中心化时代下,品牌面临众多挑战。在如今复杂的环境下,有很多不确定的因素,流量、资本等等,这些都是品牌发展过程中的不确定因素,越是复杂的环境下,品牌越要保证自己核心优势,找到并放大我们的…

微信小程序订阅消息前后端示例

微信小程序的订阅消息&#xff0c; 必须是由弹框&#xff0c;弹框&#xff0c;弹框来调起了&#xff0c;单纯的在页面上调用 wx.requestSubscribeMessage是没有效果的 小程序端的代码 <view class"sub" bindtap"dinyuxiaoxi">订阅消息</view>…