写在前面
在谈论任何物联网平台之前,需要首先定义什么是物联网生态系统(或物联网堆栈、物联网架构……)以及物联网平台在这个生态系统中的位置。在大多数情况下,物联网生态系统包括4个主要组成部分:
物品(硬件)是传感器(温度、污染…)形式的设备,可以从环境中收集数据;或者是执行器形式(阀门、电机控制…)的设备。
网络连接是设备和应用程序之间的一切,从中我们可以读取设备或命令设备。有多种网络连接选项可供选择,其中大多数都需要使用某种网关。
通常位于云中的软件,这里包括数据收集、设备和配置管理、消息传递、OTA固件更新、安全和身份管理等。
应用程序和分析是最终用户通常通过Web或移动应用程序与物联网解决方案交互的部分。这一部分还包括可视化、报告、规则引擎、分析和警报,以防触发某个阈值。这部分必须适应开发人员,以便他们能够快速定制开发应用程序。
物联网平台
物联网平台始终涵盖物联网生态系统的最重要部分,但它可能因平台而异。物联网平台通常也称为中间件,因为它们管理硬件和应用程序之间的交互。
在选择物联网平台时,您需要首先了解该平台有多少客户在使用,特别是您所在的垂直/行业中,因为每个垂直行业都有特定的规则和要求。选择一个能够从小型概念验证项目轻松扩展到大型项目,并支持第三方应用程序的平台也很重要。关于网络和协议支持,平台能够连接到各种类型的设备和系统也很重要。在考虑使用什么物联网平台、谁拥有数据以及将使用公共云、私有云还是专用服务器实施时,安全问题也必须在考虑范围内。最后但同样重要的是,物联网平台的主要好处是加快产品或服务的上市时间,但必须仔细计算所有成本,以管理物联网解决方案的总体拥有成本。
技术栈
软件工程师
总结物联网平台的架构如下:
- 设备接入:MQTT、CoAP、HTTP等开放协议
- 规则引擎:配置设备消息的处理流程
- 核心服务:设备认证、规则和插件、租户和客户、小组件和仪表盘、告警和事件
- 服务端API网关:REST API、websockets
- Actor模型:主要用于并发
- 集群模式:Zookeeper用于服务发现,一致性哈希保证消息的扩展性和可用性。
- 安全:SSL用于HTTP和MQTT
- 设备认证:Token和X.509
- 第三方工具:AKKA【Actor】、Zookeeper、gRPC、Cassandra
需要掌握的技能
技术点 | 简介 | 学习参考 |
---|---|---|
Java、JavaWeb | 主流业务平台开发技术基础 | |
网络编程 | 物联网平台最重要的是管理设备和协议解析的功能,针对协议接入和解析属于网络编程范围 | |
网络协议 | MQTT协议、CoAP协议、HTTP协议、WebSocket协议 | |
TCP/IP协议簇 | ||
Spring Boot 2.3.x | 简化新 Spring 应用的初始搭建以及开发过程的Spring体系框架 | https://spring.io/projects/spring-boot |
Spring WebFlux | 响应式Web支持 | https://www.cnblogs.com/quanxiaoha/p/10773773.html |
R2DBC | 响应式关系型数据库驱动 | https://r2dbc.io/ |
Project Reactor | 响应式编程框架 | https://projectreactor.io/ |
Netty ,Vert.x | 高性能网络编程框架 | https://netty.io/wiki/user-guide.html |
AKKA、Actors | 用于编写高可用和高伸缩性的Actor模型框架 | https://doc.akka.io/docs/akka/current/typed/index.html |
Google Protocol Buffer(Protobuf) | 轻便高效的结构化数据存储格式 | http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ |
数据库 | 关系型数据库MySQL或PostgreSQL 非关系型:Redis 时序数据库TSDB |
|
ElasticSearch | 全文检索,日志,时序数据存储 |
核心技术:
弃用vertx,vertx的响应式模型相对于reactor不太好用,社区也不活跃了。
netty组合Disruptor
netty 组合 reactor
学习git地址:https://github.com/1ssqq1lxr/iot-harbor
参考书
企业应用架构模式