写在前面

在谈论任何物联网平台之前,需要首先定义什么是物联网生态系统(或物联网堆栈、物联网架构……)以及物联网平台在这个生态系统中的位置。在大多数情况下,物联网生态系统包括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

参考书

企业应用架构模式