DGIOT物联网架构设计

DGIOT物联网架构设计,第1张

在应用系统开发中,采用严格的、单一的、真正的的分层架构是可以的,但实际上我们已经采用了多种架构模式设计系统。当多种不同范式的架构混合在一起,你会不会出现“指鹿为马”的现象呢?

在研究分层架构时,常通过概念性的定义或 OSI 七层应用(架构)来说明或解释分层架构:

取自《 POSA , VolI , p22 》

作为一个在项目中引入分层架构的应用者,我们应该从更具体的规范来实现分层架构:

《 POSA , VolI 》 为我们提供了更多的实现规范,然而我要解决的是有关层的 单向依赖 问题。因为有一些人在使用分层架构时,尤其是将分层架构引入到项目的目录结构时,对于某些对象的划分(从属)存在一些混乱问题。

如果你有兴趣了解更多分层架构的实现规范,可参考:《 POSA , VolI 》第二十六页到第二十九页相关知识。

在领域驱动设计(DDD)中采用的是 松散分层架构 ,层间关系不那么严格。每层都可能使用它下面所有层的服务,而不仅仅是下一层的服务。每层都可能是半透明的,这意味着有些服务只对上一层可见,而有些服务对上面的所有层都可见。

注意:松散分层架构依然是单向依赖,表明上层只能调用下层的服务,下层不能调用上层的服务。

同时在领域驱动设计(DDD)中也采用了 继承分层架构 ,高层继承并实现低层接口。我们需要调整一下各层的顺序,并且将 基础设施层 移动到最高层。

注意:继承分层架构依然是单向依赖,这也意味着领域层、应用层、表现层将不能依赖基础设施层,相反基础设施层可以依赖它们。

领域层 UserRepository 接口:

基础设施层 JpaUserRepository 实现类:

我们确实使用包来划分层级,但是包名并不能真正表示分层。

我们通常将资源库的实现放置在基础设施层,这是因为我们采用了 继承分层架构 。如果你现在采用的是 松散分层架构 ,你需要将资源库的实现放置在领域层。这是层的单向依赖原则所致,你不应该破坏这个原则。没有任何理由需要破坏分层架构的单向依赖原则,除非你不采用分层架构。

我们应该从混乱到有序的这个历史过程去研究(分析)分层架构,尤其是我们现在处在前后端分离的环境下,应用系统使用分层架构又面临着什么样的划分变化。

应用系统使用分层架构在第三阶段基本已经成熟。因为我们要探讨的是有关领域驱动设计(DDD)的分层架构,所以我们依然需要做进一步补充。具体包括两方面的补充:

原来的聚羧酸减水剂生产自动化控制不能充分满足生产工艺要求,存在的主要问题是:
1) 新设备接入非常困难;
2) 同类不同厂家设备不方便更换;
3) 匀速滴加过程中不能达到理想的控制速度,传统PID算法波动较大,常需要人工手动干预;
4) 温度控制需要人工参与控制,无法完成全自动;
工业物联网是工业40的支撑框架。物联网被称为继计算机、互联网之后,世界信息产业的第三次浪潮。它的发展离不开应用,面向工业自动化的工业互联网技术是物联网的关键组成部分[1]。工业物联网通过将具有感知能力的智能终端、无处不在的移动计算模式、泛在的移动网络通信方式应用到工业生产的各个环节,提高制造效率,把握产品质量,降低成本,减少污染,从而将传统工业提升到智能工业的新阶段[2]。
工业物联网框架中,整个系统具有强大的数据服务器,能够进行大数据的计算。在数据量足够的时候能够利用网络智能来帮助企业进行决策、配方优化和自动的设备维护等。
整个控制系统具有分布式智能能力。整个系统中,可以把数据都送到中控部分来完成;也可以将一些需要及时处理的,如温度控制等,直接由现场控制来完成。电话O1O56O14679 系统通常分为中央控制单元和分布的现场控制单元,中央控制单元由工业控制计算机充当,现场控制单元则由高可靠、抗干扰的工业级微控制器和与当前控制需求相配套的附加电路模块组成。依托微控制器的实时处理能力可以完成对现场生产进行实时调节控制,并且通过总线实现现场控制单元与中央控制单元进行数据交互,使生产过程表现出整体性、协调性,从而优化生产工艺、提高生成效率。
系统通过总线把各个独立的控制模块组织成在一起。控制模块的独立性,使得系统中各个分布的控制模块检修、升级、数量扩充都很方便,也为在生产规模扩大时控制系统扩充预留了接口。

IOT网关,接收sensor数据的总入口,主要是日志,安全防护,流控,协议转换等功能,

图1 IOT网关

之前有提到IOT网关是基于python的twisted框架实现的,初期的时候该IOT网关主要实现的功能是 数据接收和转换功能 安全防护

