【流计算】流计算概论

前言

作者在之前写过一个大数据的专栏,包含GFS、BigTable、MapReduce、HDFS、Hadoop、LSM树、HBase、Spark,专栏地址:

https://blog.csdn.net/joker_zjn/category_12631789.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12631789&sharerefer=PC&sharesource=Joker_ZJN&sharefrom=from_link

流计算和大数据是紧密相关的,现在接那个大数据专栏,继续向下写流计算专栏。这是第一篇。

目录

1.什么是流计算

2.流计算的架构


1.什么是流计算

流计算,就是对流式数据的计算,是专门用来处理流式数据的。因此在聊流计算之前,我们要先明白什么是静态数据和流式数据。

静态数据:

静态数据不是实时产生的,是有一定历史的数据,静态数据一般是用来进行一些统计分析的,比如数据仓库中的数据就是典型的静态数据。再比如MapReduce做统计分析,存在HDFS中的数据也是静态数据。

流式数据:

流式数据其实就是动态数据,是实时产生的,其应用场景对实时性要求很高,基本上是要求需要对其做实时处理的数据。比如:

  • 物联网中的实时监测设备,诸如烟感、PM2.5监测、安防等设备,要对实时的流式数据做实时的分析,从而判断是否触发报警之类的操作。

  • 购物网站上的"可能感兴趣"的推荐,就是基于用户实时点击浏览产生的流式数据来给客户进行推荐的。

上面这样说只是一方面,其实仔细思考就会发现静态数据、动态数据之间没有很明确的边界,静态数据也会有新的数据进来,流式数据的业务场景中也有对历史数据计算的需求。

其实从业务场景上能更好的区分是不是流计算的场景,流计算的场景一句话就能概括:

大量数据实时产生,涌过来,从这些大量实时数据中计算出实时结果。

流式数据的特征:

  • 快速持续的到达

  • 来源众多、格式复杂

  • 数据量大,不太关注存储,一旦经过处理后,要么被丢弃,要么被归档存储。

2.流计算的架构

流数据的量大、产生的速度快、来源和格式杂,这些特点都是会拉低计算速度的点,所以流计算的核心就是要就是要稳定可靠高效的处理流式数据。市面上的各种流计算框架针对这些核心问题,各自给出了自己的解法,常用的流计算框架:

  • twitter storm

  • spark strem

流计算是整个大系统的一环,接下来我们看看引入流计算的系统架构一般长什么样子。

以flink为例,展示一下流计算常见架构:

观察上面系统,可以发现引入流计算的系统架构一般有以下部分组成:

  • 数据采集

  • 数据传输

  • 数据处理

  • 数据存储

  • 数据展现

数据采集:

传感器、各个服务模块上的各个日志代理等。

数据采集在软件层面无非就是从浏览器、手机终端等设备将数据发给采集服务器。

采集服务器要接收数据,在性能上要有所考虑,关于性能无非以下点:

  • 吞吐量(TPS),要在IO模型上有所抉择,阻塞?非阻塞

  • 时延,有时延要求时首先要报时延,再说拉高吞吐量的事儿

  • TCP连接,当有大量连接需要维持时,用非阻塞IO服务器,如netty;当连接数量较少时,用长连接和连接池

数据传输:

负责数据的流转,数据总线,一般用MQ来实现,数据传输要关注的点:

  • 吞吐量,流式数据的量大,吞吐量肯定要跟上,不能造成数据积压,数据才有实时性。
  • 可靠性,可靠性肯定要跟上,数据尽可能不要丢。

数据处理:

流计算的核心,也是流计算框架主要工作的环节,用计算引擎来对流进行:

  • 转化、清洗、转换

  • 计数、求和、均值、标准差、极值、聚合、关联、直方图等

数据存储:

根据自己的业务场景来决定计算出来的结果是否需要存储?如果要存储就要考虑自己业务场景的需求:

  • 数据量大不大?

  • 时延要求如何?

  • 吞吐量大不大?

然后来选择对应的存储介质,内存?关系型数据库?非关系型数据库?分布式文件系统?等等等等

3.常见流计算场景

以下是流式计算的一些典型应用场景:

  • 实时数据分析
    • 金融交易:实时监测市场波动、交易异常和欺诈检测。
    • 物联网(IoT):实时处理传感器数据,监控设备状态,触发警报。
  • 日志处理与监控
    • 系统监控:实时监控服务器日志,快速发现并处理系统故障。
    • 应用性能管理(APM):实时分析应用日志,优化性能瓶颈。
  • 社交媒体分析
    • 趋势分析:实时分析社交媒体上的热点话题和用户情绪。
    • 推荐系统:根据用户实时行为更新推荐内容。
  • 网络安全
    • 入侵检测:实时分析网络流量,识别潜在的安全威胁。
    • 异常检测:监控网络活动,及时发现异常行为。
  • 电子商务
    • 库存管理:实时更新库存信息,避免超卖情况。
    • 订单处理:实时跟踪订单状态,提高客户满意度。
  • 智能制造
    • 生产监控:实时监控生产线状态,提高生产效率。
    • 预测性维护:通过分析机器运行数据,提前预测并预防故障。
  • 交通与物流
    • 交通管理:实时分析交通流量,优化交通信号控制。
    • 物流追踪:实时更新货物位置,提高物流效率。
相关推荐
WeeJot嵌入式24 分钟前
大数据治理:确保数据的可持续性和价值
大数据
zmd-zk1 小时前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
激流丶1 小时前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
测试界的酸菜鱼2 小时前
Python 大数据展示屏实例
大数据·开发语言·python
时差9532 小时前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
Mephisto.java2 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
Mephisto.java2 小时前
【大数据学习 | kafka高级部分】kafka的优化参数整理
大数据·sql·oracle·kafka·json·database
道可云2 小时前
道可云人工智能&元宇宙每日资讯|2024国际虚拟现实创新大会将在青岛举办
大数据·人工智能·3d·机器人·ar·vr
成都古河云2 小时前
智慧场馆:安全、节能与智能化管理的未来
大数据·运维·人工智能·安全·智慧城市
软工菜鸡2 小时前
预训练语言模型BERT——PaddleNLP中的预训练模型
大数据·人工智能·深度学习·算法·语言模型·自然语言处理·bert