|
|
- x! j* p d% x& W! o% g4 [2 i在物联网快速发展的今天,选择合适的通信协议对于项目的成功至关重要。7 n, S9 c+ ]3 {: ]* [6 l! M& W
- p, B! N: N6 h6 R- s* b
一、MQTT详解! P+ ]& S# U8 F! |- x5 x9 {( ~
1、MQTT基本特征
* g- P I* h; h m& L基于TCP/IP的发布/订阅消息模式
* y' a9 W% Y( c+ k9 k9 X# H- ?5 Y轻量级、低带宽占用
1 R* m4 [1 p' Y支持QoS服务质量保证
/ X- n4 F) Y5 k9 L适合大规模设备网络" @& ~+ s. R$ S. K; f) N2 N
实时性好,延迟小
# `9 S P2 |: @. y9 F2、MQTT适用场景
* ]( a) P9 r3 Z, {: @& M需要稳定可靠通信的场景
3 i) Q% q0 e, x- ]( W3 k具备持续网络连接能力的设备! B& I. k- v8 ?1 Y1 ?/ C; ?, O
实时数据采集与监控系统/ S% R: w) M8 {, F2 Q
消息推送服务
) c6 _5 ~* Y7 h+ I+ P远程控制应用
3 P9 V+ H( I. E- W1 J& G @3、MQTT通信架构图如下
( j1 P2 Q# c+ Y5 q( |9 L6 S% O! w3 t5 @( z! s4 y1 ]3 \' f; c/ W
) W8 Z3 N) ` p. y. H二、CoAP协议解析
+ Z" S- V/ v# O' G1、CoAP特点! f& L9 s& I6 A! a* g
基于UDP的请求/响应模式
" }1 n+ |" j) N0 F$ W, t, U类HTTP协议,易于集成
1 X; F2 \& Q6 m3 Z" n% Y; q/ E支持多播
! [- y9 `6 v+ V d5 L$ T7 p( l极低的协议开销
1 a' g0 V/ a8 l7 z适合受限环境- O: G) n" c$ C0 M
2、CoAP适用场景
4 X* y* ?9 s. E, O& R* T资源受限的物联网设备
0 e- }3 |# J. h' v. K4 N2 d: l间歇性通信需求
% |9 U1 v; d; U6 ~) F8 {( Q3 }电池供电设备8 A6 U& f: B- s$ r/ E2 w
智能家居传感器网络
5 r) `/ S3 ~; y: l' t8 Q+ x7 N简单的数据查询应用2 `2 P; j' f' ?! o$ |* t
3、CoAP的通信架构1 }- r5 U5 f, X$ V: \
) V" X2 T, L; K v5 l2 n# D- I
) D) Q/ q r, g2 N9 c三、协议选择决策要素7 e7 c# w- N# ~
一般会从三个方面去分析. N! g3 H3 O2 o {' R- y2 ^! k6 H
( M+ v- Z! Z0 l+ D9 H \: |
1、设备资源条件% q4 V" J1 i. ^! }- ~. E
处理能力# t8 F4 Z/ j' i
内存容量
4 v8 C% D$ B/ E1 b# _5 t+ E/ ]电源类型3 _1 h7 s" j, @
网络带宽! d/ r" x/ n0 S5 T( E
2、应用需求分析2 P% c$ W+ Y8 S6 e8 I
实时性要求
# x X* y1 A* i6 s# V! R( g# |可靠性要求; c( Y& C7 [9 l
数据传输频率6 `! q& e' X5 f0 u
安全性需求: B) e1 A0 v8 m' U+ _
3、网络环境评估
6 F5 a, U1 E. |+ O网络稳定性
* I E5 E, R0 r# H- E t* f带宽资源5 u: v) E3 V5 J3 Z! k
延迟要求
4 F* n) L7 Q2 |! s部署规模. i% x+ {# c& R
基于以上,可以对MQTT以及CoAP两种通信方式进行一个对比
2 f6 n ~4 M& J* f" y' ^# }7 C7 U C- w
在传输层,MQTT基于TCP进行传输,以连接为导向,可靠传输;CoAP以UDP进行传输,无连接,轻量传输
$ R, d' O2 Z% K C在消息架构上,MQTT基于发布与订阅的模式及生产者与消费者的通信模型,适合多对多进行通信,而CoAP则基于请求与响应的通信方式,更加适合点对点的通信5 g3 |3 G7 B# e9 a' u H
在协议开销上两者都是极低的开销。% \" v! R$ K8 Q* o: f8 t1 k7 R
在可靠性上,MQTT基于qos服务 0/1/2三级保证,而CoAP则又确认与非确认消息进行区分
$ n: R a. D; u* g3 z# k9 `# ]四、如何选择与实施建议
+ h( l5 N8 J# @" N2 \' w/ q以上常见5个场景的需要,更适合选择MQTT的通信方式,当然在选择MQTT通信后,如何选择QoS级别,如何规划主题结构、消息持久化,断线重连等问题还需要进行考虑。7 ]/ G1 p) z; |
; N; f5 L; h K% O需要实时推送消息;$ [- S6 m, O q6 m
设备具备持续连接能力;, x# A( P1 e6 Q
要求可靠的消息传递;: s( F6 W3 f* W" o& u$ m! ^
多设备之间需要通信;
$ A, U8 D; f8 V$ r2 `支持大规模设备接入。7 j6 v0 v$ I/ N& B9 E
在需要以下5个常见场景时,CoAP则更有优势,同时也需要考虑设计资源URI架构、实现观察者模式、考虑重传策略规划缓存机制、评估DTLS加密需求。
: J: m* L9 Z! ^) C( H8 Y. d7 z& L, X6 |5 d
设备资源极其有限;
" L. a' J+ e2 N$ m8 P5 G8 ] K主要是简单的数据查询;" h+ O( D; V8 K5 e# ]6 c( h
电池供电要求低功耗;3 @9 v7 f( a X- B7 R
网络条件不稳定;
6 F8 T" R: D: \需要与REST架构集成。! `4 _7 Y3 m' d, n
总的来说选择合适的通信协议是物联网项目成功的关键因素。MQTT协议和CoAP协议各有优势,需要根据具体应用场景、设备特点和业务需求做出选择。随着物联网技术的发展,这两种协议也在不断演进,为物联网应用提供更好的支持。) |3 q( r# Z. N
% i5 d1 Z. Z( q! i+ U" [5 U, _
|
|