读构建可扩展分布式系统:方法与实践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,下载文档内容 触发器࿱…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
