本文來源于《華為云 DTSE?》第五期開源專刊,更多文章請查看:https://bbs.huaweicloud.com/blogs/435823
作者:賀張儉華為云 IoT 技術專家
摘要
隨著物聯網平臺業務的快速增長,基于傳統消息中間件構筑面臨著處理億級設備連接和海量數據的挑戰。本文分析了消息中間件的架構發展趨勢以及核心優勢,還探討了 Apache Pulsar 在華為云 IoT 平臺上的實踐應用,展示了華為云 IoT 是如何在其之上構筑支持億級設備和處理大規模數據流方面的高安全、高可靠、高性能。
物聯網平臺推送業務介紹
華為云 IoTDA 服務是華為云物聯網的一個核心底座服務,提供海量設備連接上云、設備和云端雙向消息通信、數據流轉、設備聯動規則等能力,上圖為 IoTDA 架構圖。數據流轉服務是華為云 IoTDA 的一個核心功能,為用戶提供高效、靈活的數據處理能力。當物聯網平臺中的設備滿足預設規則條件時,平臺會自動觸發相應的操作,幫助用戶實現關鍵業務目標,如將數據對接至華為云其他服務,實現全棧的數據存儲、計算和分析。針對各式各樣的用戶、開發者,華為云 IoTDA 規劃了多種接受數據方式。
物聯網平臺推送業務擴展性遇到問題
談到消息中間件,就不得不提到 Apache Kafka,Apache Kafka 在 2011 年開源,在過往的一段時間內幾乎成為了消息中間件的代名詞、消息中間件接口上的事實標準。同時 Confluent 公司也積極地在做 Kafka 的商業化服務,近年來也完成了去 ZooKeeper、級聯存儲等重大特性。物聯網平臺最初也使用 Apache Kafka 作為其消息組件。
Kafka 作為早期的領跑者,憑借簡潔的概念,優秀的性能,積累了大量的用戶和豐富的場景應用。但在應用上云、業務量不斷上漲、SaaS 應用多租化的趨勢下,暴露出了一些問題。
?消息中間件費用高:出于可靠性的要求,常見的高可用方案都會將數據至少分布在兩個 AZ 上,其費用包括云上磁盤存儲費用,以及部分公有云跨可用區流量費用,值得一提的是,像華為云等一些云廠商不收取跨可用區流量費用。
?擴容時間長:云上的應用更加彈性,往往需要在業務高峰時進行擴容,Kafka 的 topic 數據持久化在本地磁盤,一旦進行擴容,需要進行數據的遷移,這個時間可能會達到小時級甚至天級別。
?Topic 量級限制:隨著 SaaS 應用的發展,租戶間的消息隊列隔離變得更加重要。Kafka 的存儲模型,一個 partition 對應一個磁盤文件,且依賴 PageCache。在 Topic 量級超過 5000 之后,性能表現結果較差。
?長尾時延高:Kafka 的消息寫入需要等待 Leader 落盤成功才能寫入,相比更高 SLA 保障或 Quorum 模式的系統沒有優勢。
?消費模型單一:消息中間件需要支持隊列(共享)的消費模式,從而在較多消費者連接的時候降低資源的大量浪費。而像 AMQP 這種業務則必須這種消費模式,否則需要在業務層自己構筑相應的能力。
消息中間件架構發展趨勢與華為云的實踐
面對這些問題,市場上的挑戰者們如 AutoMQ、Pulsar、WarpStream 等提出了各自的解決方案,從目前公開的資料來看:
?降低消息中間件費用:為降低持久化費用,可以廣泛使用對象存儲(使用級聯存儲或直接存儲或僅在 WAL 中使用磁盤)。而對于跨可用區流量費用,除非直接存儲到高可用的對象存儲,否則流量費在所難免。
?縮短擴容時間:擴容時間長由于主從磁盤的復制模式,擴容出的節點需要從舊的磁盤處復制內容,這時候寫入還在持續,這一過程可能需要較長時間完成。可以通過解決存儲的擴容問題(使用對象存儲或 Quorum 的模式),或盡量降低需要復制的內容(級聯存儲到對象存儲)。
?擴大 Topic 量級:從大數據批量處理的視角來看,問題并不顯著。但在 SaaS 應用或物聯網解決方案中,有著很強的單通道訴求,租戶與租戶間,設備與設備間的消息隊列隔離變得更加重要。通常通過存儲模型的優化,避免單個 Topic 對應單個文件句柄來解決。
?降低長尾時延:可以通過 WAL 或 Quorum 兩種技術手段來降低時延。
?消費模型多樣化:此特性并不是一個通用問題,問題場景出在較多消費者能力較差需要共享消費單個 partition 時,(企業)內網大數據處理中很少出現這個場景。截止目前,只有 Pulsar 做了隊列模型消費的支持,不過 Kafka 也提出了 KIP-932 來支持隊列的消費模式,預期在接下來能補齊隊列消費模式。
從大的實現策略上來看,關鍵的技術決策分歧點如下圖(圖中虛線為可選模塊)
?協議層,支持一種或多種協議,支持 Kafka 協議還是支持 Pulsar 協議?
?是否存在 WAL,擁有 WAL 會表現出更低的延遲,但是由于 WAL 本身需要高可用,無法避免一份跨 AZ 的流量費用
?存儲層,是否直接使用對象存儲,或者是否使用分級存儲,將冷數據 offload 到對象存儲
?存儲層,如果使用磁盤存儲,使用主從模式還是 Quorum 模式,Quorum 會有更平穩的延時(如 P99),但網絡拓撲可能會變得復雜(為了性能,通常客戶端會直接連接多個 broker)
根據上面的技術分歧點,業內的 AutoMQ、Kafka、Pulsar、WarpStream 的技術路線可以描述為:
?AutoMQ:支持 Kafka 協議,使用 WAL,持久化存儲在對象存儲上的消息中間件。
?Kafka:支持 Kafka 協議(Kafka 當然支持 Kafka 協議),無 WAL,持久化存儲在主從模式的磁盤上,同時支持級聯到對象存儲的消息中間件。
?Pulsar:支持 Kafka、Pulsar、AMQP 等多種協議,使用 WAL,持久化存儲在 Quorum 的磁盤上,同時支持級聯到對象存儲的消息中間件。
?WarpStream:支持 Kafka 協議,無 WAL,持久化存儲在對象存儲的消息中間件。
總得來說,針對消息中間件的關鍵優化點,業內達成了一定程度上的共識,協議也一定程度上形成了事實上的標準(Kafka 協議),接下來可能細節設計、工程能力會變得更加重要。
Apache Pulsar 在 Kafka 的挑戰者中誕生較早,且相對全面,較好地解決了擴容時間長、Topic 量級限制、長尾時延高、消費模型單一的問題。華為云 IoTDA 最終選型基于 Apache Pulsar 構筑核心消息中間件。
Apache Pulsar 官方描述
Apache Pulsar 是 Apache 軟件基金會頂級項目,是下一代云原生分布式消息流平臺,集消息、存儲、輕量化函數式計算為一體,采用計算與存儲分離架構,支持多租戶、持久化、多機房跨區域數據復制,具有強一致性、高吞吐、低延時及高擴展性等流數據存儲特性,被看作是云原生時代實時消息流傳輸、存儲和計算的理想平臺。
華為云 IoT 不僅僅深度使用了 Apache Pulsar,同時還積極參與 Pulsar 社區的發展,致力于提升 Pulsar 的安全性、可靠性和功能性,除了已經合并的 300+PR 貢獻(含下游、周邊項目)之外,還開發了多項增強功能,計劃在未來合并到社區版本中。
?調試能力增強:Pulsar 自帶的調試能力只能通過調整 broker 的日志級別來觀察 debug 信息,海量消息場景下,難以在生產環境開啟。IoT 產品部將 Pulsar 與配置中心對接,引入新的配置項,僅為指定的主題打印詳細的調試信息,從而快速識別和解決消息從生產者到服務端的延遲問題。這一特性上線后,幫助排查解決數十個問題。
?性能相關增強:將 SkyWalking 調用鏈能力集成到 Pulsar 和 BookKeeper 中,提供細節化的性能分析。有助于用戶了解系統的性能情況,識別長尾請求,進行做出性能優化
?可靠性增強:與社區更傾向于在問題發生后解決問題相比,IoT 產品部采取的策略是增強系統的自愈能力。例如,當檢測到磁盤數據不一致時可自動重啟以修復數據,生產者失敗率過高時可重建生產者,以及當 Broker 檢測到消費者異常(如持續生產、有接受隊列長度但無消費)時自動斷開消費者鏈接。盡管這些措施可能導致丟失一些故障定位信息,但它們彌補了社區在自動恢復方面的不足,確保系統在異常情況下保持穩定運行。
華為云 IoT & 豐圖科技案例分析
豐圖科技的前身是順豐科技的地理信息研發中心,是順豐集團的子公司。致力于打造數字化和 AI 系統能讀懂的實時精準地圖,為企業和個人提供位置智能決策服務。
客戶痛點:
1.消息并發數 20 倍增長
2.車輛高頻行駛
豐圖科技擁有 3 萬 + 貨運車輛攝像頭負責地圖拍攝,接入的數據流轉,最高可達 15 萬 TPS。華為云 IoT 相比企業自建平臺省錢省心,它擁有高可用、高可靠、高性價比的平臺實例,并支持按需擴容。
華為云 IoT 憑借高可用、高可靠的消息總線,穩定支持 15 萬 TPS 的數據流轉,快速將上云的數據流轉給 EI、大數據等高階服務,幫助客戶快速挖掘數據價值。助力豐圖科技通過貨運車輛的運行軌跡,獲取實時街景,完成動態地圖的繪制,基于傳感數據,打造新商業模式。
總結
華為云 IoT 團隊積極參與 Apache Pulsar 及其下游項目的社區發展,確保了 Pulsar 在華為云物聯網平臺上的穩定運行超過五年,從而增強了平臺的核心競爭力。此外,該團隊也對 Apache BookKeeper、ApolloConfig、openGemini 等其他開源項目做出了顯著貢獻。華為云 IoT 產品部將繼續致力于積極參與和支持開源社區,不僅通過技術分享和問題解決,還積極參與開源項目的治理、新功能的開發及社區的建設等多個方面,有效推動技術創新,并實現 IoT 業務與技術的協同發展。
憑借與開源社區的緊密合作,華為云 IoT 平臺在高并發環境下的高性能表現得到了提升,為企業提供了可靠、高效的服務。IoT 產品團隊將繼續為物聯網的高效運轉和數字化轉型提供更全面的支持。
本文鏈接:http://www.tebozhan.com/showinfo-26-125098-0.html物聯網平臺如何支持億級設備、海量租戶推送?從消息中間件架構發展趨勢看華為云 IoT 的思考
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com