您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
   
 
     
   
 订阅
  捐助
以腾讯云IoT Suite为例 谈谈边缘计算在物联网的实践与实现
 
   次浏览      
 2018-6-8
 
编辑推荐:

本文来自于infoq.com,介绍了基于边缘计算的物联网架构,如何实现边缘计算?硬件设备如何接入等。

基于边缘计算的物联网架构

边缘计算,是一种分散式运算的架构,它将应用程序、数据资料与服务的运算,由网络中心节点,移往网络逻辑上的边缘节点来处理。边缘运算将原本完全由中心节点处理大型服务加以分解,切割成更小与更容易管理的部分,分散到边缘节点去处理。

基于边缘计算物联网解决方案,从架构上可以分为:传感控制层、网络层、敏捷控制器和应用层。

传感控制层:包含大量的传感器、控制部件(比如开关等)和测量部件(比如电表等),另外还有通信部件。这些通信部件可能是独立的,也可能是和其它部件结合在一起的。

网络层:主要实现融合和互联,它的功能除了网络联接和管理之外,还包括边缘计算,进行现场处理,同时保障业务在本地的存活。本地存活和现场处理对物联网尤其是工业和民用大型设施是非常重要的。此外,协议转换也是这一层的重要功能。在 IoT 领域有特别多的协议,这些协议来自于各个行业历史上的积累,所以需要在网关上做协议的转换,将数据统一承载在 IP 网络上向外传输。

敏捷控制器:将网关送上来的数据进行统一的处理,向上送给应用层。并对下层的网络、传感器、控制部件、测量部件、计算资源进行管理,提供网络布署、配置的自动化工具。

业务应用层:集成各种行业应用。

“两端一云”的物联网解决方案IoT Suite

万物互联的蓬勃发展,互联网接入的用户和设备越来越多,无论是个人用户,还是物联网接入设备,每时每刻都在产生大量的数据。数据量不断增多的情况下,同时要求对于设备的响应、本身的计算能力越来越强。基于传统设备连接中央服务器,网络延迟和带宽会产生巨大成本,设备无法通过网络即时连接到云和中央服务器。

为了解决上述问题,腾讯云提出了“两端一云”的物联网解决方案IoT Suite,帮助实现设备的快速物联网化。同时,平台提供标准TLS1.2、双向认证保护设备与云端通道安全,对于计算能力偏弱的设备,采用动态令牌,实现一机一钥的能力,完成设备端-云-应用端的双向安全通信。

如上图所示,腾讯云物联网平台整体包括三层架构,包括平台核心处理层,设备连接层以及应用连接层。平台核心处理层提供统一的云端中控管理平台,提供包括数据模版,日志存储,影子服务,规则引擎等功能。设备连接层和应用连接层通过开放的APIs提供封装的固件SDK和应用SDK,向上集成不同行业应用,向下连接各种传感器、终端和中控网关设备,完成跨硬件设备接入。

整个平台提供的开发支持,包括设备端的嵌入式固件 SDK,云端开放式API 接口,以及用户应用端的集成式 SDK 等。设备与云之间的通讯平台封装了标准的MQTT、CoAP、HTTP等不同的通讯协议,支持2G/4G/NB/lora/wifi等连接方式。同时,应用端提供MQTT、WebSocket、HTTP协议及中间件,方便企业应用、手机应用等不同应用的接入。

设备端固件 SDK

提供基于 Linux、Android 及主流 Rtos 的设备接入SDK,支持各种包括 2/3/4G、WIFI、LORA、NB-IoT 通讯模式的通讯模组, SOC 开发板、SIP 开发板,封装了与云端鉴权、通信的全套接口,支持 MQTT/ CoAP/ WebSocket 等多种协议,可移植至不同硬件环境运行。

应用端 SDK

封装了 APP 应用端与腾讯云物联网开发中心的通讯过程, 包括设备的配置入网、发现、连接、控制、状态上报、告警和故障通知等。使用 SDK,可以使得用户快速完成 APP 开发,从而降低对复杂的协议与错误处理等事项。

开放式通讯云 API

提供从设备接入,账号管理,设备绑定,远程监控&升级等设备高级数据服务,并提供对应的云端 API 调用接口给到用户进行访问使用,同时打通腾讯云大数据,AI 等各种云产品的接口,满足客户根据自身业务对数据的使用。

