前言
MQTT 協(xié)議早已是物聯(lián)網(wǎng)領(lǐng)域當之無愧的主流協(xié)議,其憑借輕巧高效、可靠安全、雙向通訊等特性在諸多行業(yè)物聯(lián)網(wǎng)平臺搭建中得到了廣泛的應用。那么 MQTT 協(xié)議在車聯(lián)網(wǎng)場景中的應用情況如何呢?
本文將從 EMQ 車聯(lián)網(wǎng)行業(yè)用戶實際案例經(jīng)驗出發(fā),對比不同物聯(lián)網(wǎng)通信協(xié)議在車聯(lián)網(wǎng)平臺搭建應用中的利弊,分享企業(yè)該如何基于自身情況選擇合適的 MQTT 消息接入產(chǎn)品與服務,以及當前在數(shù)據(jù)傳輸安全、數(shù)據(jù)集成等方面的最熱門技術(shù)方案。
MQTT 協(xié)議適合車聯(lián)網(wǎng)嗎?
整個車聯(lián)網(wǎng)業(yè)務架構(gòu)復雜,涉及多個通信環(huán)節(jié),在本文中我們討論的是車聯(lián)網(wǎng)平臺主要負責的云-端消息接入模塊。
MQTT 是基于發(fā)布/訂閱模式的物聯(lián)網(wǎng)通信協(xié)議,具有簡單易實現(xiàn)、支持 QoS、報文小等特點,占據(jù)了物聯(lián)網(wǎng)協(xié)議的半壁江山。在車聯(lián)網(wǎng)場景中,MQTT 依然能夠勝任海量車機系統(tǒng)靈活、快速、安全接入,并保證復雜網(wǎng)絡環(huán)境下消息實時性、可靠性, 其主要應用優(yōu)勢如下:
開放消息協(xié)議,簡單易實現(xiàn)。市場上有大量成熟的軟件庫與硬件模組,可以有效降低車機接入難度和使用成本;
提供靈活的發(fā)布訂閱和主題設計,能夠通過海量的 Topic 進行消息通信,應對各類車聯(lián)網(wǎng)業(yè)務;
Payload 格式靈活,報文結(jié)構(gòu)緊湊,可以靈活承載各類業(yè)務數(shù)據(jù)并有效減少車機網(wǎng)絡流量;
提供三個可選的 QoS 等級,能夠適應車機設備不同的網(wǎng)絡環(huán)境;
提供在線狀態(tài)感知與會話保持能力,方便管理車機在線狀態(tài)并進行離線消息保留。
綜上,如果配以具備海量車端連接、軟實時、高并發(fā)數(shù)據(jù)吞吐以及多重安全保障能力的消息中間件產(chǎn)品,MQTT 協(xié)議無疑是將為車聯(lián)網(wǎng)平臺的搭建帶來便利。
相比于 MQTT,其他協(xié)議差在哪里?
目前為止大多數(shù)車聯(lián)網(wǎng)客戶首選的都是 MQTT 協(xié)議,我們也遇到過一些客戶曾選擇其他諸如私有 TCP、HTTP 協(xié)議,但從最終結(jié)果來看,MQTT 都是車聯(lián)網(wǎng)場景下的最佳選擇。
在沒有接觸過 MQTT 協(xié)議之前,華南某大型主機廠采用了私有化的 TCP 協(xié)議(ACP 協(xié)議)構(gòu)建車聯(lián)網(wǎng)服務平臺。經(jīng)過長周期的協(xié)議規(guī)范設計和開發(fā),基本實現(xiàn)了車聯(lián)網(wǎng)平臺的主要功能。但隨著車聯(lián)網(wǎng)業(yè)務場景的不斷增加和車機數(shù)量的不斷增長,私有化的 TCP 的弊端逐漸凸顯:協(xié)議私有化定義與版本維護困難、所有的協(xié)議功能(如?;睢嗑€重連、離線消息等)都需要定制開發(fā),私有的協(xié)議也導致終端硬件適配都需要定制開發(fā),成本高、周期長,更新迭代慢等問題突出。隨著 MQTT 協(xié)議生態(tài)不斷完善和在車聯(lián)網(wǎng)平臺通訊協(xié)議選型中被廣泛采用,該主機廠在新一代車聯(lián)網(wǎng)平臺的開發(fā)中開始采用 MQTT 協(xié)議,基于 EMQX 物聯(lián)網(wǎng)接入平臺為其提供的完善 MQTT 協(xié)議支持,不僅降低了開發(fā)成本、縮短了開發(fā)周期,同時實現(xiàn)了更多的功能場景和運維手段。
華東某大型主機廠現(xiàn)有一百多萬的存量車機,之前的車聯(lián)網(wǎng)平臺采用私有的 TCP 協(xié)議構(gòu)建,面對百萬車機海量的消息通信,私有化的 TCP 協(xié)議維護成本高,消息可靠性無保障,日常系統(tǒng)維護和功能擴展開發(fā)工作量大。隨著 MQTT 協(xié)議在集團內(nèi)部車聯(lián)網(wǎng)平臺廣泛采納,該主機廠也開始啟動 MQTT 協(xié)議的改造升級工作,目前針對部分車型已經(jīng)通過 OTA 升級的方式完成了升級,未來他們計劃分階段逐步完成所有車型的升級改造工作。
還有一個車企客戶早期與我們接觸過,但考慮到初期業(yè)務比較簡單以及自身技術(shù)選型問題,最終使用了自建 HTTP 服務的形式接入車機。隨著業(yè)務發(fā)展,傳統(tǒng)的請求-響應模式通信已經(jīng)無法滿足新增業(yè)務需求,同時隨著功能與終端數(shù)量增多,整個平臺通信量成倍增加,使用 HTTP 接入出現(xiàn)了性能瓶頸。該客戶最終還是選擇了 MQTT 作為接入?yún)f(xié)議,使用 EMQX 提供的數(shù)據(jù)接入方案很好地解決了之前的業(yè)務難題。
總體來看,私有協(xié)議具有封閉性、排他性等特點,在制定初期是為了解決特定的問題而設計導致缺乏靈活性,往往在業(yè)務調(diào)整之后難以滿足新的需求,企業(yè)不得不在協(xié)議中加入更多的特性;又或者因為接入量的增多,私有協(xié)議 Server 端過早達到了性能和擴展性的瓶頸。以上種種原因最終導致用戶工作的重心從業(yè)務開發(fā)轉(zhuǎn)移到接入層、中間件的開發(fā),無形中增加了平臺項目成本。因此 MQTT 協(xié)議順理成章地成為最適合車聯(lián)網(wǎng)領(lǐng)域的主流協(xié)議。
如何選擇 MQTT 消息接入產(chǎn)品/服務?
平臺設計中,系統(tǒng)架構(gòu)設計與產(chǎn)品選型是一個嚴謹?shù)倪^程。用戶首先要結(jié)合應用場景,評估產(chǎn)品功能是否滿足業(yè)務需求,性能與可擴展性能否能夠支撐平臺短期的設計容量以及未來可能的增長;產(chǎn)品使用成本也是一個重要的考量,產(chǎn)品本身的成本、IaaS 基礎設施、開發(fā)集成和維護工作這些都會影響客戶的總體擁有成本;此外還應當結(jié)合產(chǎn)品全球化能力進行評估,對于有海外業(yè)務的項目,產(chǎn)品能否支持全球部署、是否滿足各個地區(qū)的合規(guī)性、能否避免云計算提供商鎖定這些都是選擇產(chǎn)品的依據(jù)。
EMQ 的車聯(lián)網(wǎng)客戶在選型過程中經(jīng)常會與云計算提供商的物聯(lián)網(wǎng)消息接入 SaaS 服務進行對比。相比之下 EMQX 的優(yōu)勢主要在于私有部署和標準化能力 —— 支持私有部署到任意云平臺,無平臺鎖定,提供標準 MQTT 協(xié)議,這也是車聯(lián)網(wǎng)客戶普遍看重的一點。
避免云計算供應商鎖定有助于企業(yè)用戶獲得競價優(yōu)勢,可以減少企業(yè)與云計算供應商中止合作關(guān)系而帶來的影響。另一方面多云支持也可以充分使用不同云計算提供商的技術(shù)與商業(yè)優(yōu)勢,比如一些全球運營的企業(yè)可以在國內(nèi)和海外選擇不同的云計算提供商。
此外還有相當一部分客戶看中 EMQX 較低的使用成本,根本原因是由于計費方式不同,往往業(yè)務規(guī)模越大,云計算提供商的接入服務成本越高。
不過從成本考量也有例外。之前曾有車企用戶評估了云提供商的接入服務和 EMQX 后,考慮到自身的運維成本和風險后最終放棄私有部署,選擇了云提供商的接入服務。而隨著 EMQ 的全托管 MQTT 消息服務 - EMQX Cloud 的上線,這個問題也得到解決。通過 EMQX Cloud,現(xiàn)在用戶可以在免除基礎設施管理維護負擔的同時,保持了同私有部署一致的成本預算清晰可控、跨云跨平臺等優(yōu)勢,沒有后顧之憂地開展車聯(lián)網(wǎng)平臺建設。
對于有私有部署需求的客戶,EMQX 也有其獨有的優(yōu)勢。EMQX 提供全球性的商業(yè)支持,較高的產(chǎn)品性能可帶來海量連接和吞吐能力,規(guī)則引擎與數(shù)據(jù)橋接則提供快速集成能力。同時針對車聯(lián)網(wǎng)領(lǐng)域,高可靠和易擴展架構(gòu)能力以及云邊一體的 V2X 信息交互能力也讓 EMQX 在支持私有部署的同類產(chǎn)品中脫穎而出。
2018 年上汽大眾在設計研發(fā)新一代車聯(lián)網(wǎng)系統(tǒng)時,SC 部門考慮到新型車聯(lián)網(wǎng)大并發(fā)、低時延、高吞吐的場景需求,參考了國內(nèi)外主流新型車聯(lián)網(wǎng)系統(tǒng)架構(gòu),最終采用了基于 MQTT 協(xié)議建設新一代車聯(lián)網(wǎng)平臺。
該項目中,MQTT 的特性與 EMQX 強大規(guī)則引擎數(shù)據(jù)集成能力和通用型總線能力有效滿足了客戶對復雜網(wǎng)絡下消息實時性可靠性的要求,并解決了項目時間緊、任務重,需要快速開發(fā)對接的需求。
查看客戶成功故事: ??上汽大眾聯(lián)合 EMQ 打造新一代智慧車聯(lián)網(wǎng)系統(tǒng)??
大家都在使用什么技術(shù)方案?
作為消息中間件,EMQX 提供了豐富且靈活的集成能力,且每個功能都提供了不同的技術(shù)方案以供用戶選擇,經(jīng)過長期使用總結(jié),比較熱門的技術(shù)方案如下:
安全保障
在傳輸鏈路層上我們均推薦用戶啟用 TLS 加密傳輸,但是多數(shù)云計算提供商的負載均衡產(chǎn)品不支持 TLS 終結(jié),生產(chǎn)部署時需要額外部署 HAProxy 等組件來卸載 TLS 證書。另外有部分客戶需要國密算法 TLS 加密傳輸,我們也專門定制提供了方案。
TBox 接入最常見的是使用證書認證,EMQX 提供可擴展的認證鏈,支持第三方認證平臺擴展(如 PKI 系統(tǒng)),基于用戶名/密碼的外置數(shù)據(jù)源和內(nèi)部數(shù)據(jù)庫認證其次。
此外絕大部分用戶都啟用了 EMQX 鑒權(quán)功能,為不同 TBox 終端分配相應的發(fā)布、訂閱權(quán)限以有效保護數(shù)據(jù)安全。
數(shù)據(jù)集成
將流經(jīng) EMQX 的海量車聯(lián)網(wǎng)數(shù)據(jù)與業(yè)務系統(tǒng)連接是客戶最重視的能力,EMQX 內(nèi)置了規(guī)則引擎和數(shù)據(jù)橋接能力,可以將 MQTT 數(shù)據(jù)流式傳輸?shù)?Kafka、各類 SQL / NoSQL / 時序數(shù)據(jù)庫中,而實際項目中絕大多數(shù)客戶都使用 Kafka 作為后端流處理組件。
Kafka 專注于數(shù)據(jù)的存儲和讀取,而 EMQX 則側(cè)重于客戶端和服務器之間的通信,EMQX 用來快速接收和處理來自大量物聯(lián)網(wǎng)設備的消息,Kafka 可以收集并存儲這些數(shù)據(jù)并將其發(fā)送給后端程序來分析和處理,這個架構(gòu)是目前應用最廣的數(shù)據(jù)集成方案。
寫在最后
目前汽車電子發(fā)展迅速,助推車聯(lián)網(wǎng)行業(yè)技術(shù)升級,智能交通及汽車行業(yè)未來市場前景可觀,可以預見有更多的車主消費者和騎車廠家將從中收益?;谕晟频?MQTT 協(xié)議和 EMQX 強大的產(chǎn)品能力可以幫助車聯(lián)網(wǎng)平臺開發(fā)者快速構(gòu)建健壯、靈活的車聯(lián)網(wǎng)平臺。EMQ 也將緊跟行業(yè)發(fā)展趨勢,推進消息傳輸和邊緣計算相關(guān)的技術(shù)發(fā)展和落地,為自動駕駛、車輛協(xié)同、車聯(lián)網(wǎng)用戶提供更快、更好、更智能的消息服務基礎設置。