0 前言

近年来,物联网技术正以指数级的速度日渐成熟,并潜移默化的改变着人们的生活。根据国际数据公司IDC的预测估计,到2025年,将有416亿台联网的IoT设备或“物”,生成79.4 ZB的数据。同时IDC中国研究数据显示,2020年全球物联网支出达到6904.7亿美元,其中中国市场占比23.6%。IDC预测,到2025年全球物联网市场将达到1.1万亿美元,年均复合增长11.4%,其中中国市场占比将提升到25.9%,物联网市场规模全球第一。

阿里云企业物联网平台是基于阿里云的基础架构,提供设备接入、设备管理、监控运维、数据流转、数据管理、处理分析等物联网构建能力,协助企业在数字化转型时拥有更完整的生产资料。而对于第一步设备如何快速上云并且实现全球就近接入尤其重要,下面笔者将详细介绍阿里云物联网平台的设备分发服务是如何实现设备全球快速就近接入的。

1 名词解释

物联网平台:是阿里云的一个物联网管理平台,为设备提供安全可靠的连接通信能力和管理能力,支持设备数据采集上云,规则引擎流转数据和云端数据下发设备端。

Alink通信协议:Alink协议是阿里云物联网平台的通信协议,该协议使设备与云端拥有上下行指令接受与下发的能力,并且为设备端与云端提供上下行通信的信道。

设备三元组:每台设备拥有productKey(产品标识),pruductSecret(产品秘钥),deviceName(设备名称标识),deviceSecret(设备秘钥),productKey和deviceName唯一标识一台设备,即一个产品下可以有多台设备。我们通常称productKey、deviceName和deviceSecret为设备的三元组信息。

设备接入点:设备连云需要指定接入点,接入点包含实例id信息${instanceId}.mqtt.iothub.aliyuncs.com

实例:物联网平台的产品模式,用户以实例的形式购买,可以分为独享实例(独享的计算资源)和公共实例(和其它租户共享的计算资源)

Bootstrap:设备引导服务

IHV(Independent Hardware Vendor):独立硬件开发商

ISV(Independent Software Vendors):独立软件开发商

SI(Service Integrator):服务集成商

2 当前面临的问题

物联网平台的设备分发服务要解决什么问题?先来看如下两个典型的业务场景:

场景一

用户软硬分离,IHV需要将设备交付给SI/ISV管理:IHV对设备进行建模和开发,并线下量产设备;ISV/SI在阿里云物联网平台批量生成设备三元组信息;ISV/SI线下向IHV购买设备,同时把自己实例下创建的三元组信息和设备接入接入点信息提供给IHV;IHV用上一步骤的三元组和实例信息烧录设备,并交付设备给ISV/SI;ISV/SI集成软件并部署使用设备。当前的场景存在的问题:

  • 由于设备开发者和设备使用者(ISV/SI)在不同的实例下,而设备接入又要烧录目标的实例id接入点,导致设备开发者无法提前备货提前将三元组和连接点信息进行烧录,需要用户下单后才能拿到设备真正要接入的实例信息;
  • 由于设备要交付给最终的使用者(ISV/SI)所在的实例进行管理,所以设备使用者需要在自己的实例内生成设备三元组并提供实例id信息给设备开发者烧录,最终设备数据才能在所在实例进行管理,操作繁琐;

场景二

厂商是软硬一体的开发者,可以自己开发设备并集成软件。厂商在自己的实例内生成的设备三元组信息,同时产线烧录三元组信息和实例接入点信息,然后将设备卖给C类用户,设备可能被用户带到不同的国家进行使用。当前的场景也存在一些问题:

  • 厂商的三元组信息是在指定的实例下生成的,也就是这一批设备烧录的是一个固定的实例接入点,如果用户把设备带到不同的国家,那么设备只能接入烧录的指定接入点,无法就近选择机房,就会导致设备和云端通信延迟增加;
  • 由于设备会被用户带到不同的国家使用,但是设备连接的始终是一个实例的数据中心,所以也可能存在数据合规问题;

3 如何解决这些问题

抽象一下我们要解决的三个问题:

  • 解决设备跨实例跨region跨租户的归属:由于物联网的复杂场景,设备的开发者和使用者往往不是同一个用户,需要提供一种方式解决跨实例跨region的设备归属问题;
  • 设备可以提前烧录备货:无需在设备出厂时对不同region和不同实例的连接信息进行硬编码,设备统一烧录全球统一接入点信息即可(无region信息),解决设备提前备货;
  • 设备可以全球就近低延时的接入:由于设备可能被用户带到任意region,希望设备可以连接到就近region的阿里云物联网平台的用户实例下,避免数据合规和连接指定烧录实例接入点造成的高延时问题。