整个框架从产品创建,设备功能设置,数据指令的上传下发,数据的存储到发布环境的应用,基本上实现了设备物联网化所需要的所有组件。总体而言,基于“两端一云”的腾讯云 IoT Suite 物联网云平台,能够实现包含设备接入、设备管理、数据分析处理、数据可视化、终端智能在内的多项功能。

如何实现边缘计算?

腾讯云IoT边缘计算架构

基于物联网的边缘计算实现,主流的主要为两条路径,一是微服务的升级模式,简单理解就是允许用户在边缘平台运行应用程序,且提供开放的编程环境,与近年来来软件定义的路径相似;二是边缘向云的渗透,利用边缘能力渗透进云领域的核心产品及服务,如数据库、计算、存储、安全的边缘化。

腾讯云物联网边缘计算解决方案,主要为物联边缘设备提供一套本地服务,解决物联网应用场景下的高可用、实时性、带宽限制、私密性等问题。 腾讯云IoT边缘计算提供设备管理、消息收发、本地计算、缓存及同步能力,可以在边缘设备完成本地化的物联设备管理和通讯。

同时结合腾讯云SCF无服务函数agent,用户只需在云端完成业务逻辑代码编写,运行方式配置,消息规则配置,下发至在网设备。在设备上,系统将自动完成代码和配置同步,云函数运行,并在设备上提供消息收发、缓存、与云端进行消息同步等能力。当数据产生时,底层的物联网设备将数据上报至智能网关设备,触发云函数的运行,将数据进行离线处理,通过本地的 IoT网关,再将离线处理的数据下发至物联网底层设备。整个数据最主要的计算处理部分运行主要是在云函数中进行。

未来,我们会将更多的智能化服务如图像识别,包装为SCF云函数,逐步替换目前的SDK模式,通过调用云函数的方式就可以完成智能化应用的开发。

执行环境:无服务器云函数SCF

无服务器云函数(Serverless Cloud Function)是腾讯云提供的无服务器(Serverless)执行环境,通过托管用户代码,使用用户配置的触发器,根据触发器的触发事件,能够自动执行用户应用。SCF 云函数由事件触发执行,事件来源即触发器,通常是由其他产品资源对象作为触发器,例如 COS Bucket, CMQ Topic队列,定时器, IoT 设备等。

云函数更多是对用户的计算进行托管,用户将代码和配置提交到云函数平台上,此处的代码是指用户的一份代码或者代码包。配置,一个是指本身对于函数运行环境的配置,包括使用的是哪种环境、所需的内存、超时时间等;另一个是指触发器的配置。

因为整个函数即服务的运行方式是触发式运行,触发就需要有一个事件来源,而事件来源是和腾讯云其他产品进行关联后而产生。例如COS对象存储产品,它的关联就在COS的存储桶中,当用户上传一张图片或者删除一张图片时,就会产生一个事件,这个事件会触发云函数的运行。

例如和API网关的对接,也可以作为事件来源,在用户的HTTP请求到达网关之后,API网关会把该请求作为事件转发给云函数,触发云函数的运行,云函数拿到请求之后进行处理,生成响应给到用户。

上图为云函数的计算过程,用户先代码和配置提交到云函数平台进行保存,真正事件产生后,针对每一个事件都会拉起一个函数实例,实现触发式运行。真正事件来临时,用户函数才会运行,用户代码运行时才有云函数代码的数据运算和费用计算。

因为函数本身是托管型的,用户本身无法感知到实例在哪里运行。云函数平台背后有个大的计算资源池,用户实例触发之后,从资源池中随机选取可运行的位置,把用户的函数实例在对应位置上运营起来。因此整个调度过程,或者事件来临之后的函数扩缩容过程,都是由平台进行的。云函数带来的价值主要包括四点:

简化架构:函数粒度的微服务架构,使得系统的各个功能天然解耦,能像搭积木一样组合自有及外部服务,实现所看即所得的后台服务;

简化开发:无需关注底层硬件配置、OS,服务启停、网络收发,故障容灾,服务扩缩容等,只需写最核心的业务逻辑,实现真正的代码即服务;

简化运维:无须关注服务部署,服务器运维,安全管控,扩缩容配置等,且应用能无缝升级,实现无痛切换到DevOps模式。

