当前位置: 首页 > news >正文

第1章 物联网模式简介---独特要求和体系结构原则

物联网用例的独特要求

物联网用例往往在功耗、带宽、分析等方面具有非常独特的要求。此外,物联网实施的固有复杂性(一端的现场设备在计算上受到挑战,另一端的云容量几乎无限)迫使架构师做出艰难的架构决策和实施选择。可用实现技术的多样性和缺乏完善的标准是额外的挑战,使体系结构决策变得困难。

本书试图通过识别可以支持这些用例的架构之间的共性,来缓解与构建物联网用例相关的一些挑战。重要的是不要被用例的多样性所蒙蔽,并认识到多样性存在于表层和底层。

本书旨在通过展示如何将不同物联网用例的实现追溯到少数架构模式,弥合当前理解中的这一差距。 在介绍各种物联网模式之前,值得一提的是,物联网架构不同于非物联网架构的独特期望: 感知事件和驱动命令具有广泛的延迟预期——从实时到激发和忘记 数据分析结果需要在各种消费设备上报告/可视化/消费——手机、台式机、平板电脑等。同样,数据消费者有不同的背景、数据需求和应用程序角色(人物角色)。

人们经常被迫与传统以及尖端设备和/或外部系统集成——很少有琐碎的用例具有独立/独立的架构。从遗留系统和非遗留系统中提取数据的方式有很大的不同——遗留系统可能会在内部整理数据,然后将其推送到外部端口(文件传输),而较新的系统可能会以连续的流(时间序列数据)推送数据。这种可变性是选择特定物联网架构模式时的关键考虑因素之一。 不同的部署需求—边缘、内部部署、混合、云等等。 遵守严格的监管规定,尤其是在医疗和航空领域。 有人期望立即获得回报,投资回报率(ROI)、业务成果和新的服务业务模式。 持续创新,产生新的服务或产品(尤其是云供应商),迫使物联网架构与这些新产品或服务保持持续同步。 缺乏能够制定端到端物联网解决方案的熟练架构师——尽管可能有特定技能的人(设备架构师、连接架构师和云架构师);然而,很少有端到端的物联网架构师。 设备、设备连接、物联网协议或消息传输层没有通用标准,导致设备管理复杂。 通常,物联网堆栈不会孤立运行,任何非琐碎的部署物联网解决方案都需要与其他外部系统(ERP、AMDB、MES等)集成。即使在这里,也没有关于如何无缝集成这些系统的标准。外部系统通常比物联网部署早几十年,并且在没有考虑集成需求的情况下进行了大量定制。 从一个角度来看,物联网实施是一项流程自动化举措。一般来说,该过程是存在的,但是手动执行的,物联网有望部分或完全自动化该过程。

这些现有的工作流程没有记录在案,并且是流程从业者部落知识的一部分,这给物联网架构师带来了挑战,因为他们对流程和工作流程不清楚。因此,他们面临着一个两难的问题,即哪些子流程应该自动化以最大限度地提高ROI——他们必须决定是否满足于微小的改进(局部优化),并放弃通过考虑全局优化可以积累的好处。

设备生命周期管理在有氧医疗设备等领域是一个挑战,因为它们无法承受停机时间,但仍需要及时的固件更新(尤其是与安全修复相关的补丁,不能推迟到某个时间点之后)。 需要定期校准现场传感器是一个挑战。漂移速率因传感器而异,也因环境而异。有一种趋势是通过在边缘或云中应用AI/ML模型来补偿这种漂移,但这些步骤远非理想,因为它们缺乏准确性,并且可能没有充分考虑局部或环境条件。 依赖于位置信息的用例往往具有有限的可接受性,因为所有的位置传感器(室内或室外)具有有限的精度。 大量边缘处理的历史数据(几十年来积累的)迁移到云是另一个关键的架构挑战,在许多机器到机器(M2M)到物联网的转型计划中都看到了这一挑战。 所需的非功能性需求(NFR)(可扩展性、可用性、安全性、数据驻留/隐私等)值因用例而异,并增加了另一层复杂性。 物联网数据的消费者有不同的背景(例如,家庭自动化用户的信息需求与想要监测工厂正常运行时间的工业用户有很大不同,而工业用户的信息需要又与使用物联网进行自动化临床试验的辅助医疗人员的需求不同),因此他们有不同的操作和利用物联网系统的方式。尽管这似乎对设备UI设计有更大的影响,但它也会以微妙的方式影响解决方案架构。 在下一节中,我们将列出有助于您解决实施物联网解决方案的独特需求的架构原则或注意事项。