针对于以上三个问题,阿里云物联网平台提出了设备分发的概念:物联网平台通过设备分发实现设备跨地域、跨实例或跨账号的分发。分发后,云端下发新的连接地址给设备,设备本地固化收到的信息之后,直接连接新的地址,免去二次烧录设备信息。设备分发主要解决的就是两个问题:设备的全球接入,设备的归属关系

先来看一下设备分发服务的整体架构:

物联网平台在全球8个region部有中心机房,设备分发服务整体上是分为两个阶段的:

  • 配置阶段:用户通过开放接口或者控制台对要分发的设备进行信息配置;
  • 接入阶段:设备通过Bootstrap引导服务上云,触发配置,完成接入;

下面将具体看一下上述提出的三个问题是如何解决的:

  1. 设备跨实例跨region跨租户的归属问题

而设备分发服务的第一个任务就是打通了阿里云内部的所有网络环境,对用户只暴露实例间的操作屏蔽底层复杂的网络和隔离策略。对于跨账号的操作,分发服务采用短信鉴权,并打通了国内站和国际站间账号的操作,用户只需要关心要分发到哪个账号下的哪个实例即可。

网络打通后就是如何在这个链路上实现数据高可靠的传输,由于跨region和跨库的数据访问可能会遭遇网络抖动或中间件访问超时等异常流;针对这些问题,系统除了有异常自动重试策略外还在业务上做了跨库的事务回滚,最大程度上保证业务数据的一致性。

由于设备数据的分发操作都是采用长任务进行处理,所以为了防止服务器宕机或者重启导致的任务中断,系统内置了故障转移机制,来保证任务一定会走到状态机终态,其核心思路就是采用心跳包和单机定时检测(quartz)来实现服务器的故障转移。下图演示了server1接收请求并,如果出现故障,是如何转移到server2当中的。

  1. 设备提前烧录备货问题

由于上云需要指定实例的接入点,所以对于设备不确定交由给哪个企业实例用户连接哪个企业实例的场景就没有办法提前烧录接入点,提前备货。

所以对于设备端通过烧录的global域名可以去中心环境请求分发服务,设备通过请求分发中心的bootstrap服务,该服务会返回设备引导信息,包含设备真正要接入的物联网平台实例的接入点信息,设备拿到目标接入点通过mqtt直连即可连接到目标用户的实例即可。

考虑设备还可能发生重配的情况,即设备已经连接在目标实例,但是用户在控制台重新配置了设备的目标实例接入点,这时候如果设备已经连云处于在线状态,服务端会推送一条mqtt消息给设备,告诉设备的接入信息发生变化请重新连接。如果设备不在线用户重配后,设备建连仍然走下面的流程依旧可以连接到目标实例。

  1. 设备全球就近低延时的接入问题

对于分发设备的接入策略服务端提供两种:指定地域和就近接入。这两种有各自的使用场景,对于指定地域策略如果用户明确设备要分发到哪个实例下使用可以选择指定地域策略,设备可以选择配置到指定实例进行接入,典型的场景是设备开发商在自己的实例下量产设备,然后将设备分发到渠道商的实例下,设备的目标实例是固定的,而且希望只连接在固定的实例下。

对于就近接入策略,例如设备厂商是软硬一体的,在指定的实例开发并量产了设备,但是设备售卖到C端用户手中会被用户带到全球任意region使用,这时设备厂商可以在物联网平台支持的每一个region购买一个实例,并配置就近接入策略,这样设备在移动到特定region请求bootstrap服务的时候,分发服务会根据设备的出口ip信息,动态的将设备身份分发到就近region用户的实例下进行连接。

设备只需要烧录一个全球域名iot-auth-global.aliyuncs.com,在解决了就近接入的同时,分发服务配置了ADNS智能域名解析。实现了全球就近低延时接入目标实例。

4 产品特性

  1. 万级设备可以实现跨账号、跨实例、跨region在阿里云各物联网平台任意的分发;同时平台对分发的设备提供了多种数据高可靠的保障策略;
  2. 提供多种分发策略,满足不同业务场景的需求;
  3. 设备bootstrap服务接入无额外鉴权,简化了设备接入流程;
  4. 一次配置,设备就可以实现低延时的全球就近接入;

5 接入文档

  1. 功能使用文档
  2. 云端开发指南
  3. 设备端开发指南

物联网平台产品介绍详情:https://www.aliyun.com/product/iot/iot_instc_public_cn
 
阿里云物联网平台客户交流群

