流式处理应用场景与流式计算处理框架选择建议
文章目录
- 前言
- 使用场景
- 如何选择流式处理框架
前言
在之前的文章中我们介绍了如何进行流式处理——从一般性的概念和模式说起,并列举了一些Streams的例子:
- 流式处理相关概念总结说明
- 流式处理设计模式总结说明
- Kafka Streams 架构概览
接下来的文章将介绍一些流式处理的实际应用场景以及我们该从哪些方面考虑选择哪些流式处理框架,目前比较流行的流式处理框架有很多,比如说 Flink, Spark Streaming, Kafka Streaming 等。
使用场景
客户服务
假设我们刚刚向一家大型连锁酒店预订了一个房间,并希望收到电子邮件确认和收据。但是,在预订了几分钟之后我们还没有收到确认邮件,于是打电话向客服确认。
客服的回复是:“我在我们的系统中看不到订单,将数据从预订系统加载到客服系统的批处理作业每天只运行一次,所以请明天再打电话过来。你应该可以在2~3个工作日之后收到确认邮件。”这样的服务质量有点儿糟糕,而我们已经不止一次在一家大型连锁酒店遭遇过类似的问题。
我们希望连锁酒店的每一个系统在预订之后的几秒或几分钟之内都能发出通知,包括客服中心、酒店、发送确认邮件的系统、网站等。我们还希望客服中心能够立即拉取到我们在这家连锁酒店的历史入住数据,知道我们是忠实顾客,从而为我们升级服务。
如果用流式处理应用程序来构建这些系统,它们就可以几近实时地接收和处理事件,带来更好的用户体验。有了这样的系统,顾客就可以在几分钟之内收到确认邮件,并及时从信用卡中扣除费用,然后发送票据,服务台就可以马上回答有关房间预订情况的问题了。
物联网
物联网包含了很多东西,从可调节温度和订购洗衣剂的家居设备到制药行业的实时质量监控设备。
流式处理在这方面最为常见的应用是预测何时该进行设备维护。这与应用程序监控有点儿相似,只是监控的对象是硬件,这在很多行业中很常见,包括制造业、通信(识别故障基站)、有线电视(在用户投诉之前识别出故障机顶盒)等。
每一种场景都有自己的模式,但目标是一样的,即处理大量来自设备的事件,并识别出故障设备的模式,比如交换机丢包、制造过程中需要更大的力气来拧紧螺丝,或者用户频繁重启有线电视机顶盒。
欺诈检测
欺诈检测也叫异常检测,是一个非常广泛的领域,专注于捕获系统中的“作弊者”或不良分子。
欺诈检测的应用包括信用卡欺诈检测、股票交易欺诈检测、视频游戏欺诈检测和网络安全风险。在这些欺诈行为造成大规模破坏之前,越早识别出它们越好。一个几近实时的可以快速对事件做出响应(比如停止一个还没有通过审核的交易)的系统比在3天之后才能检测出欺诈行为的批处理系统要好得多。这也是一个在大规模事件流中识别模式的问题。
在网络安全领域,有一个被称为发信标(beacon)的欺诈手法。黑客在组织内部植入恶意软件,恶意软件会时不时地连接到外部网络接收命令。由于恶意软件可以在任意时间以任意频率接收命令,因此很难被检测到。
通常,网络可以抵挡来自外部的攻击,但难以阻止从内部到外部的突围。通过处理大量的网络连接事件流,识别出不正常的通信模式(例如,检测出主机访问了平常不经常访问的某些IP地址),我们可以在蒙受更大的损失之前向安全组织发出告警。
如何选择流式处理框架
在选择流式处理框架时,需要着重考虑应用程序的类型。不同类型的应用程序需要不同的流式处理解决方案。
数据摄取
- 数据摄取的目的是将数据从一个系统移动到另一个系统,并在传输过程中对数据做一些修改,使其更适用于目标系统。
低延迟处理
- 任何要求立即得到响应的应用程序。有些欺诈检测系统就属于这一类。
异步微服务
- 这些微服务负责执行大型业务流程中的一些简单的操作,比如更新库存信息。这些应用程序需要通过维护本地状态缓存来提升性能。
几近实时的数据分析
- 这些流式应用程序通过执行复杂的聚合和连接操作来对数据进行切分,并生成有趣的业务见解。
选择什么样的流式处理系统在很大程度上取决于你要解决什么问题:
- 如果你要解决数据摄取问题,那么就要考虑是需要流式处理系统还是更简单的专注于数据摄取的系统,比如Connect。如果你确定需要流式处理系统,那么就要确保它和目标系统都有可用的连接器。
- 如果你要进行低延迟处理,那么就要考虑是否一定要使用流。一般来说,请求与响应模式更适合用来处理这种任务。如果你确定需要流式处理系统,那么就选择一种支持逐事件低延迟模型而不是微批次模型的流式处理系统。
- 如果你要构建异步微服务,那么就需要可以与消息总线(希望是Kafka)集成的流式处理系统,它应该具备变更捕获能力,可以将上游的变更更新到微服务的本地缓存里,并且支持本地存储,可以作为微服务数据的缓存和物化视图。
- 如果你要构建复杂的数据分析引擎,那么就需要支持本地存储的流式处理系统,不过这次不是为了本地缓存和物化视图,而是为了支持高级聚合、时间窗口和连接,因为如果没有本地存储,就很难实现这些特性。流式处理系统的API需要支持自定义聚合、时间窗口操作和多种连接类型。
除了具体的应用场景,还需要从全局考虑如下事项。
系统的可操作性
- 它是否容易部署?是否容易监控和调试?是否容易扩展?是否能够与已有的基础设施集成?如果出现错误需要重新处理数据该怎么办?
API的可用性和可调试性
- 用同一种框架的不同版本开发高质量的应用程序所耗费的时间可能千差万别。因为开发时间和发布时机太重要了,所以需要选择一个高效的系统。
化繁为简
- 大部分系统声称它们支持基于时间窗口的高级聚合和本地缓存,但问题是,它们够简单吗?它们是帮你处理了伸缩和故障恢复方面的问题,还是只提供了脆弱的抽象并让你自己处理剩下的脏活?系统提供的API越简洁,封装的细节越多,开发人员的效率就越高。
社区
- 大部分流式处理框架是开源的。对开源软件来说,一个充满生机的社区是不可替代的。好的社区意味着用户可以定期获得新的功能特性,而且质量相对较高(没有人会使用糟糕的软件),bug可以很快地得到修复,用户的问题可以及时得到解答。如果你遇到一个奇怪的问题并在谷歌上搜索,那么可以搜索到相关的信息,因为其他人也在使用这个系统,并遇到过同样的问题。
相关文章:
流式处理应用场景与流式计算处理框架选择建议
文章目录 前言使用场景如何选择流式处理框架 前言 在之前的文章中我们介绍了如何进行流式处理——从一般性的概念和模式说起,并列举了一些Streams的例子: 流式处理相关概念总结说明流式处理设计模式总结说明Kafka Streams 架构概览 接下来的文章将介绍…...
2024年软件测试岗必问的100+个面试题【含答案】
一、基础理论 1、开场介绍 介绍要领:个人基本信息、工作经历、之前所做过的工作及个人专长或者技能优势。扬长避短,一定要口语化,语速适中。沟通好的就多说几句,沟通不好的话就尽量少说两句。举例如下: 面试官你好&…...
A4-C四驱高防轮式巡检机器人
在当今数字化和智能化迅速发展的时代,旗晟智能带来了一款革命性的创新产品——A4-C四驱高防轮式巡检机器人。这款机器人以其卓越的性能和多功能性,为工业巡检领域带来了全新的解决方案。 一、产品亮点 1、四驱动力与高防护设计 四驱高防轮式巡检机器人…...
Https网站如何申请免费的SSL证书及操作使用指南
前言 在当今互联网环境下,HTTPS已成为网站安全的标配,它通过SSL/TLS协议为网站数据传输提供加密,保障用户信息的安全。申请并部署免费SSL证书,不仅能够提升网站的专业形象,还能增强用户信任。本文将详细介绍如何在知名…...
实现资产优化管理:智慧校园资产分类功能解析
在构建智慧校园的过程中,细致入微的资产管理是确保教育资源高效运作的关键一环,而资产分类功能则扮演着举足轻重的角色。系统通过精心设计的分类体系,将校园内的各类资产,从昂贵的教学设备到日常使用的办公物资,乃至无…...
大厂开发必知必会:Devops、CI/CD、流水线和Paas的关系解析说明
为什么作为程序开发人员需要了解ci/cd流程和原理? 作为程序开发人员,了解CI/CD(持续集成/持续交付)的流程和原理具有以下几个重要的理由: 1. 提高代码质量和稳定性 自动化测试:CI/CD流程中集成了自动化测…...
Qt学习:Qt窗口组件以及窗口类型
一、Qt的窗口组件有哪些 Qt是一个跨平台的C应用程序开发框架,它的窗口组件,也称为用户界面元素,为开发者提供了丰富的可视化界面设计选项。在Qt中,窗口组件主要包括: 窗口(Window):…...
基于AGX ORIN与FPGA K7实现PCIE高速数据通信/Orin与FPGA高速数据传输/XDMA在linux系统使用教程
因最近想学习AGX orin和FPGA实现数据高速通信,借此机会和大家一起学习AGX orin和FPGA 制作不易,记得三连哦,给我动力,持续更新!!! 完整工程文件下载:AGX orin与FPGA实现PCIE完整…...
Vue3:全局播放背景音乐
说明:一个全局播放的背景音乐,首页无音乐无音乐图标,在首页互动跳转页面并开始播放音乐,切换页面不需暂停音乐也不会重置音乐,可以通过音乐图标控制暂停或播放。 MusicPlay.vue(音乐组件) <…...
2024年07月03日 Redis部署方式和持久化
Redis持久化方式:RDB和AOF,和混合式 RDB:周期备份模式,每隔一段时间备份一份快照文件,从主线程Fork一个备份线程出来备份,缺点是会造成数据的丢失。 AOF:日志模式,每条命令都以操作…...
成都仅需浏览器即可快速查看的数据采集监控平台!
LP-SCADA数据采集监控平台无需额外客户端,只需要一个标准的Web浏览器,用户可以迅速访问系统并开始使用,同时支持跨平台访问。一个用户可监控多个过程,多个用户可以监控同一过程,真正实现了数据的开放性及过程信号的透明…...
LLM - 神经网络的训练过程
1. 对于回归问题,用损失函数来计算预测值和真实值的差异,一种常用的公式是如下图所示(Mean Square Error),如果损失函数的值越小说明神经网络学习越准确,所以神经网络训练目标是减小损失函数的值, 2. 对于分类问题&…...
【全网最全ABC三题完整版】2024年APMCM第十四届亚太地区大学生数学建模竞赛(中文赛项)完整思路解析+代码+论文
我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合…...
Python | Leetcode Python题解之第213题打家劫舍II
题目: 题解: class Solution:def rob(self, nums: List[int]) -> int:def robRange(start: int, end: int) -> int:first nums[start]second max(nums[start], nums[start 1])for i in range(start 2, end 1):first, second second, max(fi…...
揭秘数据之美:【Seaborn】在现代【数学建模】中的革命性应用
目录 已知数据集 tips 生成数据集并保存为CSV文件 数据预览: 导入和预览数据 步骤1:绘制散点图(Scatter Plot) 步骤2:添加回归线(Regression Analysis) 步骤3:分类变量分析&…...
【宠粉赠书】UML 2.5基础、建模与设计实践
为了回馈粉丝们的厚爱,今天小智给大家送上一套系统建模学习的必备书籍——《UML 2.5基础、建模与设计实践》。下面我会详细给大家介绍这本书,文末留有领取方式。 图书介绍 《UML 2.5基础、建模与设计实践》以实战为主旨,结合draw.io免费软件…...
Python中几个重要的集合
Python中几个重要的集合(Collection)类型,包括列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary) 1. 列表(List) 说…...
【JS】纯web端使用ffmpeg实现的视频编辑器-视频合并
纯前端实现的视频合并 接上篇ffmpeg文章 【JS】纯web端使用ffmpeg实现的视频编辑器 这次主要添加了一个函数,实现了视频合并的操作。 static mergeArgs(timelineList) {const cmd []console.log(时间轴数据,timelineList)console.log("文件1",this.readD…...
解决Python用xpath爬取不到数据的一个思路
前言 最近在学习Python爬虫的知识,既然眼睛会了难免忍不住要实践一把。 不废话直接上主题 代码不复杂,简单的例子奉上: import requests from lxml import etreecookie 浏览器F12网络请求标头里有 user_agent 浏览器F12网络请求标头里有…...
C#面:如何把一个array复制到arrayist里
要将一个数组复制到ArrayList中,可以使用ArrayList的AddRange方法。以下是一个示例代码: int[] array { 1, 2, 3, 4, 5 }; ArrayList arrayList new ArrayList(); arrayList.AddRange(array); 在上面的代码中,我们首先创建了一个整数类型…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
java调用dll出现unsatisfiedLinkError以及JNA和JNI的区别
UnsatisfiedLinkError 在对接硬件设备中,我们会遇到使用 java 调用 dll文件 的情况,此时大概率出现UnsatisfiedLinkError链接错误,原因可能有如下几种 类名错误包名错误方法名参数错误使用 JNI 协议调用,结果 dll 未实现 JNI 协…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