数据接收和转换功能 ,这里很简单,拟定好数据交互格式后,IOT网关按照约定好的格式进行解析,然后转发给后端服务进行进一步的处理

安全防护 ,设备的区分主要是依靠烧录到硬件的SN号来实现,SN号包含的信息比较多,如生产批次,设备型号等,受制于厂商我安全防护不能做的非常完善,同时sensor与IOT网关的交互不能非常复杂。安全防护这一块理论上是设备接入要一型一密或者一机一密,协议上还应该启用tls/ssl安全通信协议。

图2 鉴权

安全防护要做ssl这类的安全通信协议的话,要考虑设备厂商实现通信模块能力,设备功耗,设备性能(低端设备cpu性能可能比较差,可考虑对称加密形式),IOT网关也需要引入相应模块。

另外认证从性能方面考虑,后期在设备比较多的情况下,可以加入redis等内存型key-value数据库,缓存设备信息,提高鉴权模块性能。

实践中,我们的sensor基本都是依靠电池供电,因此我们的IOT网关基本是面向短链接(后期我们有监测设备,依靠外部电源直接供电,为长连接),因此在每次发起连接我们都要进行一次鉴权,鉴权通过后,设备方可上传传感器监测数据和设备自身状态。

图3 数据交互流程

这一块的调试工作长达半年左右,才基本稳定下来,主要集中在设备商处除了硬件稳定性,还有在调试中发现传输的字符串乱码(c语言处理问题),沾包(厂商开发人员tcp协议不熟),优化传输效率,关闭cork或者 Nagle 算法(传输包很小)。

因为IOT网关不能主动断连接,理论 *** 作中,IOT网关应该和sensor有心跳协议,保证连接的有效性。设备商在数据流程交互完成后,竟然没有close 连接,直接休眠,导致网关所在服务器的连接的文件描述符一直没有正常释放,后面为了预防这种现象,我开启了 *** 作系统层面的keepalve定时器,回收失效连接(系统默认时间是2小时左右,我缩短了失效时间),理论上来说应该是应用层面去实现心跳协议。

整个IOT网关的设计,是无状态,可伸缩的,单网关在普通型ecs上可轻松达到数百tps。

政策约束、预算约束、时间约束、技术约束。
物联网工程专业是一门普通高等学校本科专业,属于计算机类专业,基本修业年限为四年,授予工学学士学位。
该专业要求掌握数学和其他相关的自然科学基础知识以及和物联网相关的计算机、通信和传感的基本理论、基本知识、基本技能和基本方法,培养能够系统地掌握物联网的相关理论、方法和技能,具备通信技术、网络技术、传感技术等信息领域宽广的专业知识的高级工程技术人才。

物联网将经过以下三个阶段后悔逐渐走向成熟:

第一阶段:物联网设备的个性化
比如,在物联网初始阶段,设备之间的识别通过扫描QR码来完成。设备之间的互动给用户带来价值,比如说智能汽车不用拿出钥匙就可以开车门。但这种互动方式即将或已经被破坏。

第二阶段:传感器网络半自动
发展到中间阶段,物联网上的“物”可以通过传感器来感知周围环境、位置以及其他设备。设备之间的行为和“传感”到的信息给用户带来实用价值。室内恒温器可以根据房屋内外温度的变化而进行自动调节,这就是一个很好的例子。但如果遭到黑客攻击,可能整个国家的人们都要在30多度的室内度过夏天了,这样也给国家带来危险。

第三阶段:独立设备自动化
物联网的阶段里,技术可用性、能力、标准都已经打到了不需要其他设备就可以自动运行的程度。物联网上的设备不仅可以感知周围环境,还可以与其他设备、传感器和服务产生互动。比如说自动配药器,当它感知到用户血压升高时便会自动与其他传感器协同处理信息,再给用户配药。这一阶段可能受到的安全威胁,应该非常容易想象。

智能冰箱应该是这三个阶段的最好见证者,在第一阶段,智能冰箱主人需要手动扫描牛奶数量然后再冰箱上做相关设置,以便获得智能冰箱的提醒。第二阶段,智能冰箱可以自动监测生疏的牛奶数量并通过手机应用来提醒用户,实现了半自动化。到了第三阶段,当智能冰箱检测到即将没有牛奶的时候,就会自动上网订购。

首先介绍物联网的概念,参考EPOSS的《Internet of Things in 2020》;之后看看物联网相关演讲、报告(近来物联网会议较多,讲演资料也较多),总结分析,前期入手尽量少谈物联网关键技术;接着谈谈物联网的应用(参考《物联网“十二五”规划》),最好谈谈物联网的前景及展望。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/12951139.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存