|
|
: g- A. I- Q' D" _% \6 J3 b
在物联网快速发展的今天,选择合适的通信协议对于项目的成功至关重要。
' j2 h/ ?* i& Z. G+ ]* e. G% Z* X3 v5 ?8 I; d* P
一、MQTT详解
$ J0 g' \; D- q5 ?0 ^* e' i c1、MQTT基本特征. @) r% E' e; v- ?
基于TCP/IP的发布/订阅消息模式1 ` h% i: ^6 i# C3 V ~: q. Y F
轻量级、低带宽占用
& a0 R7 t( s% u/ V支持QoS服务质量保证
: ]0 W) ?# F( ?! [9 _. H适合大规模设备网络8 @2 N2 C" D, W, ?; T1 h4 Q
实时性好,延迟小
( e/ {* E5 r1 `2 j/ `2、MQTT适用场景
1 k L3 P0 g5 j4 n/ R5 a/ M需要稳定可靠通信的场景
9 v e; x% H! u/ X# W5 t$ i具备持续网络连接能力的设备; o/ @& m, v$ |* a& e- D
实时数据采集与监控系统6 U- O2 O- w% m$ d1 E
消息推送服务7 Z: v3 E! i. T* Z/ n% A
远程控制应用# A! V8 ^5 E) M& {, _8 z- _( B
3、MQTT通信架构图如下) h! B. }1 d$ t) u9 f, M" ]7 z
9 }: i/ D/ y9 H; r7 `6 S' V% M% W# `
! G2 M) H, e# R% M) v6 N二、CoAP协议解析
6 Y3 n' [2 Q7 i1、CoAP特点# s! o/ [7 T* P) N3 W3 l
基于UDP的请求/响应模式+ ~# z2 J4 Q8 T+ n4 B
类HTTP协议,易于集成
- U( i8 \1 N0 ~- H. d5 M3 r6 d, z支持多播
) L/ Y# e" V4 ?& Q o极低的协议开销
" f2 i$ N6 K; C5 ^; h$ {适合受限环境6 [5 A, }+ k! k5 _" O0 T
2、CoAP适用场景! m9 c( n6 s; u* V
资源受限的物联网设备9 {4 M* d& ^, Z H+ S. P1 k* O+ ^; e
间歇性通信需求
4 @9 z2 M' |/ \. S7 f+ Z$ P电池供电设备* m: J' D9 B! d' V4 ^% X0 k: g
智能家居传感器网络3 I8 d2 ]4 G% a1 @9 j8 I- _
简单的数据查询应用) M; `3 G2 |6 ^7 Q3 C. v
3、CoAP的通信架构8 N9 _! H3 C$ Q, V' f
' u! u' O4 ^3 T6 s6 p$ k2 j$ W# F+ g8 ^
三、协议选择决策要素
, v- `0 O+ x2 k. j, A; Q0 f( n一般会从三个方面去分析/ i2 F' W8 i' a
# ]) W9 h% r' T, f- M# a1 i1、设备资源条件, C, @5 h5 c. N- |5 z+ z9 U
处理能力
, X+ k( O, b9 i& G8 k" q1 b内存容量4 a9 H$ i9 {) H0 O. ~* j
电源类型: D# m W8 d! j3 o1 R2 o6 L
网络带宽
H% {/ M3 h7 T2 s5 p. Q2、应用需求分析. o/ i4 J& e% g7 P
实时性要求
X. g/ q+ Y$ W4 u可靠性要求( V7 K% u( v$ ^' |' ]( H
数据传输频率
m* ]: i7 h2 W安全性需求
) G$ h; q7 q& b$ o- s3、网络环境评估
) Y( K4 k, |8 E3 r% M. z6 V网络稳定性
7 ^2 _; O0 T4 O0 c3 Y( D带宽资源! R) z M/ U4 c: U8 \- Q# f
延迟要求
; h W% x; q7 ]8 H部署规模. g8 B1 U. R/ J6 Z* ~
基于以上,可以对MQTT以及CoAP两种通信方式进行一个对比
' @( H. ^ {' q4 x, s2 M" O/ ^
a! y; ~ {& N, \& K在传输层,MQTT基于TCP进行传输,以连接为导向,可靠传输;CoAP以UDP进行传输,无连接,轻量传输& [( T( B2 Q0 ~& {" h8 F0 X) C
在消息架构上,MQTT基于发布与订阅的模式及生产者与消费者的通信模型,适合多对多进行通信,而CoAP则基于请求与响应的通信方式,更加适合点对点的通信
1 G$ ]& ]$ G/ R% N4 x3 L在协议开销上两者都是极低的开销。: M+ u) ^! F" B4 T
在可靠性上,MQTT基于qos服务 0/1/2三级保证,而CoAP则又确认与非确认消息进行区分
! z0 L! j e1 v3 J! t# s* c四、如何选择与实施建议) y6 [+ o- A3 A" }/ \
以上常见5个场景的需要,更适合选择MQTT的通信方式,当然在选择MQTT通信后,如何选择QoS级别,如何规划主题结构、消息持久化,断线重连等问题还需要进行考虑。" `+ r" `7 W0 x6 h! O
0 t! E" c9 R0 X2 q& ?$ K3 n需要实时推送消息;* R$ X/ {7 C% H* q1 r# m3 e
设备具备持续连接能力;
1 s% L! x8 p9 v8 X/ F/ o要求可靠的消息传递;
- p. b$ V: Y5 ^" f6 F! b多设备之间需要通信;: _& ~$ g ]" _: H4 _
支持大规模设备接入。
: u$ o$ a, H. n9 m+ U在需要以下5个常见场景时,CoAP则更有优势,同时也需要考虑设计资源URI架构、实现观察者模式、考虑重传策略规划缓存机制、评估DTLS加密需求。
2 A, ^+ d% W& W/ a9 Q, l
, A) c: \+ b e; ^( R5 c+ ]2 U设备资源极其有限;" s8 J7 m% b- U: |
主要是简单的数据查询;1 d3 T' j4 B) M3 ]5 Q2 r
电池供电要求低功耗;3 n% T9 h4 l" P& m$ { B: o
网络条件不稳定;3 o5 Y7 I( a9 w& P- p9 y; c8 u
需要与REST架构集成。
; e% N5 q* m1 \8 b3 `总的来说选择合适的通信协议是物联网项目成功的关键因素。MQTT协议和CoAP协议各有优势,需要根据具体应用场景、设备特点和业务需求做出选择。随着物联网技术的发展,这两种协议也在不断演进,为物联网应用提供更好的支持。
4 d/ c' r- J* P& V( _& D
) L. {4 G3 u% }! B |
|