软件设计不是CRUD(22):在流式数据处理系统中进行业务抽象落地——设计思考

(接上文《软件设计不是CRUD(21):在流式数据处理系统中进行业务抽象落地——需求分析》)

那么思考到这里我们就能做一些关于设计思路的总结:

  • 每一个独立的数据处理流,就是数据采集系统中的一个功能。这个功能具备一个静态的控制逻辑(当然控制逻辑也可以是动态的,本文不进行讨论)。只要某个IoT设备/设备网关的数据处理过程匹配控制逻辑本身,那么IoT设备/设备网关就可以通过这个数据处理流进行数据采集。

  • 为了让一个数据流能最大程度支持更多具体数据结构的数据采集工作,数据处理流都会进行模型抽象和行为抽象,以便让具体的IoT设备/设备网关可以实现具体的模型和具体的行为(业务逻辑)。

  • 这样一来,当新的IoT设备/设备网关需要进行数据采集时,首先可以寻找现有的各个数据处理流,是否匹配新的IoT设备/设备网关的数据结构。如果匹配,就可以在实现这个数据处理流的抽象模型和抽象行为,以便进行接入;如果没有,则再创建新的数据处理流(新的数据处理流也应该进行模型抽象和行为抽象)。

  • 而以上新数据类型的采集能力接入,完全不会影响其它数据处理流的工作,也不会影响同一数据处理流对其它数据类型的采集工作。只需要在完成具体模型和具体行为的实现后,通过诸如Jenkins这样的自动化部署工具重新发布数据处理流即可。

3、设计落地

3.1、整体设计思考

下图是数据采集系统的核心设计结构
在这里插入图片描述

  • 数据汇聚层的设计思考

数据汇聚层提供两种数据汇聚能力,一种能力是支撑下层IoT设备/设备网关主动发送数据的能力,数据汇聚层提供Kafka或者Logstash作为数据的接收组件,下层IoT设备/设备网关在主动发送数据时,不需要保证数据一定满足某种规范结构,只需要保证发送的数据是可以序列化的即可。数据发送者还需要保证不同类型的IoT设备/设备网关发送到不同的分组汇总,例如如果采用Kafka接受监控数据,那么不同的数据将被推送到不同的Kafka-Topic中。

数据汇聚层还提供了一个主动向下采集数据的代理程序,这个代理程序主要是服务于那些不能主动推送数据的IoT设备/集中设备,以便周期性从这些设备中取得监控数据。根据需要取得的数据不同、下层设备提供的接入方式不同,代理程序中又提供了很多种不同的数据抓取方式。例如如果下层设备支持Http协议,那么可以通过Selenium组件采集数据;如果下层设备只支持TCP/UDP传输层协议,那么可以通过Nessus/Nmap这种扫描组件进行数据采集……

代理程序完成采集后,数据将被推送到数据汇聚组件中。需要注意的是,除了在采集代理程序中设定了相关(完善)规则的数据以外,默认情况下代理程序采集到了什么样的数据,就会向数据汇聚组件中推送什么样的数据,并不会要求这些数据一定需要满足什么样的结构、格式。

  • 数据采集处理层的设计思考

数据采集处理层部署了一套Flink集群,这套Flink集群是数据采集系统进行数据收集、数据过滤、数据清洗、数据完善和数据落库操作的核心集群。这个Flink集群中各个独立的数据流都具有不同的工作逻辑,可以支持具有相同数据采集过程的一个或者多个IoT设备/设备网关。Flink集群中如何进行数据流设计,也是本文主要讨论的内容。

  • 数据层的设计思考

经过初步处理的,用于后续正式数据分析的数据,需要进行落库保存。由于主要是为数据分析服务,所以我们选择一种湖仓一体化的OLAP型数据库进行数据落库,技术选型为Starrocks。由于Starroks原生支持从Kafka中主动拉取数据进行存储,也支持通过诸如JDBC这样的外部连接进行数据操作,那么从Flink-Sink端存储数据到Starrock就至少有两种方式。方式一,从Flink-Sink推送数据到Kafka,然后在Starrocks中创建数据表,再设定从Kafka中特定的Topic中拉取数据,如下图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式技术学习——c51单片机——蜂鸣器

一、蜂鸣器介绍 蜂鸣器时一种将电信号转化成声音信号的器件,常用来产生设备的按键音,报警音等提示信号。 蜂鸣器分为有源蜂鸣器,无源蜂鸣器 。 有源蜂鸣器:内部自带震荡源,将正负极街上直流电压即可持续发声&#x…

深度学习(十)——神经网络:非线性激活

一、Padding Layers简介 nn.ZeroPad2d:在输入的tensor数据类型周围用0进行填充 nn.ConstantPad2d:在输入的tensor数据类型周围用常数进行填充 这个函数的主要作用是对输入的图像进行填充,但里面所有功能都能用nn.Conv2d实现。 二、Non-li…

一文读懂OpenGVLab带来的最新视觉预训练框架

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调或者LLM背后的基础模型重新阅读。而最新科技(Mamba,xLSTM,KAN)则…

.NET周刊【6月第3期 2024-06-18】

国内文章 记一次 .NET某游戏币自助机后端 内存暴涨分析 https://www.cnblogs.com/huangxincheng/p/18243233 文章讨论了程序中非托管内存暴涨的问题。作者描述了友人发现内存问题并请他帮助分析的背景,利用WinDbg工具分析Linux平台上的内存泄漏情况。文章介绍了如…