阿里云AIoT物联网平台如何实现设备全球就近接入——设备接入类相关推荐

  1. 阿里云IoT物联网平台

    IoT物联网平台 一.工作原理 1.MQTT(Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议,专门设计用于物联网(IoT)应用中的通信.它是一种发 ...

  2. 【小程序案例】支付宝小程序-MQTT模器,IoT设备通过WSS接入阿里云IoT物联网平台...

    支付宝小程序-MQTT模拟器通过WSS接入阿里云IoT物联网平台 准备工作 1.1 注册阿里云账号 开通阿里云账号,并通过支付宝实名认证 https://www.aliyun.com 1.2 免费开通 ...

  3. MQTT.fx 模拟 IoT 设备接入阿里云企业物联网平台

    MQTT.fx是一款基于Eclipse Paho SDK,使用Java语言编写的MQTT客户端,支持Windows.Mac和Linux操作系统,可用于验证设备是否可与物联网平台正常连接,并基于 Top ...

  4. 基于TCP协议的GPS定位器设备迁移到阿里云IoT物联网平台实践——实践类

    背景 GPS定位器是内置了GPS模块和移动通信模块的终端,用来将GPS模块获得的定位数据通过移动通信模块传至Internet上的一台服务器上,从而可以实现在电脑或手机上查询终端位置. GPS定位器可用 ...

  5. 阿里云企业物联网平台推出千里传音播报服务 高效打造云端一体智能硬件

    作为阿里云Cloud AIoT Native架构的基础平台,近日,阿里云企业物联网平台正式推出了IoT 云端一体应用--千里传音播报服务.该应用是阿里云AIoT针对带有语音播报能力的AIoT设备,提供 ...

  6. 解密阿里云IoT物联网平台MQTT Access Server核心架构

    MQTT是基于TCP/IP协议栈构建的异步通信消息协议,是一种轻量级的发布.订阅信息传输协议.MQTT已逐渐成为IoT领域最热门的协议,也是国内外各大物联网平台最主流的传输协议,阿里云IoT物联网平台 ...

  7. 支付宝小程序使用MQTT over WebSocket连接阿里云IoT物联网平台

    前言 之前写了一篇微信小程序使用MQTT over WebSocket连接阿里云IoT物联网平台,介绍了如何使用mqtt.js在微信小程序上连接mqtt服务器,文中顺带提了mqtt.js是支持支付宝小 ...

  8. HaaS学习笔记 | 终端设备接入和断开阿里云IoT物联网平台的明细教程

    [1]题目要求 [本教程视频]:终端设备连接阿里云物联网平台 [2]理论基础 aliyunIoT是HaaS轻应用扩展库中模块,能帮助厂商将设备安全地接入到阿里云IoT物联网平台,继而让设备可以被物联网 ...

  9. 入住阿里云MQTT物联网平台

    注册阿里云: 网址:阿里云-上云就上阿里云 进入阿里云平台主页,点右上角"立即注册",你可以选择"扫码快速注册"或"账号密码注册"两种方式进 ...

最新文章

  1. Cpp / checked_delete 原理
  2. java如何加载lambda_Java 8 lambda表达式引入及简单使用
  3. iis5.1/6.0/7.0+ 配置url重写 无扩展名伪静态
  4. python简单网络爬虫_【Python】 简单网络爬虫实现
  5. Java中堆、栈、常量池等概念解析
  6. mysql5好还是8_定投扣款哪天好?周一还是周五,月末还是月初?(定投知识8)...
  7. python中文单词_python – 如何显示中文单词,而不是unicode单词
  8. python opencv3 圆检测
  9. Q91:真实地模拟透明材质(Realistic Transparency)(4)——Fish Bowl
  10. int 最大值_十行代码说清楚:leetcode 队列的最大值
  11. 使用NVIDIA端到端深度学习平台进行缺陷自动检测
  12. 在windows7下给vs2015配置dirent.h头文件
  13. GitHub桌面版汉化
  14. TIPS-国库信息处理系统
  15. iphone6s读写速度测试软件,iPhone6S/7/8运行iOS13速度测试:结果有点失望
  16. 11. Zigbee应用程序框架开发指南 - 命令行接口(CLI)
  17. 复旦大学邢晓渝:无监督句法分析模型里面的监督信号
  18. OLED多级菜单记录
  19. 微信小程序原生的下拉框组件
  20. 重写yolo数据加载模块

热门文章

  1. 【利用电容-数字转换器检测液位】
  2. 一、HALCON学习笔记(容器液位缺陷检测)
  3. 折射率的经典电磁学理论解释
  4. 武汉市工业互联网发展专项资金申报条件,2022年政策奖励补贴情况
  5. tensorflow NameError: name ‘layers‘ is not defined解决办法
  6. Harvest watermelon
  7. 无领导小组讨论面试技巧
  8. 大型报告厅,会议中心解决方案
  9. c语言全国贫困信息管理系统,全国扶贫开发信息系统业务管理子系统
  10. MySQL错误之1062-duplicated entry