建议的体系结构原则和注意事项

确保体系结构一旦实现,即具有可扩展性、可修改性、鲁棒性和容错性的某些原则与物联网体系结构尤其相关。让我们来看看其中的一些: 基于开放通信协议构建,以支持不同的设备通信需求:因为物联网是真实(硬件)和虚拟(软件)领域的融合,每一个领域都以自己独立的速度发展。稳健的物联网架构应该足够灵活,以支持这两个领域当前和未来可能的增强功能——例如,一方面,设备/硬件方面的连接/电源功能不断进步,而另一方面,中央服务器方面在分析和AI/ML能力方面取得了进步。

        因此,现实世界和虚拟世界之间存在固有的阻抗失配(涉及这些增强的速率和性质)。物联网架构师不仅应该意识到这种不匹配,还应该纳入所需的考虑因素,以在更长的时间内支持用例需求。这些要求部分是通过遵循分层架构来处理的,通过分层架构,特定层中的组件可以插入或插入,对整体架构的影响最小。

        专为“端到端”安全设计:安全性是任何软件系统的重要考虑因素,尤其是在数据或命令通过公共通信信道进行通信的情况下。然而,就物联网而言,安全需要更深入的考虑,主要有两个原因:与虚拟/软件世界中的行动不同,在现实/物理世界中发起的行动是不能取消的:在有人检测到异常并采取纠正行动之前,一台灌溉泵被(恶意)指示开始在农田中抽水,它会泵出相当多的水。这与软件世界中的场景形成了鲜明对比,在软件世界中,一条简单的更新指令就足以撤消/滚动回溯数据库的更改。在医疗保健等领域,物联网系统通常控制人类生活(例如,由物联网系统控制的氧气呼吸机),情况可能更具灾难性。 与纯软件系统相比,攻击向量要广泛得多:这是因为需要保护完整的数据管道(终端设备>网关>通信通道>中央服务器>应用程序),并且数据管道中的每个实体都有不同的适用安全要求——终端设备(其固有的受限计算/存储能力)无法支持中央服务器所能支持的严格安全性,因此需要独立分析每个组件的安全漏洞和相关安全防护措施。 同样,数据在传输过程中以及在任何时候都应受到保护。

        通过“API-first”方法实现的企业集成:任何生产级物联网系统通常都会与其他外部系统集成,以提供全部价值。物联网系统整理的真实世界数据被输入(数据推送)到外部系统,以实现更丰富的用例。类似地,来自外部系统的数据(数据拉取)用于丰富整理后的数据。这种类型的集成是不可能的,除非物联网系统已经使用API-first作为核心架构租户之一进行架构设计,企业应用程序可以使用物联网数据。这些API还支持跨物联网和非物联网(即外部系统)的工作流。 满足不同的数据需求:物联网系统由不同的用户使用,每个用户都有不同的背景和信息需求。因此,重要的是要捕捉所有(当前和未来)利益相关者的原始数据需求,并以一种易于被不同利益相关者(人物角色)同化的方式呈现数据。

        基于角色的访问控制(RBAC)是一种向利益相关者显示所需信息,同时掩盖非相关信息的机制。此外,一些利益相关者将有实时数据需求(希望紧急警报实时通知的运营商),而其他利益相关者则希望从合并数据中获得见解(批量处理)。将数据摄取与数据处理解耦是使我们能够满足这一需求的一个原则。以下列出了一些其他数据整理/操作要求:来自制造执行系统(MES)和实验室信息管理系统(LIMS)等源的各种(结构化、半结构化和非结构化)操作数据应整合在边缘、云或两者的通用数据存储(数据湖)中。 出于可扩展性、效率和成本优化考虑,分离流式、批处理和正确的时间数据管道。数据生产者与消费者的解耦确保了强健的体系结构以及技术和实现选择的灵活性。 提供部署灵活性的技术中立架构:物联网系统可以部署在不同的配置中,如内部部署、公有云、私有云和/或混合多云配置,这取决于客户对安全的敏感性以及治理和监管需求。考虑到这一点,体系结构应该足够通用,可以满足不同的部署需求,并可以由多个技术堆栈支持。这通常是通过创建物联网参考体系结构(没有特定的技术选择),然后过渡到技术体系结构(其中通用体系结构组件被特定的技术组件取代)来实现的。 高可用性设计:尽管不同的物联网用例对高可用性的需求差异很大,但一些用例被归类为任务关键型用例,几乎没有停机预期,而另一些用例可以适应相当长的停机时间。中央服务器体系结构应该模仿正常运行时间的预期,因为通常情况下,停机时间越少,成本越高。在物联网的背景下,必须从整体系统的角度考虑高可用性。例如,在可以接受更长的中央服务器停机时间的情况下,终端设备需要具有更高的数据缓冲能力(即更大的存储空间),以最大限度地减少数据丢失。 支持“无限可扩展性”:物联网部署从少量终端设备开始,但往往在短时间内扩展到大量。因此,通常,在物联网解决方案中,水平可扩展性优先于垂直可扩展性 设备通信注意事项:数据通过网关和中央服务器之间的双向通信信道进行通信。该信道可以由多种通信技术支持(其中一些常见的技术是蜂窝、Wi-Fi、LoRa和SigFox)。范围(与中央服务器的物理距离)、有效载荷大小、电池寿命和环境噪声等因素在最终确定特定物联网实现的理想通信技术方面发挥着作用。设备侧的一些其他考虑因素包括在与中央服务器的连接丢失的情况下存储/缓冲数据的能力、用于节省电池电量的睡眠/唤醒逻辑以及数据聚合/过滤需求。 下图总结了本节中讨论的关键体系结构原则/注意事项:

图1.4-开发物联网解决方案的体系结构考虑因素

总结

本介绍性章节帮助您了解在开发或部署物联网解决方案时需要考虑的架构考虑因素。此外,本章提供了上下文知识,将帮助您理解本书中列出的模式。讨论了物联网解决方案与其他传统软件系统或IT解决方案不同的特征,以及关于物联网参考体系结构不同层的信息。在接下来的两章中,我们将深入探讨物联网架构模式。

相关文章:

第1章 物联网模式简介---独特要求和体系结构原则

物联网用例的独特要求 物联网用例往往在功耗、带宽、分析等方面具有非常独特的要求。此外,物联网实施的固有复杂性(一端的现场设备在计算上受到挑战,另一端的云容量几乎无限)迫使架构师做出艰难的架构决策和实施选择。可用实现技…...

数据挖掘概览

数据挖掘(Data Mining)就是从大量的,不完全的,有噪声的,模糊的,随机的实际应用数据中,提取隐含在其中的,人们事先不知道的,但又是潜在有用的信息和知识的过程. 预测性数据挖掘 分类 定义:分类就是把一些新的数据项映射到给定类别中的某一个类别 分类流程&#x…...

【学习】软件测试中常见的文档类型及其作用

在软件开发的生命周期中,软件测试是确保产品质量的关键步骤。为了系统地进行测试活动,并保证测试结果的有效性和可追溯性,产生了一系列标准化的测试文档。这些文档不仅为测试人员提供了执行指南,而且为项目管理者和利益相关者提供…...

electron的托盘Tray

1.在主进程文件background.js中引入需要的文件 import { Tray, Menu } from "electron"; const path require("path");2.获取托盘图标 const baseSRC process.cwd(); //这里不能使用__dirname,使用dirname会直接获取dist_electron中的文件,…...

Harmony OS UI框架探索笔记

本文探讨了如何将现有的常用架构理论与Arkts和ArkUI结合起来,使代码更有条理,并利用Previewer快速调整布局,同时在不改变代码的情况下运行显示真实数据。 开发环境 Windows 11DevEco Studio 4.0 ReleaseBuild Version: 4.0.0.600, built on…...

transformers evaluate

☆ Evaluate https://huggingface.co/docs/evaluate/main/en/installation ★ 解决方案 常用代码 # 查看支持的评估函数 evaluate.list_evaluation_modules(include_communityTrue)# 加载评估函数 accuracy evaluate.load("accuracy")# load function descripti…...

【ONLYOFFICE深度探索】:ONLYOFFICE桌面编辑器8.1震撼发布,打造高效办公新境界

文章目录 一、功能完善的PDF编辑器:解锁文档处理新维度二、幻灯片版式设计:释放创意,打造专业演示三、改进从右至左显示:尊重多元文化,优化阅读体验四、新增本地化选项:连接全球用户,跨越语言障…...

C++系统相关操作4 - 获取CPU(指令集)架构类型

1. 关键词2. sysutil.h3. sysutil.cpp4. 测试代码5. 运行结果6. 源码地址 1. 关键词 关键词: C 系统调用 CPU架构 指令集 跨平台 实现原理: Unix-like 系统: 可以通过 uname -m 命令获取 CPU 架构类型。Windows 系统: 可以通过环境变量 PROCESSOR_A…...

whisper 实现语音转文字

