我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Kappa架构原理是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Kappa架构原理是什么

本篇内容介绍了“Kappa架构原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Lambda架构回顾Lambda架构的核心思想是把大数据系统拆分成三层:Batch Layer,Speed Layer和Serving Layer。其中,Batch Layer负责数据集存储以及全量数据集的预查询。Speed Layer主要负责对增量数据进行计算,生成Realtime Views。Serving Layer用于响应用户的查询请求,它将Batch Views和Realtime Views的结果进行合并,得到最后的结果,返回给用户。图1给出了Lambda的整体架构图:

Kappa架构原理是什么

Kappa架构上述提到,为了将批处理和实时处理相结合,Lambda设计了Batch Layer和Speed Layer两层结构,分别用于批处理和实时计算,因此需要维护两套分别跑在批处理和实时计算系统之上的代码。面对这个问题,有人会有这样的疑问,为什么不用流计算系统来进行全量数据处理从而去除Batch Layer这一层?

可能有这样回答:流计算给人的印象是对一些流式的、临时的数据进行计算,将结果保存后就将原始数据丢弃了,因此它不适合用来处理历史数据。其实这种答案并不完全正确,对于基于Lambda架构实现的Storm框架确实是这样的,但对于后来出现的Spark并不是。

Storm是在2011年7月开源的,Spark是在2012年之后逐渐为人们所知的,因此在Nathan Marz设计Lambda架构的时候,当时还并没有一个框架既可以用于离线处理,又可以进行实时计算。但随着Spark技术的发展,这一想法成为了可能,Spark本身可以用于批处理,而构建在Spark之上的Spark Streaming又可以用于实时计算,因此利用一套系统来应对批处理和实时计算相结合的业务完全是可行的。

Kappa架构的核心思想包括以下三点:

  1. 用Kafka或者类似的分布式队列系统保存数据,你需要几天的数据量就保存几天。

  2. 当需要全量重新计算时,重新起一个流计算实例,从头开始读取数据进行处理,并输出到一个新的结果存储中。

  3. 当新的实例做完后,停止老的流计算实例,并把老的一些结果删除。

Kappa的架构图如图2所示:

Kappa架构原理是什么

和Lambda架构相比,在Kappa架构下,只有在有必要的时候才会对历史数据进行重复计算,并且实时计算和批处理过程使用的是同一份代码。或许有些人会质疑流式处理对于历史数据的高吞吐量会力不从心,但是这可以通过控制新实例的并发数进行改善。

上面架构图中,新老实例使用了各自的结果存储,这便于随时进行回滚,更进一步,假如我们产出的是一些算法模型之类的数据,用户还可以同时对新老两份数据进行效果验证,做一些A/B test或者使用bandit算法来最大限度的使用这些数据。

优缺点对比

对比项

Lambda架构

Kappa架构

数据处理能力

可以处理超大规模的历史数据

历史数据处理的能力有限

机器开销

批处理和实时计算需一直运行,机器开销大

必要时进行全量计算,机器开销相对较小

存储开销

只需要保存一份查询结果,存储开销较小

需要存储新老实例结果,存储开销相对较大

开发、测试难易

程度

实现两套代码,开发、测试难度较大

只需面对一个框架,开发、测试难度相对较小

运维成本

维护两套系统,运维成本大

只需维护一个框架,运维成本小

表1 Lambda架构和Kappa架构优缺点对比

如上表所示,Kappa架构相对来说有更多的优点,目前也被更多的厂商用于构建商业项目。

第一,Lambda架构不仅需要维护两套分别跑在批处理和实时计算系统上面的代码,还需要批处理和全量计算长时间保持运行;而Kappa架构只有在需要的时候才进行全量计算。

第二,Kappa架构下可以启动很多个实例进行重复计算,因此在需要对一些算法模型进行调优时,Kappa架构下只需要更改一套系统的参数即可,并且允许对新老数据进行效果比对;但是在Lambda架构下,需要同时更改流计算系统算法模型和批处理系统算法模型,调参过程相对比较复杂。

第三,从用户开发、测试和运维的角度来看,Kappa架构下,开发人员只需要面对一个框架,开发、测试和运维的难度都会相对较小,这是个非常重要的优点。

如何选择

从上述的优缺点对比来看,业务需求、开发测试难易程度和运维成本为三个主要的框架选择考虑因素,而机器开销和存储开销,虽然存在一定差别,但是差别不是很大,所以这里我们也主要从业务需求,开发测试难易程度和运维成本三方面来考虑如何对上述两个架构做出选择。

业务需求

用户需要根据自己的业务需求来选择架构,如果所需要处理的历史数据规模较大,比如某省智慧交通系统几年达TB级的数据,那么选择Lambda架构可能较为合适;如果处理的数据量较小,比如分析某电商网站近30天的数据,那么选择Kappa架构可能更为合适。

开发测试难易程度