减少支出:无闲置成本,仅对函数资源大小,执行时间,执行次数按需计费,相对云主机平均5%~15% 的使用率,价格优势明显,实现了最彻底的按需计费。

物联网主要是和设备打交道,云函数交由平台托管的调度,可以把云函数调度到用户设备上去。通过云函数,用户能够在边缘平台运行应用程序,帮助实现设备上的边缘计算。开发者只需通过编写核心代码并设置代码运行的条件,即可进行实时文件处理和数据处理。

硬件设备如何接入?

接入IoT Suit

因为主要功能集成在 Iot Suite中,因此硬件设备的接入比较简单,只需获取SDK、配置开发环境、将相关文件进行移植即可。

SDK 获取

git clone https: //github.com /tencentyun /tencent-cloud-iotsuite- embedded- c.git

开发环境

SDK 在 Linux 环境下的测试和验证,主要基于 Ubuntu 16.04 版本,gcc-5.4 (建议至少 gcc-4.7+),Python 2.7.12+(代码生成及控制台命令行脚本)。安装cmake工具 http://www.cmake.org/download/

编译及运行

a.执行命令,编译示例程序

cd tencent-cloud- iotsuite- embedded-c
mkdir - p build
cd build
cmake ../
make

b.编译后,build目录下的关键输出及说明如下:

bin
|-- demo_mqtt # MQTT 连接云服务演示程序
|-- demo_shadow # Shadow 影子设备操作演示程序
|-- iotsuite_app # 通用数据模板演示程序
|-- light # 基于数据模板的 RGB LED Light 演示程序
lib
|-- libtc_iot_suite.a # SDK 的核心层, libtc_ iot_ hal、libtc_ iot_ common 提供连接云服务的能力
|-- libtc_iot_common.a # SDK 基础工具库,负责http、json 、base64 等解析和编解码功能
|-- libtc_iot _hal.a # SDK 的硬件及操作系统抽象,负责内存、定时器、网络交互等功能

c.执行示例程序

cd bin
# 运行demo程序
./demo_mqtt
# or
./iotsuite_app

移植说明

SDK 抽象定义了硬件及操作系统平台抽象层(HAL 层),将所依赖的内存、定时器、网络传输交互等功能, 都封装在 HAL 层(对应库libtc_iot_hal)中,进行跨平台移植时,首先都需要根据对应平台的硬件及操作系统情况, 对应适配或实现相关的功能。

平台移植相关的头文件及源文件代码结构如下:

include /platform/
|-- linux # 不同的平台或系统,单独建立独立的目录
| |-- tc_iot_ platform.h # 引入对应平台相关的定义或系统头文件
|-- tc_iot_hal_ network.h # 网络相关定义
|-- tc_iot_hal_ os.h # 操作系统内存、时间戳等相关定义
|-- tc_iot_hal_ timer.h # 定时器相关定义
src/ platform/
|-- CMakeLists.txt
|-- linux
|-- CMakeLists.txt
|-- tc_iot_hal_ net.c # TCP 非加密直连方式网络接口实现
|-- tc_iot_hal_ os.c # 内存及时间戳实现
|-- tc_iot_hal_ timer.c # 定时器相关实现
|-- tc_iot_hal_ tls.c # TLS 加密网络接口实现

C-SDK 中提供的 HAL 层是基于 Linux 等 POSIX 体系系统的参考实现,但并不强耦合要求实现按照 POSIX 接口方式,移植时可根据目标系统的情况,灵活调整。所有 HAL 层函数都在 include/platform /tc_iot_ hal *.h 中进行声明,函数都以 tc_ iot_ hal为前缀。

使用IoT Suit 和 SCF完成边缘计算

以搭建一个电子围栏应用为例,用户只需配置简单五步即可快速开发:

在云端创建设备,云端将为设备分配设备标识,分配通讯通道,分配配置认证信息;

编写电子围栏消息处理函数,配置消息转发规则;

绑定设备与函数,绑定设备与规则;

在设备中安装边缘计算agent,配置设备标识,认证信息,配置通讯通道信息;

启动agent,云端将电子围栏函数下发至本地,验证函数与规则在边缘端生效。

   
次浏览       
????

HTTP????
nginx??????
SD-WAN???
5G?????
 
????

??????????
IPv6???????
??????????
???????
????

????????
????????
???????????????
??????????