准备需要转码的音频 https://support.huaweicloud.com/sdkreference-sis/sis_05_0039.html 编码转吗的代码 import whisperif __name__ "__main__":file_path "16k16bit.wav"model whisper.load_model("small")result model.transcribe(f…...

使用VLLM部署llama3量化版

1.首先去魔塔社区下载量化后的llama3模型 git clone https://www.modelscope.cn/huangjintao/Meta-Llama-3-8B-Instruct-AWQ.git 2.跑起来模型 1)python -m vllm.entrypoints.openai.api_server --model /home/cxh/Meta-Llama-3-8B-Instruct-AWQ --dtype auto --…...

计算机缺失OpenCL.dll怎么办,OpenCL.dll丢失的多种解决方法

在使用电脑的过程中,我们经常会遇到一些开机弹窗问题。其中,开机弹窗找不到OpenCL.dll是一种常见的情况。本文将详细介绍开机弹窗找不到OpenCL.dll的原因分析、解决方法以及预防措辞,帮助大家更好地解决这一问题。 一,了解OpenCL.…...

git 本地代码管理

简介 git 能实现本地代码多个更改版本的管理和导出。 首先复制好项目(参考 git clone 别人项目后正确的修改和同步操作 中的前三步) 实操 克隆原始项目 首先,从远程仓库克隆项目到本地: git clone https://github.com/libo-huan…...

Docker(九)-Docker运行redis6.0.8容器实例

1.宿主机新建目录存放redis.conf文件 目的:运行redis容器实例时使用自己的配置文件2.运行redis容器实例 docker run -d -p 6379:6379 --privilegedtrue -v 【宿主机配置文件目录】:/etc/redis/redis.conf -v 【宿主机数据目录】:/data --nameredis6.0.8 redis:6.0…...

似然 与 概率

概率似然概率函数与似然函数的关系似然与机器学习的关系最大似然估计 似然与概率分别是针对不同内容的估计和近似 概率 概率:概率表达给定参数 θ \theta θ下样本随机向量 X x \textbf{X} {x} Xx的可能性。 概率密度函数的定义形式是 f ( x ∣ θ ) f(x|\t…...

Tableau数据可视化与仪表盘搭建

Tableau的主要目的 数据赋能和数据探索。 数据赋能: 1.分析师可以将数据看板发布到线上给其他部门使用 2.自动更新看板 3.自由下载数据 4.线上修改图表 5.邮件发送数据 6.设置数据预警 数据探索: 1.支持亿级数据的连接和处理 2.自由地对字段进行各种…...

web前端——HTML

目录 一、HTML概述 1.HTML是什么? 2.HTML具体化解释 二、HTML基本语法 1.声明 2. Head头标签 3.body身体标签 4.一个html的基本结构 5.标签 6.标签属性 ①属性的格式 ②属性的位置 ③添加多个属性 三、基本常用标签 1.超链接 2.图像标签 ①图像标…...

C++的模板(九):模板的实例化问题

前文子系统中的例子&#xff0c; SubSystem内部用了STL库的map模板: template <class Event, class Response> class SubSystem{ public:map<Event*, Response*> table; public:void bind(Event *e, Response *r);void unbind(Event *e); public:int OnMessage(E…...

Clickhouse Projection

背景 Clickhouse一个视图本质还是表&#xff0c;只支持一种order By&#xff0c;不然要维护太多的视图。 物化视图能力有限。 在设计聚合功能时&#xff0c;考虑使用AggregatingMergeTree表引擎&#xff0c;现在有了projections&#xff0c;打算尝试使用一下 操作 ADD PROJE…...

放烟花短视频素材去哪里找?去哪里下载?烟花素材网分享

在当代社会&#xff0c;短视频凭借其独有的魅力成为大众传递情感、记录生活、分享快乐的新兴方式。特别是在庆祝节日和特殊时刻时&#xff0c;烟花的绚丽效果常常被用来吸引观众的目光&#xff0c;成为视频作品中的亮点。然而&#xff0c;对于短视频制作者来说&#xff0c;寻找…...

爬虫笔记14——爬取网页数据写入MongoDB数据库,以爱奇艺为例

下载MongoDB数据库 首先&#xff0c;需要下载MongoDB数据库&#xff0c;下载的话比较简单&#xff0c;直接去官网找到想要的版本下载即可&#xff0c;具体安装过程可以看这里。 pycharm下载pymongo库 pip install pymongo然后在在python程序中我们可以这样连接MongoDB数据库…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

Axios请求超时重发机制

Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式&#xff1a; 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...