读构建可扩展分布式系统:方法与实践14流处理系统

1. 流处理系统
1.1. 时间就是金钱
-
1.1.1. 从数据中提取有价值的知识和获得洞见的速度越快,就能越快地响应系统所观察的世界的变化
-
1.1.2. 信用卡欺诈检测
-
1.1.3. 网络安全中异常网络流量的捕获
-
1.1.4. 在支持GPS的驾驶应用程序中进行的实时路线规划
-
1.1.5. 社交媒体网站上的热门话题识别
1.2. 需要对最近的一组观察结果进行计算
- 1.2.1. 此类计算对时间很敏感,需要访问最近的相关数据
1.3. 传统上,可以通过将外部提供的数据保存到数据库并设计可提取所需信息的查询来构建此类应用程序
1.4. 需要从数据库和索引中获得快速、可扩展的写入性能,来实现低延迟聚合读取和最近数据点的连接
- 1.4.1. 有时“终于”是在漫长的等待之后到来的,在当今世界,迟到的结果(即使迟到几秒钟)与根本没有结果一样糟糕
1.5. 面对来自传感器、设备和用户的海量数据源的数量不断增加,我们出现了一种被称为流处理系统的新技术
-
1.5.1. 流处理系统旨在提供在内存中处理数据流的能力,而无须通过持久化数据来获得所需的结果
-
1.5.2. 动态数据或实时分析
1.6. 流处理平台正在成为可扩展系统的常见部分
1.7. 流系统产生实时相关结果的能力在许多应用领域都极具吸引力
-
1.7.1. 可以实时转换、聚合和分析传入的数据
-
1.7.2. 应用程序可以根据时间窗口或消息量对有限批次的数据执行分析
-
1.7.3. 使得识别数据趋势并根据最新数据窗口中的值计算指标成为可能
1.8. 利用许多流平台来构建可容错、可扩展的应用程序
-
1.8.1. 可扩展性是通过将逻辑数据流应用程序架构转换为一个集群中与之物理等价的跨计算资源分布和连接的处理节点来实现的
-
1.8.2. 容错机制持久保存处理节点的状态并跟踪哪些消息已通过完整的数据流应用程序成功处理
- 1.8.2.1. 当发生故障时,可以从第一个未完成的消息重新启动流
2. 流处理简介
2.1. 自从软件系统问世以来,批处理就在处理新的可用数据方面发挥了重要作用
-
2.1.1. 批处理是大型系统的一个可靠有效的重要组成部分
-
2.1.2. 缺点是新数据从到达到可用于查询和分析存在时间差
2.2. 在批处理系统中,代表新的和更新后的对象的原始数据会被累积到文件中
2.3. 一个被称为批处理数据加载任务的软件组件会定期处理这些新的可用数据,并将其插入应用程序的数据库中
-
2.3.1. 称为ETL(提取、转换、加载)流程
-
2.3.2. ETL的意思是处理包含新数据的批处理文件,将数据聚合并转换为适合插入存储层的格式
2.4. 流系统可以实时处理新数据和事件
-
2.4.1. 使用支持向量机等快速统计模型预测技术来评估交易是否具有潜在欺诈性
-
2.4.2. “实时”高度依赖于应用程序,处理延迟可能从不到一秒至几秒不等
-
2.4.3. 流系统也可以对一批批的或一个个窗口的新数据进行处理
- 2.4.3.1. 微批次
2.5. 批处理和流处理架构,以及像Lambda架构这样的混合架构在现代可扩展系统中都有自己的地位
2.6. Lambda架构
-
2.6.1. 诞生于2011年左右,作为一种结合了传统批处理和新兴流处理方法的混合体
-
2.6.2. 批处理层
-
2.6.2.1. 该层定期处理大量新事件数据并更新应用程序的数据库
-
2.6.2.2. 在Lambda刚出现时,用于可扩展批处理的主导技术是Apache Hadoop
-
2.6.2.3. 与任何批处理系统一样,数据库更新频率大约为几分钟到几小时,具体取决于批处理的频率
-
-
2.6.3. 速度层
-
2.6.3.1. 该层通过处理新到达的事件以提供低延迟结果来补充批处理层
-
2.6.3.2. 定期批处理的数据正在累积时,速度层会处理相关事件,从而能快速了解最新的数据
-
2.6.3.3. 将速度层视为处理新数据和服务层更新造成的高延迟补偿
-
2.6.3.4. Apache Storm是一种广泛用于速度层的技术
-
-
2.6.4. 服务层
-
2.6.4.1. 该层是批处理层和速度层存储结果的地方,它负责处理查询和生成结果
-
2.6.4.2. 结果可以基于批处理层或速度层的输出,或基于将两者结合的计算结果
-
3. 流处理平台
3.1. 数据通常是队列或者分布式存储系统中的文件
3.2. 流处理节点从数据源中提取数据对象并执行转换、聚合和特定于应用的业务逻辑
-
3.2.1. 节点被组织为有向无环图(DAG)
-
3.2.2. 来自数据源的数据对象作为流来处理
-
3.2.3. 数据流是单个数据对象的无限序列
3.3. 在概念上,数据对象是在处理节点之间传递或流动的,因此流应用程序也被称为数据流系统
3.4. 流处理系统为处理节点提供了将一个节点处的输入流转换为由一个或多个下游节点处理的新流的能力
3.5. 流处理应用程序有两种常见的风格
-
3.5.1. 简单地处理和转换流中的单个事件,不需要每个事件的任何上下文或状态
-
3.5.2. 有些流应用程序需要维护在处理流中各个数据对象的过程中持续存在的状态
- 3.5.2.1. 有状态流应用程序
3.6. 流处理平台需要能够使应用程序扩展处理能力以及具备故障快速恢复的能力
- 3.6.1. 通常通过跨计算资源集群执行多个处理节点实例,并实现状态检查点机制以支持故障恢复来实现
3.7. Apache Storm是一个功能强大且可扩展的流处理平台
4. Apache Flink
4.1. 诞生于2014年,基于European Union Stratosphere项目中的原始研究
4.2. Flink的核心是一个分布式流处理系统,专为高吞吐量和低延迟而设计
-
4.2.1. Flink提供了一组操作,用于过滤、聚合、映射和连接来自数据源的数据流
-
4.2.2. 与明确定义的Apache Storm拓扑不同,Flink程序被编译并自动转换为可以部署在集群计算环境中的数据流程序
4.3. Flink还支持两种基于关系概念的API,即Table和SQL API
4.4. Data Stream API
-
4.4.1. Flink DataStream API为Java和Scala系统提供流处理功能
-
4.4.2. 可以利用丰富的流处理操作来拆分、过滤、聚合和转换事件流,并使用有界时间窗口创建周期性的批处理流事件
-
4.4.3. 在Flink中,数据流是类型化事件流的逻辑表示,即Java中的DataStream<T>
-
4.4.4. Flink支持包括文件在内的多种本地数据源,并具有用于各种外部技术的连接器
-
4.4.5. 窗口操作定义了有限的事件集合的边界并对这组事件执行操作
4.5. 可扩展性
-
4.5.1. Flink程序会被转换成一个逻辑DAG(有向无环图)
-
4.5.2. 数据流通过代码中定义的转换从源移动到接收器
-
4.5.3. 可以使用执行环境对象为程序中的所有算子、数据源和数据接收器指定默认的并行度级别
-
4.5.4. 常见的策略是分配与每个任务管理器节点上可用CPU内核相同数量的插槽
-
4.5.5. Flink实现了一个复杂的转换算法,将逻辑DAG映射到可用的物理资源
- 4.5.5.1. 包括了算子链的优化,将算子并置在单个任务槽中,最大限度地减少数据通信成本
4.6. 数据安全
-
4.6.1. 故障处理是任何流处理系统都需要考虑的问题
-
4.6.2. 如果部署的一部分流应用程序由于某个节点崩溃、网络故障或应用程序异常而发生故障,保存在内存中的任何状态都会丢失
-
4.6.3. 两种支持数据安全的机制
- 4.6.3.1. 持久化状态存储和定期为完整流调用检查点
-
4.6.4. 需要配置有状态的算子以定期将其状态保存为键值对
- 4.6.4.1. 所有算子的快照都是基于对来自流源的完全相同的输入事件的处理
-
4.6.5. 持久存储使得在流处理失败的情况下可以从快照恢复状态
-
4.6.6. Flink使用流屏障(stream barrier)确保快照是一致的
-
4.6.6.1. 一旦屏障在所有输入上传递到流接收器,检查点就被标记为完成
-
4.6.6.2. 检查点可以有效提高Flink应用程序的容错能力
-
-
4.6.7. Flink通过配置各种参数来控制何时触发检查点
- 4.6.7.1. 一个经常使用的参数是检查点之间的最短时间间隔
相关文章:
读构建可扩展分布式系统:方法与实践14流处理系统
1. 流处理系统 1.1. 时间就是金钱 1.1.1. 从数据中提取有价值的知识和获得洞见的速度越快,就能越快地响应系统所观察的世界的变化 1.1.2. 信用卡欺诈检测 1.1.3. 网络安全中异常网络流量的捕获 1.1.4. 在支持GPS的驾驶应用程序中进行的实时路线规划 1.1.5. 社交…...
C++第2课——取余运算符的应用、浮点型和字符型(含视频讲解)
文章目录 1、课程笔记2、课程视频 1、课程笔记 /* #include<iostream> using namespace std; int main(){//cout<<"hello,world!";//运算符的优先级 () * / % -// 3/2 1...1 3%21 5%32 3%53 -3%2-1 3%-21//cout<<6/4%2;//int 向下取整6…...
SQL常用技巧总结
查询优化基本准则 1、ORACLE 的解析器按照从右到左的顺序处理 FROM 子句中的表名,因此 FROM 子句中写在最后的表(基础表 driving table)将被最先处理。 在FROM 子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。 例如: 表 T…...
AJAX(简介以及一些用法)
AJAX 1. 简介 什么是 Ajax Ajax 的全称是 Asynchronous JavaScript And XML (异步 JavaScript 和 XML )我们可以理解为:在网页中 利用 XMLHttpRequest 对象和服务器进行数据交互的方式就是 Ajax ,它可以帮助我们轻松实现网页…...
美畅物联丨GB/T 28181系列之TCP/UDP被动模式和TCP主动模式
GB/T 28181《安全防范视频监控联网系统信息传输、交换、控制技术要求》作为我国安防领域的重要标准,为视频监控系统的建设提供了全面的技术指导和规范。该标准详细规定了视频监控系统的信息传输、交换和控制技术要求,在视频流传输方面,GB/T 2…...
机器学习之实战篇——图像压缩(K-means聚类算法)
机器学习之实战篇——图像压缩(K-means聚类算法) 0. 文章传送1.实验任务2.实验思想3.实验过程 0. 文章传送 机器学习之监督学习(一)线性回归、多项式回归、算法优化[巨详细笔记] 机器学习之监督学习(二)二元逻辑回归 …...
轴承介绍以及使用
轴承(Bearing)是在机械传动过程中起固定、旋转和减小载荷摩擦系数的部件。也可以说,当其它机件在轴上彼此产生相对运动时,用来降低运动力传递过程中的摩擦系数和保持转轴中心位置固定的机件。 轴承是当代机械设备中一种举足轻重的…...
【JAVA】算法笔记
一、ArrayList ArrayList类是一个可以动态变化的数组,与普通数组的区别就是它没有固定的长度。 ArrayList<String> arrList new ArrayList<String>(); arrList.add("吐泡泡"); System.out.println(arrList.get(0)); arrList.set(0,"J…...
Gnu Radio抓取WiFi信号,流程图中模块功能
模块流程如图所示: GNURadio中抓取WiFi信号的流程图中各个模块的功能: UHD: USRP Source: 使用此模块配置USRP硬件进行信号采集。设置频率、增益、采样率等参数。Complex to Mag^2: 将复数IQ数据转换为幅度的平方。Delay…...
GO语言中make与new的区别
区别 1 make不仅分配内存,还会初始化。 new只会分配零值填充的值2make只适用slice,map,channel的数据,new 没有限制3make返回原始类型(T),new返回类型的指针(*T) 源码中定义的区别 func make(t Type,size …IntegerType) Type func new(Type) *Type f…...
安全运维类面试题
1、你熟悉哪些品牌的安全设备 答:天融信的ngfw防火墙,老牌防火墙厂商,功能比较齐全,像流量检测,web应用防护和僵木蠕等模块都有,界面是红白配色,设计稍微有点老 2、IPS用的是哪个牌子的 答&…...
STM32外设之LTDC/DMA2D—液晶显示(野火)
文章目录 显示屏有几种?基本参数控制?显存 LTDC 液晶控制器LTDC 结构框图LTDC 初始化结构体 LTDC_InitTypeDefLTDC 层级初始化结构体 DMA2D 图形加速器DMA2D 初始化结构体 要了解什么 屏幕是什么,有几种屏,有什么组成。 怎么控制,不同屏幕控…...
调试vue build之后的js文件
调试 dist 目录下的 JavaScript 文件可以按照以下步骤进行: 1. 确保 Source Maps 正常生成 确认你的构建配置中已启用 Source Maps,确保 .map 文件与构建后的 .js 文件位于同一目录。 2. 启动一个本地服务器 使用本地服务器来服务 dist 目录…...
Django一分钟:DRF快速实现JWT认证与RBAC权限校验
一、项目创建并实现JWT认证 1. 下载依赖 下载django、djangorestframework、djangorestframework_simplejwt pip install django djangorestframework djangorestframework_simplejwt2. 创建项目 启动Django项目 django-admin startproject <myproject> cd myprojec…...
面试题(六)
48、设计模式 49、继承是否会破坏封装? 继承在面向对象编程中是一个重要的概念,但它确实可能对封装产生影响,具体情况取决于如何使用继承。以下是对这个问题的分析: 封装的定义 封装是面向对象编程中的一个基本原则࿰…...
CSS 实现文本溢出省略号显示,含单行与多行文本溢出
🚀 个人简介:某大型国企资深软件研发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养ǹ…...
Redis中String命令的基础操作
文章目录 Redis中String命令的基础操作一、引言二、String类型的基础命令1、设置与获取值1.1、SET命令1.2、GET命令 2、字符串操作2.1、APPEND命令2.2、GETRANGE命令2.3、SETRANGE命令2.4、STRLEN命令 3、数值操作3.1、INCR命令3.2、DECR命令3.3、INCRBY和DECRBY命令 三、应用场…...
策略模式+模版模式+工厂模式
工厂模式: (1)避免类中出现过多的组合依赖 (2)同时减少代码中出现过多的if...else if...语句 (2)将调用者跟我们的实现类解耦 模版模式: (1)功能复用 &…...
云计算平台层(PaaS)指的是什么?常见的应用场景盘点
云计算平台层(PaaS)指的是什么?云计算平台层(PaaS),全称PlatformasaService(平台即服务),是云计算服务的一种重要模式。为用户提供了一个基于云端的开发和部署环境,允许用户开发、运…...
搜索引擎简介
搜索引擎架构 整个搜索引擎分为三个系统 爬虫系统 索引系统 线上搜素服务 爬虫系统 爬虫分为两个阶段: 第一阶段:根据目标网站的列表页,爬对应的文档 URL 第二阶段:根据文档 URL,下载文档内容 触发器࿱…...
Flask核心进阶:路由、模板与静态文件实战
在掌握Flask入门知识后,想要开发出更具实用性和美观度的Web应用,就需要深入学习其核心进阶功能,其中路由、模板与静态文件是最基础也是最常用的三个模块,三者协同工作,构成了Flask Web应用的前端展示与请求分发体系。路…...
保姆级教程:用CH34xSerCfg修改USB转串口芯片的VID/PID,解决驱动冲突和串口号固定问题
嵌入式开发实战:用CH34xSerCfg定制USB转串口设备标识与驱动管理 当你的工作台上同时连接着五个相同型号的USB转TTL模块,Windows设备管理器里COM端口像走马灯一样随机变换编号时;当团队协作开发中,每个成员需要固定识别自己的调试设…...
【HarmonyOS 6.1 全场景实战】《灵犀厨房》之【营养分析引擎】计算个性化卡路里建议:给《灵犀厨房》装上“营养大脑”
【营养分析引擎】计算个性化卡路里建议:给《灵犀厨房》装上“营养大脑” 摘要:从“爱吃什么”到“该吃什么”,是《灵犀厨房》进化的关键一步。上一篇我们刚打通了 Health Kit 数据,今天,我们就要基于 Mifflin-St Jeor …...
Claude-Code-KnowCraft:轻量级代码知识库构建与智能问答实践
1. 项目概述与核心价值最近在跟几个做AI应用开发的朋友聊天,大家普遍有个痛点:想把Claude这类大语言模型(LLM)的能力深度集成到自己的代码库分析工具里,但发现现有的方案要么太重,要么太浅。太重的是指那些…...
AssetStudio完全指南:从Unity资源提取到专业应用的全流程教程
AssetStudio完全指南:从Unity资源提取到专业应用的全流程教程 【免费下载链接】AssetStudio AssetStudio - Based on the archived Perfares AssetStudio, I continue Perfares work to keep AssetStudio up-to-date, with support for new Unity versions and addi…...
EL线创客工作坊:从零到一的电致发光项目实践指南
1. 项目概述:为什么EL线工作坊是创客入门的绝佳选择如果你正在寻找一个能让新手快速上手、成品炫酷、且能完美融合电子与手工的创客项目,EL线工作坊几乎是一个无可挑剔的答案。EL,即电致发光,它不像LED那样依赖一个个分立的光点&a…...
基于Kubernetes Lease构建分布式部署锁:解决CI/CD环境下的资源竞争
1. 项目概述:从“clawfight”看一场被遗忘的社区技术博弈看到“2019-02-18/clawfight”这个标题,很多人的第一反应可能是困惑。它不像一个标准的软件项目名,没有清晰的版本号,也没有指明具体的技术栈。但恰恰是这种看似随意的命名…...
基于CircuitPython与加速度计的魔法9号球:嵌入式交互项目实践
1. 项目概述:当硬件遇上玄学,用代码打造你的专属“决策神器”在嵌入式开发的世界里,我们常常与传感器、显示屏和逻辑代码打交道,构建着一个个解决实际问题的智能设备。但谁说硬件项目就一定要严肃刻板?今天,…...
碳排放混合时间窗集装箱运输调度【附算法】
✨ 长期致力于集装箱运输VRP、混合时间窗、碳排放、多目标优化、NSGA-Ⅱ、蚁群算法研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)经济性与紧急性双目…...
All in Token, 移动,电信,联通,阿里,百度,华为,字节,Token石油战争,Token经济,百度要“重写”AI价值度量
AI Agent的价值,应该怎么被衡量? 2026年,AI行业的标志性拐点是Agent(智能体)快速普及。Agent作为核心生产力载体,将AI从Chatbot聊天模式带进主动执行的办事时代。 这个时候,如果我们还用旧尺子…...