如果项目中需要频繁的对算法模型参数进行调优,Kappa架构要来的更为便捷;另外还有一个判定依据就是你设计的算法是否同时适合批处理和实时计算,如果同一份代码可以很好地处理两者,那么可以选择Kappa架构;但是针对某些复杂的案例,其实时计算的结果和批处理的结果是不同的,比如某些机器学习的应用,由批处理生成预测模型,再交由实时计算系统进行实时分析,那么这种情况下,批处理层和实时计算层不能进行合并,因此应该选择Lambda架构。

运维成本

Kappa架构的运维成本较低,比较适合技术人力资源有限的团队或企业。

StreamSQL与Lambda架构Transwarp StreamSQL是星环科技专门为企业级用户打造的流计算引擎,主要应用于实时性较强的应用场景。比如,金融行业需要对市场波动进行实时预警;银行业务需要在线分析业务等。它对于SQL和PL/SQL的支持使得用户可以通过SQL的方式实现复杂业务逻辑,大大降低了流应用开发的门槛,也使得基于一套SQL程序开发离线和实时业务成为可能。

图3为利用Kafka和StreamSQL搭建的一个Kappa架构系统,并且对原有的Kappa架构的缺点做了改进。

Kappa架构原理是什么

StreamSQL每隔100ms会从Kafka消息队列中接收一批时序数据,如t0-tn时刻的数据,其中t0的数据为(0,1,2,3,4),t1的数据为(5,6,7,8,9)…。当前批次的数据会被映射成一张二维关系表,通过SQL进行变换并转成内存列式存储,变换后的数据会实时写入Holodesk以持久化到SSD上,通过此方式永久保留或者保留最近一个月的数据。应用程序可以通过Inceptor SQL或者R语言对Holodesk中的列式数据进行统计分析。

StreamSQL对Kappa架构的改进之处,包括如下:

上述提到,原本的Kappa架构把历史数据保存在Kafka或类似的分布式消息队列,这样的特性导致了一个缺点就是它只能保存几天或几个月的数据,并且只能以流的形式保存,因此对于历史数据的处理能力有限;而StreamSQL支持输出到多种格式,既允许输出到Kafka,也可以将结果以各类格式(TEXT表、ORC表、Holodesk表、HBase表)保存在Inceptor,实现更长期的存储,因此它可以应对更大数据规模的业务需求。

StreamSQL支持在实时计算时或历史数据分析时将流数据和Inceptor表的数据做关联,大大增强了它的历史数据处理能力。

StreamSQL另一特色功能就是它可以完美兼容SQL标准和PL/SQL,使得用户可以通过SQL的方式实现业务逻辑,极大降低了流应用开发的门槛。

StreamSQL还增加了Application管理的功能,运行时各个Application之间相互隔离并需要权限验证,很大程度上提高了系统的安全性和可用性。

Kappa架构案例分析下面我们以StreamSQL作为流处理引擎来搭建一个基于Kappa架构的智慧交通系统,并对其中的套牌车辆实时预警业务场景进行详细的数据流分析

当前端卡口将监控到的车辆信息接入Kafka分布式消息队列后,总线会对这些数据进行归类分拣,分发给不同的服务集群,比如实时入库服务集群、未年检车监控服务集群等。

假设部分数据被送入到了违法车辆监控服务集群中,该集群其中一个业务是对车辆进行套牌分析。前面的章节提到Kappa架构方便进行算法模型的调优,下面我们来看一下具体是怎么做的。

首先,假如我们创建了一个UDF函数DectectCloneVehicle(param1, param2),用于检查待检测牌照是否为套牌车辆。该UDF接收两个输入参数:当两辆相同牌照的车直线距离超过param1公里且出现时间低于param2分钟时,则被视为套牌车。该函数有两种返回结果:如果是套牌车则输出1,否则输出0。

假设我们起初设定的套牌分析策略是,如果某两辆相同牌照的车直线距离超过20公里,出现时间小于2分钟, 那么判定该车牌被套牌。启动一个Stream Job实例,并按照该策略进行分析的StreamSQL语句如下:

CREATE STREAM vehicle_stream1(license STRING, location STRING, time TIMESTAMP)  ROW FORMAT DELIMITED FIELDS TERMINATED BY ','  TBLPROPERTIES ("topic"=fakeLicense", kafka.zookeeper"="172.16.1.128:2181",  "timefield"="time", "timeformat"="yyyy-MM-dd HH-mm-ss.SSS);  CREATE TABLE clone_vehicle_result_app1(license STRING,location STRING, time TIMESTAMP);  INSERT INTO clone_vehicle_result_app1  SELECT DetectCloneVehicle(20, 2) as cloned  FROM vehicle_stream1  HAVING cloned>0;

但是通过实践并且考虑到一些现实情况(如直线距离是否合理,当前路段高速类路段多还是低速路段多等),我们发现如果按照此参数执行检测,套牌排查效率会很低。假如把套牌车辆的判定标准调整为:直线距离超过10公里,出现时间小于5分钟的两辆相同牌照的车,效率就会有极大幅度的提升。现在重新启动一个Stream Job实例,执行如下的StreamSQL语句:

  1. CREATE STREAM vehicle_stream2(license STRING, location STRING, time TIMESTAMP) 

  2.  

  3. ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 

  4.  

  5. TBLPROPERTIES ("topic"=fakeLicense", kafka.zookeeper"="172.16.1.128:2181", 

  6.  

  7. "timefield"="time", "timeformat"="yyyy-MM-dd HH-mm-ss.SSS); 

  8.  

  9. CREATE TABLE clone_vehicle_result_app2(license STRING,location STRING, time TIMESTAMP); 

  10.  

  11. INSERT INTO clone_vehicle_result_app2 

  12.  

  13. SELECT DetectCloneVehicle(10, 5) as cloned 

  14.  

  15. FROM vehicle_stream2 

  16.  

  17. HAVING cloned>;

该Stream Job的效率高于之前所选用的参数,这样我们就进行了一步UDF模型参数的调优。所以在做实际分析时,业务执行效率的提升不能单纯的依靠系统提供的优化帮助,用户需要能够根据所采用的架构和所处理的问题、应用的模型方法,结合实际外部限制选择最有效的模型参数。

“Kappa架构原理是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Kappa架构原理是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Kappa架构原理是什么

本篇内容介绍了“Kappa架构原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lambda架构回顾Lambda架构的核心思想是把大数
2023-06-05

Kafka的架构原理是什么

Kafka的架构原理主要是基于分布式发布-订阅消息系统的设计理念。其架构包括以下几个核心组件:生产者(Producer):负责向Kafka集群发送消息。主题(Topic):消息的逻辑分类,生产者可以将消息发送到指定的主题。分区(Partit
Kafka的架构原理是什么
2024-03-14

LAMP架构实现原理是什么

LAMP架构是一种常用的Web应用程序开发和部署架构,它由以下四个核心组件组成:1. Linux操作系统:作为底层操作系统,提供了稳定、安全的基础环境。2. Apache HTTP服务器:作为Web服务器,接收并处理客户端请求,并将静态文件
2023-09-21

Ansible架构及工作原理是什么

Ansible架构及工作原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用 SSH
2023-06-19

Java分布式架构原理是什么

这篇文章主要介绍“Java分布式架构原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java分布式架构原理是什么”文章能帮助大家解决问题。1. 分布式术语1.1. 异常服务器宕机内存错误、服
2023-06-02

rainbond的架构设计原理是什么

这篇“rainbond的架构设计原理是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“rainbond的架构设计原理是什么
2023-06-29

web三层架构工作原理是什么

这篇文章主要讲解了“web三层架构工作原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“web三层架构工作原理是什么”吧!一、什么是三层架构三层架构就是为了符合“高内聚,低耦合”思想,
2023-06-21

java同步器AQS架构AbstractQueuedSynchronizer原理是什么

这篇文章主要介绍“java同步器AQS架构AbstractQueuedSynchronizer原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java同步器AQS架构AbstractQueu
2023-06-29

css架构理念是什么

本篇内容主要讲解“css架构理念是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css架构理念是什么”吧!前言 做前端已有不短的时间了,在css这片领域越走越久、越走越远,回过头来看看,有很
2023-06-08

Nginx的基本架构及工作原理是什么

Nginx是一个高性能的HTTP和反向代理服务器,采用事件驱动架构来处理请求。它的基本架构是由Master和Worker进程组成。Master进程负责管理Worker进程的生命周期,处理信号、配置文件的加载和重新加载等工作。Worker进
Nginx的基本架构及工作原理是什么
2024-04-03

openstack的架构设计原则是什么

OpenStack的架构设计原则包括以下几个方面:模块化和可扩展性:OpenStack的架构采用模块化设计,将不同功能的组件划分为独立的模块,如计算、网络、存储等。每个模块可以独立部署和扩展,从而实现灵活的架构设计。松耦合和可插拔性:Ope
2023-10-25

vsan超融合架构数据恢复原理是什么

这篇文章主要介绍“vsan超融合架构数据恢复原理是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vsan超融合架构数据恢复原理是什么”文章能帮助大家解决问题。一、vsan分布式存储故障情况介绍近
2023-06-03

Spring框架的原理是什么

这篇文章主要讲解了“Spring框架的原理是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring框架的原理是什么”吧!简要介绍spring的原理,并结合一个简单的实例,如何配置使用
2023-06-03

mysql代理架构指的是什么

这篇文章主要介绍mysql代理架构指的是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、概念通过独立的中间件来统一管理所有数据源和数据分片整合,后端数据库集群对前端应用程序透明,需要独立部署和运维代理组件。代理
2023-06-15

ARM 架构是什么?

ARM架构是一种流行的处理器架构,广泛应用于智能手机、平板电脑和嵌入式系统等低功耗设备。其特点包括精简指令集、按需取指、流水线技术和哈佛架构。ARM架构以低功耗、高性能、可扩展性著称,占领全球领先的处理器架构市场。其应用涵盖智能设备、物联网设备和车载系统等领域。随着技术的发展,ARM架构不断探索64位扩展、机器学习和云计算等新技术,以维持其主导地位。
ARM 架构是什么?
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录