物聯(lián)網(wǎng)數(shù)據(jù)流,有哪三寶?
在物聯(lián)網(wǎng)世界中,MQTT(消息隊(duì)列遙測(cè)傳輸協(xié)議)和OPC-UA(OPC統(tǒng)一架構(gòu))已經(jīng)成為了在工業(yè)物聯(lián)網(wǎng)(IIoT)和工業(yè)4.0用例中,數(shù)據(jù)交換的開(kāi)放協(xié)議和平臺(tái)獨(dú)立標(biāo)準(zhǔn)。而ApacheKafka的數(shù)據(jù)流用于實(shí)時(shí)集成和處理任何規(guī)模的、海量數(shù)據(jù)的數(shù)據(jù)中心。本文將探討Kafka和各種IoT協(xié)議之間的關(guān)系,何時(shí)該使用哪種技術(shù),以及為何有時(shí)HTTP/REST是更好的選擇。最后,我們將探討兩個(gè)來(lái)自寶馬和奧迪的使用案例。
1.工業(yè)4.0數(shù)據(jù)流平臺(tái)通過(guò)連接設(shè)備來(lái)提高工廠的整體效率
工業(yè)4.0和工業(yè)物聯(lián)網(wǎng)(IIoT)需要通過(guò)系統(tǒng)近乎實(shí)時(shí)地傳輸、處理、分析和提供數(shù)據(jù)。這會(huì)導(dǎo)致數(shù)據(jù)量的逐日攀升,并讓制造商面臨數(shù)據(jù)多樣化的挑戰(zhàn)。然而,使問(wèn)題進(jìn)一步復(fù)雜化的是,傳統(tǒng)的IT環(huán)境持續(xù)存在于各種制造設(shè)施中。這往往限制了制造商實(shí)現(xiàn)跨業(yè)務(wù)進(jìn)行數(shù)據(jù)有效集成的能力。因此,大多數(shù)制造商都需要將數(shù)據(jù)復(fù)制和同步策略予以混合實(shí)施。目前,他們也正在從產(chǎn)品設(shè)計(jì)和制造到運(yùn)維環(huán)節(jié),努力提高其生產(chǎn)設(shè)施的整體設(shè)備效率(OEE)。與此同時(shí),由于新冠疫情的流行和2021年蘇伊士運(yùn)河的中斷,都會(huì)導(dǎo)致即時(shí)生產(chǎn)與供應(yīng)鏈問(wèn)題的凸顯。因此企業(yè)需要通過(guò)實(shí)時(shí)的流程和監(jiān)控,在如下方面確保生產(chǎn)線的自適應(yīng)能力:
準(zhǔn)時(shí)(JIT)的預(yù)測(cè)
構(gòu)建工廠的產(chǎn)能
人員配備與倒班狀況
原材料和產(chǎn)品價(jià)格的波動(dòng)
通常,由設(shè)備產(chǎn)生的數(shù)據(jù)必須在生成之后立即被轉(zhuǎn)換,并在整個(gè)企業(yè)中可用,來(lái)體現(xiàn)數(shù)據(jù)被提取的最大價(jià)值,提高工廠的整體效率,進(jìn)而避免嚴(yán)重故障。如今,寶馬和特斯拉之類的汽車制造商已經(jīng)認(rèn)識(shí)到了數(shù)據(jù)流平臺(tái)的潛力,正在利用ApacheKafka生態(tài)系統(tǒng)來(lái)流轉(zhuǎn)數(shù)據(jù)??梢哉f(shuō),數(shù)據(jù)流對(duì)于數(shù)據(jù)驅(qū)型制造公司的好處,不僅體現(xiàn)在數(shù)字化和自動(dòng)化轉(zhuǎn)型上,還包括如下方面:
使生產(chǎn)過(guò)程更加高效
多快好省
盡量減少錯(cuò)誤率
2.何時(shí)使用Kafka、MQTT和OPC-UA
如前文所述,Kafka是一個(gè)出色的數(shù)據(jù)流平臺(tái),可被用于大規(guī)模的實(shí)時(shí)消息傳遞、存儲(chǔ)、數(shù)據(jù)集成和處理。不過(guò),Kafka并非包治百病,它未能實(shí)現(xiàn)如下方面:
數(shù)百萬(wàn)客戶級(jí)別(如移動(dòng)應(yīng)用)的代理
API管理平臺(tái)
用于復(fù)雜查詢和批量分析的數(shù)據(jù)庫(kù)
具有設(shè)備管理等功能的物聯(lián)網(wǎng)平臺(tái)
一種用于硬實(shí)時(shí)應(yīng)用的技術(shù)
鑒于上述原因,Kafka需要通過(guò)與MQTT和OPC-UA的協(xié)同使用,來(lái)補(bǔ)齊短板。以近乎實(shí)時(shí)的方式,在工廠、公司、以及在全球范圍內(nèi),實(shí)現(xiàn)大量數(shù)據(jù)的處理和交換。
全球ApacheKafka和事件流用例
如上圖所示,ApacheKafka通常作為分散式數(shù)據(jù)流的數(shù)據(jù)網(wǎng)格節(jié)點(diǎn),能夠集成各種系統(tǒng),其中包括:邊緣、物聯(lián)網(wǎng)設(shè)備、以及業(yè)務(wù)軟件,并能夠獨(dú)立于底層基礎(chǔ)設(shè)施(如:邊緣、本地、公共、多云和混合云等)來(lái)執(zhí)行。因此,開(kāi)放、可擴(kuò)展、以及靈活的架構(gòu)對(duì)于與舊環(huán)境的集成,和利用現(xiàn)代化云原生應(yīng)用都是至關(guān)重要的。由事件驅(qū)動(dòng)的ApacheKafka等數(shù)據(jù)流平臺(tái)正好滿足了此類需求。它們收集相關(guān)傳感器的遙測(cè)數(shù)據(jù)、以及來(lái)自IT系統(tǒng)的數(shù)據(jù),并在數(shù)據(jù)傳輸時(shí),對(duì)其進(jìn)行處理。這便是“動(dòng)態(tài)數(shù)據(jù)”的概念。它區(qū)別于將事件存儲(chǔ)到數(shù)據(jù)庫(kù)中,以待日后查看的“靜態(tài)數(shù)據(jù)”。在物聯(lián)網(wǎng)用例中,我們通常認(rèn)為處理靜態(tài)數(shù)據(jù)的是一種“過(guò)時(shí)的架構(gòu)”。
3.使用域驅(qū)動(dòng)設(shè)計(jì)和真正的解耦來(lái)進(jìn)行分離
其實(shí),工廠的IT環(huán)境被建立在什么樣的基礎(chǔ)設(shè)施上并不重要。重要的是,新舊系統(tǒng)能夠?qū)崿F(xiàn)數(shù)據(jù)的實(shí)時(shí)集成,能夠以解耦的方式維持?jǐn)?shù)據(jù)的持續(xù)流動(dòng)和消息存儲(chǔ)。而與其他消息系統(tǒng)(如IT領(lǐng)域的RabbitMQ、或物聯(lián)網(wǎng)領(lǐng)域中的MQTT)相比,ApacheKafka的域驅(qū)動(dòng)設(shè)計(jì)(DDD)實(shí)現(xiàn)了背壓處理和數(shù)據(jù)可重放性的真正解耦,同時(shí)提升了高可用性和故障安全(fail-safe)性,這些都是生產(chǎn)環(huán)境中至關(guān)重要的。
用于工業(yè)物聯(lián)網(wǎng)MQTT和OPCUA的Kafka域驅(qū)動(dòng)設(shè)計(jì)
4.OPC-UA、MQTT、HTTP與其他
目前,開(kāi)放且標(biāo)準(zhǔn)化的物聯(lián)網(wǎng)架構(gòu)有三個(gè)通用的標(biāo)準(zhǔn):OPC-UA(OpenPlatformCommunicationsUnifiedArchitecture,開(kāi)放平臺(tái)通信統(tǒng)一架構(gòu))和MQTT(MessageQueuingTelemetryTransport,消息隊(duì)列遙測(cè)傳輸),這兩個(gè)是特定于物聯(lián)網(wǎng)的協(xié)議,另一個(gè)是簡(jiǎn)單的REST/HTTP。當(dāng)然,業(yè)界也有一些私有的特定協(xié)議。例如:Skynet的專有DataHub傳輸協(xié)議(DHTP,https://skkynet.com/iiot-protocol-comparison),以及開(kāi)放標(biāo)準(zhǔn)的替代方案--AMQP等。下表展示了它們?cè)谔匦陨系谋容^:
工業(yè)物聯(lián)網(wǎng)協(xié)議的比較
5.評(píng)估物聯(lián)網(wǎng)協(xié)議的決策樹(shù)
那么,哪一種更值得我們?nèi)ミx用呢?首先,需要強(qiáng)調(diào)的是,此類討論只有在您擁有選擇權(quán)的情況下才有意義。如果您在車間購(gòu)買并安裝了一臺(tái)新機(jī)器或PLC,而僅提供特定接口,那么您只有用的份,沒(méi)有選擇可言。當(dāng)然,不同領(lǐng)域的人員可能會(huì)有不同的選擇偏好。甚至有人會(huì)從TCO和ROI的角度,認(rèn)為專有方案會(huì)是更好的選擇。而總地說(shuō)來(lái),對(duì)于不同的物聯(lián)網(wǎng)協(xié)議,我的建議是:盡可能地使用開(kāi)放標(biāo)準(zhǔn),甚至可以按需將它們組合到一起。下面,讓我們來(lái)看一個(gè)簡(jiǎn)單的、如何在OPC-UA、MQTT、HTTP和其他專有的工業(yè)物聯(lián)網(wǎng)協(xié)議之間,做出選擇的“決策樹(shù)”:
MQTT、OPCUA、HTTPREST的工業(yè)物聯(lián)網(wǎng)決策樹(shù)
讓我們來(lái)討論一下上面的決策樹(shù):
HTTP/REST非常適合簡(jiǎn)單的用例(盡可能地保持簡(jiǎn)單)。HTTP的易懂易用特性,幾乎適用于任何場(chǎng)景。它不需要額外的工具、API或中間件,而且其通信是同步式的“請(qǐng)求-響應(yīng)”。如果您能夠采用HTTP(S)的80或443端口,而不是其他TCP端口的話,還能順利地得到安全團(tuán)隊(duì)的協(xié)助。當(dāng)然,HTTP屬于單向通信。例如,聯(lián)網(wǎng)的汽車需要一個(gè)HTTP服務(wù)器,來(lái)獲取從云端推送的數(shù)據(jù),它們會(huì)使用pub/sub。
MQTT非常適合于連接著數(shù)萬(wàn)或數(shù)十萬(wàn)臺(tái)設(shè)備,使用有限的帶寬和間斷性網(wǎng)絡(luò)的場(chǎng)景(如,聯(lián)網(wǎng)汽車的基礎(chǔ)設(shè)施)。其通信是使用MQTT代理作為中間人的異步發(fā)布與訂閱。MQTT不使用標(biāo)準(zhǔn)的數(shù)據(jù)格式,但是開(kāi)發(fā)人員可以使用Sparkplug作為構(gòu)建附加的組件。MQTT非常輕量級(jí),其服務(wù)質(zhì)量(QoS)、遺囑式功能,開(kāi)箱即用地解決了物聯(lián)網(wǎng)用例的各種要求。同時(shí)MQTT非常適合雙向通信(如,聯(lián)網(wǎng)汽車<-->云通信)等IT用例。此外,LoRaWAN和其他低功耗的廣域網(wǎng)都非常適合MQTT。
OPC-UA非常適合工業(yè)自動(dòng)化(如,生產(chǎn)線上的機(jī)器)。今天的通信通常是客戶端/服務(wù)器,但也支持發(fā)布/訂閱。它使用標(biāo)準(zhǔn)數(shù)據(jù)格式,并提供豐富、強(qiáng)大、復(fù)雜的功能、組件、以及行業(yè)特定數(shù)據(jù)格式集。OPC-UA非常適合OT與IT相集成的場(chǎng)景。OPCUA的TSN(time-sensitivenetworking,時(shí)間敏感網(wǎng)絡(luò))是一個(gè)可選組件。它是一種以太網(wǎng)通信標(biāo)準(zhǔn),可以提供開(kāi)放、確定性、以及硬實(shí)時(shí)(hardreal-time)通信。
專有協(xié)議適用于那些基于標(biāo)準(zhǔn)化的實(shí)現(xiàn)無(wú)法解決的特定問(wèn)題。這些協(xié)議通常是瑕瑜互見(jiàn)。它們?cè)趲?lái)強(qiáng)大的高性能的同時(shí),往往也比較昂貴且?guī)в芯窒扌浴?/p>
如前文所述,我們?cè)贠PC-UA、MQTT和其他協(xié)議之間進(jìn)行選擇時(shí),并不是非此即彼的。在許多工業(yè)案例中,我們可以將OPC-UA和MQTT同時(shí)用于現(xiàn)代化應(yīng)用中,取長(zhǎng)補(bǔ)短,讓每種協(xié)議都發(fā)揮其出色的作用,從而讓老舊的應(yīng)用和專有的SCADA系統(tǒng)、或其他歷史遺留數(shù)據(jù)與專有中間件相集成。
6.MQTT、OPC-UA和Kafka之間的集成
在將MQTT、OPC-UA和Kafka的集成過(guò)程中,我們通常會(huì)涉及到如下設(shè)備與組件:
KafkaConnect連接器:可以實(shí)現(xiàn)協(xié)議級(jí)別的原生Kafka集成。ConfluentHub(https://www.confluent.io/hub/)可以作為它的替代方案。一些企業(yè)往往會(huì)構(gòu)建他們自定義的KafkaConnect連接器。
自定義集成:通過(guò)低級(jí)別的MQTT/OPC-UAAPI(如,使用Kafka的HTTP/REST代理)或Kafka客戶端(如,用于Windows環(huán)境的.NET/C++)進(jìn)行集成。
開(kāi)放的第三方物聯(lián)網(wǎng)中間件:通用的開(kāi)源式集成中間件(如,帶有IoT連接器的ApacheCamel)、特定于IoT的框架(如ApachePLC4X或EclipseDitto),或基于標(biāo)準(zhǔn)API的專有第三方IoT中間件。
商業(yè)化物聯(lián)網(wǎng)平臺(tái):適合現(xiàn)有的歷史遺留部署,并能夠起到“膠合”代碼與協(xié)議作用(如Modbus、西門子S7等)。傳統(tǒng)的歷史數(shù)據(jù)、專有協(xié)議、單體架構(gòu)、有限的可擴(kuò)展性、ETL批處理平臺(tái)都非常適合采用商業(yè)化物聯(lián)網(wǎng)平臺(tái),在內(nèi)部部署和云服務(wù)之間架起一座橋梁。
7.使用OPC-UA或MQTT去連接機(jī)器與設(shè)備
雖然OPCUA和MQTT并非為數(shù)據(jù)處理和集成而設(shè)計(jì),但是它們的優(yōu)勢(shì)在于實(shí)時(shí)建立與設(shè)備、機(jī)器、PLC、物聯(lián)網(wǎng)網(wǎng)關(guān)或車輛之間的雙向“最后一英里”通信。如上文所述,這兩種標(biāo)準(zhǔn)有著不同的側(cè)重點(diǎn),可以被結(jié)合起來(lái)使用。目前,幾乎所有的現(xiàn)代化機(jī)器、PLC和智能工廠的物聯(lián)網(wǎng)網(wǎng)關(guān)都可以支持OPC-UA。而MQTT主要被用于較差的網(wǎng)絡(luò)、以及大規(guī)模的設(shè)備場(chǎng)景中。數(shù)據(jù)流往往通過(guò)連接器流入數(shù)據(jù)流平臺(tái)。此類平臺(tái)既可以與“邊緣”的物聯(lián)網(wǎng)平臺(tái)并行部署,也可以被組合到混合云的場(chǎng)景中。作為靈活的數(shù)據(jù)中心,數(shù)據(jù)流平臺(tái)可以在OT和IT應(yīng)用之間進(jìn)行數(shù)據(jù)的集成和處理。除了OT端的OPC-UA和MQTT,無(wú)論是在邊緣、本地、還是在云端,MES、ERP、CRM、數(shù)據(jù)倉(cāng)庫(kù)、以及數(shù)據(jù)湖等IT應(yīng)用都是實(shí)時(shí)連接的。
ApacheKafka作為具有MQTT和OPCUA的開(kāi)放式可擴(kuò)展歷史數(shù)據(jù)庫(kù)
8.用于開(kāi)發(fā)和預(yù)測(cè)仿真的數(shù)字孿生
通過(guò)持續(xù)地以流式傳輸數(shù)據(jù),以及處理和集成傳感器的數(shù)據(jù),數(shù)據(jù)流平臺(tái)能夠創(chuàng)建一個(gè)開(kāi)放、可擴(kuò)展且高度可用的基礎(chǔ)架構(gòu),并用于部署數(shù)字孿生。
數(shù)字孿生結(jié)合了物聯(lián)網(wǎng)、人工智能、機(jī)器學(xué)習(xí)和其他技術(shù),旨在創(chuàng)建物理組件、設(shè)備和流程等虛擬模擬。通過(guò)參考?xì)v史數(shù)據(jù),數(shù)字孿生也可以在物理對(duì)應(yīng)物所生成的數(shù)據(jù)發(fā)生變化時(shí),立即進(jìn)行自我更新。通常,Kafka可與其他技術(shù)相結(jié)合,以構(gòu)建數(shù)字孿生。例如,EclipseDitto是一個(gè)將Kafka與IoT協(xié)議相結(jié)合的項(xiàng)目。一些團(tuán)隊(duì)也會(huì)使用Kafka和MongoDB等數(shù)據(jù)庫(kù),定制數(shù)字孿生。
ApacheKafka助力工業(yè)4.0和工業(yè)物聯(lián)網(wǎng)的數(shù)字孿生
如上圖所示,在工業(yè)4.0中,機(jī)器操作員可以通過(guò)數(shù)字孿生,詳細(xì)了解其模擬或監(jiān)控的元素的生命周期,不斷優(yōu)化產(chǎn)品和流程,測(cè)試單個(gè)部件或整個(gè)系統(tǒng)的功能和性能,進(jìn)而對(duì)能耗和磨損進(jìn)行預(yù)測(cè)。
9.狀態(tài)監(jiān)測(cè)和預(yù)測(cè)性維護(hù)
在現(xiàn)代化維護(hù)中,機(jī)器操作員往往需要及時(shí)了解到:所有設(shè)備是否能按照預(yù)期運(yùn)行?在需要進(jìn)行維護(hù)工作之前,這些設(shè)備通??梢赃\(yùn)行多長(zhǎng)時(shí)間?異常和錯(cuò)誤的原因是什么?
一方面,他們需要依賴可靠且可擴(kuò)展的基礎(chǔ)架構(gòu),以支持?jǐn)?shù)據(jù)流的處理、分析和集成,進(jìn)而實(shí)時(shí)地檢測(cè)出諸如:嚴(yán)重的溫度波動(dòng)或振動(dòng)等關(guān)鍵性指標(biāo),以便采取措施,保障工廠的生產(chǎn)效率。另一方面,數(shù)字孿生可以通過(guò)監(jiān)測(cè)和診斷,將當(dāng)前傳感器捕捉到的數(shù)據(jù)與歷史數(shù)據(jù)相關(guān)聯(lián),從而識(shí)別故障的原因,方便采取預(yù)測(cè)性的維護(hù)措施。而最重要的是,通過(guò)確保設(shè)備和設(shè)施僅在必要時(shí)得到維修,他們可以更加有效地實(shí)施預(yù)測(cè)性維護(hù)計(jì)劃,既做到為制造型企業(yè)節(jié)省寶貴的資源,又可以避免代價(jià)高昂的停機(jī)時(shí)間。
使用ApacheKafka的ksqlDB和TensorFlow進(jìn)行狀態(tài)監(jiān)控和預(yù)測(cè)性維護(hù)
10.聯(lián)網(wǎng)汽車和流式機(jī)器學(xué)習(xí)
聯(lián)網(wǎng)汽車是可以與車外其他系統(tǒng)進(jìn)行雙向通信的汽車。它實(shí)現(xiàn)了汽車與車內(nèi)、車外的各種設(shè)備和應(yīng)用共享互聯(lián)網(wǎng)上的訪問(wèn)和數(shù)據(jù)。而前面提到的MQTT與Kafka相結(jié)合的方式,便可以服務(wù)于聯(lián)網(wǎng)汽車及其基礎(chǔ)設(shè)施的用例。
下圖展示了Kafka如何與數(shù)萬(wàn)、甚至數(shù)十萬(wàn)個(gè)物聯(lián)網(wǎng)設(shè)備相集成,并實(shí)時(shí)地處理數(shù)據(jù)。在聯(lián)網(wǎng)汽車的基礎(chǔ)設(shè)施中,該流程可以自動(dòng)化地進(jìn)行預(yù)測(cè)性防護(hù)(即異常檢測(cè)),以及預(yù)測(cè)發(fā)動(dòng)機(jī)的故障:
Kappa架構(gòu)、KafkaMQTT的Kubernetes和Tensorflow用于流式機(jī)器學(xué)習(xí)
11.寶馬案例研究使用智能工廠和云服務(wù)實(shí)現(xiàn)制造4.0
讓我們從技術(shù)角度來(lái)探討一下,寶馬是如何成功地將Kafka和OPC-UA作為邊緣設(shè)備和云端應(yīng)用之間的實(shí)時(shí)數(shù)據(jù)中心。在實(shí)施之前,寶馬希望達(dá)到的目標(biāo)是:
在不影響其他服務(wù)的情況下,獲取IoT數(shù)據(jù),并將其傳輸?shù)秸_的位置
一次收集,多次處理和消費(fèi)(不同的消費(fèi)端在不同的時(shí)段,使用不同的通信范式,如:實(shí)時(shí)、批處理、請(qǐng)求-響應(yīng))
實(shí)現(xiàn)可擴(kuò)展性的實(shí)時(shí)處理,并縮短上市的時(shí)間
寶馬團(tuán)隊(duì)通過(guò)使用OPC-UA連接器,直接與Azure中的ConfluentCloud進(jìn)行通信,成功地將其全球智能工廠的負(fù)載相連接,并在公共云中實(shí)現(xiàn)了實(shí)時(shí)復(fù)制。其中,作為消息傳遞平臺(tái)的Kafka提供了不同接口之間的真正解耦、透明化和數(shù)字創(chuàng)新。而Confluent通過(guò)產(chǎn)品和專業(yè)知識(shí),增加了制造系統(tǒng)的穩(wěn)定性。此外,實(shí)時(shí)優(yōu)化的供應(yīng)鏈管理方案也提供了有關(guān)物理上、以及ERP系統(tǒng)中的正確庫(kù)存信息。
12.奧迪案例研究
采用群體智能(SwarmIntelligence)的聯(lián)網(wǎng)汽車
奧迪使用ApacheKafka構(gòu)建了聯(lián)網(wǎng)汽車的基礎(chǔ)設(shè)施。他們?cè)贙afka峰會(huì)上分享并探討了其用例和架構(gòu)。
他們構(gòu)建了實(shí)時(shí)數(shù)據(jù)分析、群體智能、合作伙伴協(xié)作、以及預(yù)測(cè)性AI,實(shí)現(xiàn)了聯(lián)網(wǎng)汽車的所有傳感器數(shù)據(jù),經(jīng)過(guò)實(shí)時(shí)處理與存儲(chǔ),用于歷史分析和實(shí)時(shí)報(bào)告的一整套流程。
13.題外話
如果網(wǎng)絡(luò)基礎(chǔ)設(shè)施的連接性允許您在自己IoT項(xiàng)目中使用“無(wú)服務(wù)器Kafka”的話,那么您也可以像上述寶馬的案例那樣,利用ConfluentCloud在全球推廣智能工廠,用“無(wú)服務(wù)器Kafka”來(lái)處理和集成數(shù)據(jù)流。通過(guò)無(wú)服務(wù)器數(shù)據(jù)流,您可以更加專注于物聯(lián)網(wǎng)業(yè)務(wù)的應(yīng)用,并提高設(shè)備綜合效率(OEE)。
譯者介紹
陳峻(JulianChen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對(duì)內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專注傳播網(wǎng)絡(luò)與信息安全知識(shí)與經(jīng)驗(yàn);持續(xù)以博文、專題和譯文等形式,分享前沿技術(shù)與新知;經(jīng)常以線上、線下等方式,開(kāi)展信息安全類培訓(xùn)與授課。
譯者|陳峻
審校|孫淑娟
責(zé)任編輯:武曉燕
來(lái)源: 51CTO技術(shù)棧