【大数据架构(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/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue 3, TypeScript 和 Element UI Plus:前端开发的高级技巧与最佳实践

Vue 3、TypeScript 和 Element UI Plus 结合使用时,可以提供一个强大且灵活的前端开发环境。以下是一些高级用法和技巧,帮助你更有效地使用这些技术: 1. Vue 3 高级特性 Composition API 使用 setup 函数: Vue 3 引入了 Composition API&am…

软考50-上午题-【数据库】-SQL访问控制

一、SQL访问控制 数据控制,控制的是用户对数据的存储权力,由DBA决定。 DBA:数据库管理员。 DBMS数据控制应该具有一下功能: 1-1、授权语句格式 说明: 示例: 1-2、收回权限语句格式 示例: PUBLI…

【C++】拿下! C++中的内存管理

内存管理 1 C 的内存分布2 C语言的内存管理3 C的内存管理3.1 内置类型操作3.2 自定义类型操作 4 operator new与operator delete函数(重点)5 new和delete的实现原理5.1 内置类型5.2 自定义类型new的原理delete的原理new T[ N ] 的原理lete[]的原理 6 总结…

开源现场总线协议栈(ethercat、ethernet/ip、opc ua、profinet、canopen、modbus)

ecat主站及其相关: 1.soem:GitHub - OpenEtherCATsociety/SOEM: Simple Open Source EtherCAT MasterSimple Open Source EtherCAT Master. Contribute to OpenEtherCATsociety/SOEM development by creating an account on GitHub.https://github.com/…

vue项目导出excel ,文件过大导致请求超时的处理方法

一、因为文件过大,请求时间较长,就会产生请求超时的情况,处理方式是可以分为三个接口,接口1用来获取id值,接口2利用id值发起请求,询问是否准备好下载,如果没准备好,则没隔一秒再次发…

LeetCode300.最长递增子序列

题目 给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。 示例 …

GaN建模:强大但富有挑战性

来源:Modeling GaN: Powerful but Challenging(10年) 文章的研究内容 这篇文章主要研究了氮化镓(GaN)高电子迁移率晶体管(HEMTs)的建模问题。GaN HEMTs是微波频段高功率发射器设计中的关键技术…

Linux服务器中文乱码如何解决

如果服务器上数字和英文均可正常展示,只有中文是奇奇怪怪的乱码,那么可以考虑是服务器本身字体输出有问题。 如何在服务器上安装中文宋体字体库呢,排查及安装字体库步骤如下: 使用 fc-list命令检查服务器是否安装字体库如果提示…

若依前后端分离版开源项目学习

前言:vscode中vue代码没有高亮显示,可以下载vetur插件解决,ctrl点击无法跳转函数定义问题,可以下载vue-helper插件解决;idea中ctrl点击函数即可跳转函数定义。 一、登录 1.生成验证码 基本思路: 后端生…

C#,数值计算,求解微分方程的吉尔(Gear)四阶方法与源代码

1 微分方程 微分方程,是指含有未知函数及其导数的关系式。解微分方程就是找出未知函数。 微分方程是伴随着微积分学一起发展起来的。微积分学的奠基人Newton和Leibniz的著作中都处理过与微分方程有关的问题。微分方程的应用十分广泛,可以解决许多与导数…

Ansible自动化运维(四)jinja2 模板、Roles角色详解

👨‍🎓博主简介 🏅云计算领域优质创作者   🏅华为云开发者社区专家博主   🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…

VUE3搭载到服务器

1.搭建服务器 使用 Windows 自带的 IIS 作为服务器。 步骤如下:https://blog.csdn.net/qq_62464995/article/details/130140673 同时,上面的步骤中,还使用了 cpolar 将 IIS 本地网址映射到公共网址。 注: cpolar客户端&#xf…

【React源码 - 调度任务循环EventLoop】

我们知道在React中有4个核心包、2个关键循环。而React正是在这4个核心包中运行,从输入到输出渲染到web端,主要流程可简单分为一下4步:如下图,本文主要是介绍两大循环中的任务调度循环。 4个核心包: react:…

MySQL 篇-深入了解 DML、DQL 语言(二)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 DML、DQL 语言说明 2.0 使用 DML 实现对数据管理和操作 2.1 DML - 增添数据 insert 2.2 DML - 修改数据 update 2.3 DML - 删除数据 delete 3.0 使用 DQL 实现对…

使用.NET 升级助手工具将.net framework4.8 MVC项目升级到net6

1 新建.net framework4.8 MVC项目 随便添加一个可以访问的界面用于测试 2 对当前项目进行升级 注意:若要进行升级,首先确保本地已安装相应的sdk,例如:dotnet-sdk-6.0.402-win-x64.exe1.运行cmd命令窗口,进入项目所在…

【蓝桥杯】快读|min和max值的设置|小明和完美序列|​顺子日期​|星期计算|山

目录 一、输入的三种方式 1.最常见的Scanner的输入方法 2.数据多的时候常用BufferedReader快读 3.较麻烦的StreamTokenizer快读(用的不多) StreamTokenizer常见错误: 二、min和max值的设置 三、妮妮的翻转游戏 四、小明和完美序列 五…

Docker之数据卷自定义镜像

目录 一、数据卷 ​二、自定义镜像 2.1自定义centos 一、数据卷 在docker中,数据卷是宿主机的一个可以供一个或多个容器使用的特殊目录,它可以在容器之间共享和重用,本地与容器间传递数据更高效;对数据卷的修改会立马有效&#…

CSS——PostCSS简介

文章目录 PostCSS是什么postCSS的优点补充:polyfill补充:Stylelint PostCSS架构概述工作流程PostCSS解析方法PostCSS解析流程 PostCSS插件插件的使用控制类插件包类插件未来的CSS语法相关插件后备措施相关插件语言扩展相关插件颜色相关组件图片和字体相关…

代码库管理工具Git介绍

阅读本文同时请参阅-----免费的Git图形界面工具sourceTree介绍 Git是一个分布式版本控制系统,它可以帮助开发者跟踪和管理代码历史。Git的命令行工具是使用Git的核心方式,虽然它可能看起来有些复杂,但是一旦掌握了基本命令,你…

基于MQTT协议实现微服务架构事件总线

一、场景描述 昨天在博客《客户端订阅服务端事件的实现方法》中提出了利用websocket、服务端EventEmitter和客户端mitt实现客户端订阅服务端事件,大大简化了客户端对服务端数据实时响应的逻辑。上述方案适用于单服务节点的情形。 对于由服务集群支撑的微服务架构&…