当前位置: 首页 > 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数据库…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

如何为服务器生成TLS证书

TLS&#xff08;Transport Layer Security&#xff09;证书是确保网络通信安全的重要手段&#xff0c;它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书&#xff0c;可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

python报错No module named ‘tensorflow.keras‘

是由于不同版本的tensorflow下的keras所在的路径不同&#xff0c;结合所安装的tensorflow的目录结构修改from语句即可。 原语句&#xff1a; from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后&#xff1a; from tensorflow.python.keras.lay…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...