基于 Rust 语言编写的可编程的全球分布式 MQTT 服务器
如果无法正常显示,请先停止浏览器的去广告插件。
1. 基于边缘架构的可编程MQTT服务
网聚云联 王文庭
2.
3.
4. O1 背景说明
CONTENTS
O2 HPMQ简介
O3 HPMQ开发说明
O4 HPMQ未来规划
5. 1. 背景说明
6. 物联网时代带来的变化
海量
连网
设备
海量数据处理?
原来以数据中
心为核心的云
端架构是否还
满足需求?
共性:边缘
设备安全性?
7. 边缘架构
可在边缘直接对数据进行相
关的计算(处理/存储)并提
供相应的查询功能
02
一种分布式计
算架构
01
03
边缘架构
构成边缘
计算架构
的核心
8. 物联网设备的纽带
9. 2. HPMQ 简介
10. HPMQ ( H yperconverged P rogrammable MQ TT)
HPMQ是基于Rust语言开发的
下一代可编程边缘分布式
MQTT软件,主要有以下几个
核心特性:
• Geo-Distributed
• 可编程性
• 云边一体化
• 兼容异构设备
11. Why Rust?
• 性能(C/C++/Rust)
• 开发效率 (Rust/Golang/Java)
• 编译的产物要足够小(C/C++/Rust)
• 内存安全(Rust/Golang/Java)
• 对WebAssembly生态支持友好
12. 为什么需要geo-distributed
传统方案存在有问题
•
•
•
云端架构,我们无法根据设备地理位置实现就近通讯
只能做到在数据中心内相关的分布式扩展,无法直接进行
全球节点的扩展
复杂的容灾方案
解决方案
geo-distributed架构 + 调度
13. 如何管理分布式网络
我们主要基于eclipse-zenoh来做二次开
发,eclipse-zenoh是一款很优秀的rust
语言编写的,基于边缘架构的,开源分
布式消息服务基础架构,它帮我们解决
了很多分布式网络管理的共同的问题,
比如说分布式消息一致性问题,边缘节
点自动发现等问题
14. 场景:设备就近接入/处理
传统方案痛点
1)数据传输量大,中心压力大,高可用要求高
2)数据发布与订阅都在中心,延迟高
3)源站直接暴露
4)数据不好就近进行脱敏处理
5)数据不好就近进行存储
新方案优势
1)分摊中心压力
2)降低延迟
3)隐藏源站
4)边缘计算
5)边缘存储
15. 为什么需要可编程性
带来什么好处?
一句话概括,让设备具备边缘计算的能力。目前主要提供两种接入方式:
1)设备对接内置HPMQLite程序
上层MQTT Broker
2)设备通过MQTT协议透明接入
上层MQTT Broker
HPMQ
设备
程序
mqtt
HPMQLite
设备
程序
16. 场景:多厂商协议快速兼容
通过边缘函数的方式快速兼容多厂商
1)自定义协议+自定义函数
2)对接标准协议+公共函数
17. geo-distributed + 函数式开发 = 边缘计算
18. 整体架构
19. 什么是Webassembly?
• Webassembly,简称wasm
• 用一句话描述,那就是Webassembly是执行程序的标准化字节码格式
• Webassembly最初被发明,是用于Web浏览器。
• 由W3C工作组开发的Web浏览器标准,于2017年11月,
Chrome,Firefox,Microsoft Edge,Safari四大浏览器都开始实验性的支持
• 它在浏览器以外也有很广泛的运用,特别是在边缘计算领域。
• 支持多语言开发,比如Go,Python, rust,Javascript等
20. Serverless in MQTT Broker
1. 所需求运行资源小( ~64Kb for code and ~10Kb RAM )
2. 异构设备兼容性强( x86, ARM, RISC-V, MIPS, Raspberry Pi, Orange Pi … )
21. Wasm vs Docker
• 更好的代码执行环境抽象 ,它可以直接部署代码或应用程序到各种异构设备,而不需要开
发人员为每个异构设备都编写或编译一套单独的代码或程序,从而提高开发效率;
• 更好的安全机制 ,Docker 之类的容器最让人诟病的问题之一就是安全性;
• 更低的内存和资源消耗 ,Wasm 运行时所需的资源比 Docker 之类的容器要少很多;
• 更快的冷启动时间 ,Wasm的冷启动时间为微秒,比 Docker 的秒级启动快不少;
• 更小的运行时依赖 ,Docker整体包大小还是偏大,并且依赖的东⻄偏多,很难在一些资源
受限的设备上跑起来;
22. wasm如何分发部署?
• Kubedge?
• OpenYurt?
• Krustlet?
23. 3. HPMQ函数开发说明
24. 使用流程
HPMQ平台
配置
联
关
公共函数
( 比如:tb2aws )
触发器
关
联
私有函数
25. 编写函数
26. 发布函数
Hpmqfile
hpmq-cli build
OCI镜像
hpmq-cli push
镜像仓库
27. Demo
28. 4. HPMQ未来规划
29. 开源(https://github.com/wangjuyunlian/hpmq)
基于零信任架构实现远程设备访问
消息边缘存储
30.
31. 发个招聘小广告 ( rust/c/c++岗位 )
但愿诸贤集鹭汉,
书生穷死胜侯封