潮玩宇宙大逃杀APP系统开发成品案例分享指南

这是一款多人游戏,玩家需要选择一个房间躲避杀手。满足人数后,杀手会随机挑选一个房间杀掉里面所有的参与者,其他房间的幸存者将平均瓜分被杀房间的元宝。玩家在选中房间后,倒计时结束前可以自由切换不同房间。 软件项目开发成品…

LabVIEW开发为什么沟通需求非常重要

在LabVIEW开发项目中,需求沟通是项目成功的基石。以下是需求沟通的重要性及其原因: 明确项目目标: 定义清晰的目标:通过与用户的沟通,可以明确项目的目标和范围,确保开发团队理解用户的实际需求&#xff0c…

【Android-Compose】流式布局FlowRow 不能居中对齐的一种解决办法

问题描述: 在安卓Compose 开发中使用LazyColumn 流式布局 FlowRow 有时候比延迟网格布局更灵活,但是也可能出现自动流向下一行之后,末尾处留下一些小空白。如图: 问题解决: 为了尽可能居中对齐,我们可…

专业技能篇---计算机网络篇

文章目录 前言计算机网络基础一、网络分层模型 HTTP一、从输入URL到页面显示发生了什么?二、Http的状态码有哪些?三、 HTTP与HTTPS有什么区别?四、URI 和 URL 的区别是什么?五、Cookie和Session有什么区别?六、GET与POST 前言 主…

dmhs同步因目的端表自增列报错解决方法

dmhs同步因目的端表自增列报错解决方法 1 dmhs copy 装载数据时报错 HY000 CODE:-27232 配置源端捕获器cpt 1 dmhs copy 装载数据时报错 HY000 CODE:-2723 ERR:Only if specified in the column list and SET IDENTITY INSERT is ON, then identity column could be assigned …

洛谷 P3379:最近公共祖先(LCA)← RMQ+欧拉序

【题目来源】https://www.luogu.com.cn/problem/P3379【题目描述】 如题,给定一棵有根多叉树,请求出指定两个点直接最近的公共祖先。【输入格式】 第一行包含三个正整数 N,M,S,分别表示树的结点个数、询问的个数和树根结点的序号。 接下来 N−…

AI大模型的战场:通用大模型VS垂直大模型,谁会赢?

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

二、利用YOLOv8解决现实世界的问题

Ultralytics Solutions提供顶尖的YOLO模型应用,提供现实世界的解决方案如:目标记数,模糊和安全系统,提升效率和准确率在各种工业中。探索YOLOv8在实用性和有效性上的强大功能。 解决方案: 下面展示利用Ultralytics So…

使用vscode插件du-i18n处理前端项目国际化翻译多语言

前段时间我写了一篇关于项目国际化使用I18n组件的文章,Vue3 TS 使用国际化组件I18n,那个时候还没真正在项目中使用,需求排期还没有定,相当于是预研。 当时就看了一下大概怎么用,改了一个简单的页面,最近需…

【Python系列】Python 中的日期和时间处理

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Vue3模拟国足18强赛抽签

Vue3国足18强赛抽签 国足遇到这个对阵&#xff0c;能顺利出现吗&#xff1f; 1、系统演示 Vue3模拟国足18强赛抽签 2、关键代码 开始抽签 <script setup> import FenDang from "/components/chouqian/FenDang.vue"; import {ref} from "vue";le…

看完轻松解决家里灰尘毛絮多难题?除粉尘的空气净化器品牌分享

家里的空气中弥漫着灰尘和毛絮&#xff0c;让人呼吸不畅&#xff0c;也影响着家人的健康。灰尘中含有各种有害物质&#xff0c;如细菌、病毒、花粉等&#xff0c;长期吸入会导致呼吸道疾病、皮肤过敏等问题。尤其是对于有宠物、孩子、过敏人群来说&#xff0c;空气质量更是至关…

关于办公软件的使用

第一部分&#xff1a; 常用函数的使用 在使用的地方&#xff0c;输入SUM(B2:F2)回车 第二部分&#xff1a; 自定义函数的使用 1、打开 宏编辑 2、 自定义函数方法 3、自定义函数的使用和常用函数一样&#xff1a; 在使用的地方&#xff0c;输入计算面积(A3&#xff0c;B3)…

游戏试玩站打码zq平台系统可运营的任务网源码

安装说明 1.恢复数据&#xff1b; 2.数据连接库配置路径&#xff1a;protected\config\mail.php 文件中修改第60行 &#xff08;记得不要用记事本修改&#xff0c;否则可能会出现验证码显示不了问题&#xff0c;建议用Notepad&#xff09; 3.浏览器访问输入 127.0.0.2 显示界…

Hype4.0 for Mac软件下载-Hype for Mac HTML5 创作工具下载附加详细安装步骤

Hype 4 Pro Mac正式版是款功能实用的动画创作工具。Hype 4 Pro Mac最新版可以帮您轻松创建令人惊叹的动画和交互式网页内容。并且Hype 4 Pro Mac还可被设计师用来创建动画&#xff0c;为网页、信息图形、演示文稿、数字杂志、广告、iBooks、教育内容、应用程序原型、作品集、动…

Flume基础教程

Apache Flume教程 资料来源&#xff1a;Apache Flume - Introduction (tutorialspoint.com) Flume是一个标准的、简单的、健壮的、灵活的、可扩展的工具&#xff0c;用于将从各种数据生产者(web服务器)中所产生的数据抽取到Hadoop中。在本教程中&#xff0c;我们将使用简单的…