?

基于開源軟件搭建設計NB-IoT物聯網應用系統的分析

2019-02-26 00:59
廣東通信技術 2019年1期
關鍵詞:開源云端消息

1 背景

根據預測,2020年全球物聯網(IoT)連接設備數預計將達到260億臺;而到2025年,該數字將接近700億。而根據更為詳細分析統計,數量龐大的物聯網連接中建有60%屬于廣域低功耗(LPWA)連接需求。NB-IoT技術是3GPP為LPWA領域專門定制發布的無線接入標準,具備大連接、廣覆蓋、低功耗等諸多優點。國內NBIoT產業鏈目前已進入快速發展時期,應用觸角也日漸延伸到智慧家庭、公共服務、生產制造、可穿戴智能設備等眾多領域。未來,預計將會有更為龐大數量的智能終端通過NB-IoT和云端應用服務器交互。

2 云端NB-IoT應用系統的需求分析

開發穩定優良的NB-IoT物聯網應用,需要對NBIoT的芯片/模組/無線接入深入專研,云端應用系統的軟件結構和功能上相應的調整和優化也比不可少。部分服務端系統直接套用移動互聯網應用框架開發,雖然實現了簡單的“云-端”物聯對接,但是進入大規模實施和推廣階段后,會遇到各種各樣的問題,例如終端耗電大,云端消息丟失嚴重,功能迭代升級困難等,NB-IoT的技術優勢也沒有發揮。

良好的NB-IoT應用系統,云端應用服務器應該考慮終端的行為模式和物聯網應用場景的特點。較為典型的包括如下三個方面。

(1)云端應用匹配NB-IoT終端連接方式。

根據3GPP規范,NB-IoT終端使用COAP協議和應用服務器交互,COAP是專門針對資源限制型終端(供電/計算/存儲/網絡能力弱)的協議。如云端沿用現有的連接協議框架和NB-IoT終端對接,例如MQTT、TCP長連接、HTTP等,會導致終端程序變得更復雜、軟硬件研制成本、耗電急劇上升。目前通信運營商一般已自建COAP服務器,應用服務器僅需要通過HTTP和COAP服務器對接即可;應用云端應遵循通信運營商的接入指引與自己的終端對接。

(2)考慮NB-IoT終端能力開放平臺多個并存的實際情況。

大規模的NB-IoT應用中,終端有可能分布在全國廣泛的地區,例如不同地市,不同省份等,需要考慮NBIoT終端可能通過不同途徑接入的現實情況。例如應用大部分終端通過通信運營商A的網絡接入,但特定地域由于信號覆蓋或價格原因,當地終端需接入通信運營商B的網絡。應用云端需要考慮兼容不同NB-IoT終端接入和能力開放方式,必要時需要具備對接不同通信運營商能力開放平臺的能。同時在應用云端軟件的設計上,降低終端接入方式差別對應用功能的影響。

(3)應對NB-IoT終端行為給服務器造成的沖擊。

廣域低功耗(LPWA)物聯網應用中,數量眾多的終端有可能加載同一版本程序,行為會存在有很高的同步性,會給應用服務器的業務處理帶來浪涌沖擊壓力。例如水務公司下屬數量眾多的智能表終端,在程序預設的時間點(例如凌晨1:00)集中上報采集的用水情況數據。應用服務器需要短時間內處理大量的上報信息,如果沒有合適手段應對這種浪涌壓力,會造成應用側丟失上報數據,終端指令錯誤,服務器關鍵進程出錯等。同時,龐大數量終端采集上報的數據,隨著應用運行時間增加也會在云端形成數據積累現象,如果缺乏良好的處理手段,同樣會影響應用處理的性能。

3 利用開源軟件搭建NB-IoT應用系統

目前,利用開源軟件搭建企業級應用系統已經成為業界常態。隨著開源軟件種類、數量和質量的不斷提升,應用系統的開源軟件解決方案在成本、靈活定制、可靠性、快速上線等方面的優勢也變得更有吸引力。

豐富的開源軟件也為搭建性能優良/運行穩定/可擴展性好的NB-IoT應用云端服務器提供了良好的材料。

4 “微服務+容器”服務器端系統框架

NB-IoT應用服務器承擔用戶交互、終端管理、業務處理、數據存儲分析等多種功能,也需要和多個外部網元對接交互,需要有良好的整體框架設計,保證各個功能之間的獨立、降低開發難度和易維護性。

(1)微服務架構(Microservice Architecture)通過將功能分解到各個離散的服務(應用服務組件)中以實現相互之間解耦。單個應用服務組件僅實現功能明確定義、處理邏輯清晰的服務,可獨立開發/管理迭代。多個應用服務組件組合承接復雜的應用業務邏輯。

(2)起源于主機虛擬化的容器(Container)技術為服務器端的應用開發部署和維護管理提供了極大的靈活性,也為微服務的實現提供了良好的工具。容器為應用服務組件提供了一個類似于虛擬機、環境獨立的運行環境,并具備快速啟動和便捷移植部署的優點。

(3)NB-IoT應用云端服務器可劃分為如下幾個微服務,每個服務組件封裝在獨立的容器中。

●數據庫:對其他組件提供數據保存、增刪改的服務。

●終端連接:專職負責與NB-IoT能力開放平臺對接,對上層應用屏蔽終端連接方式的差異。

●消息總線/隊列:在各個服務功能組件之間提供消息傳送服務。

●應用業務邏輯:容器內封裝應用業務邏輯的實現代碼。

●服務器門戶(Portal):提供應用的界面功能。

●性能監控:收集主機、各個服務功能組件(容器)的運行情況以及業務日志。

上述不同類型的服務組件,封裝的容器實際部署中還可以進一步拆分。例如不同數據庫,連接不同運營商能力開放平臺,不同的門戶(Web/公眾號/移動端)等,可以進一步單獨容器封裝。在實際部署中,低負荷的容器可以集中部署在一臺主機中,關鍵/負荷高的功能組件可單獨主機部署,甚至部署在多臺主機實現負荷分擔。

(4)目前已有豐富的開源軟件資源幫助搭建“微服務+容器”的應用服務端系統,小型系統中可以僅利用Docker技術,在不同容器中封裝上述各個功能組件,實現相互隔離。容器外部通過腳本配置各個服務組件容器的啟動和連接。隨著微服務組件數量的增加和分布式部署,可以利用開源的容器編排軟件,如Kubernetes、Docker Swarm等,完成對微服務的集中管理。

5 構建高性能的消息隊列和處理機制

NB-IoT應用服務器端功能組件封裝到不同微服務容器后,可通過消息總線/隊列服務組件在微服務容器之間建立消息傳送管道,進一步解耦服務組件的同時,提升整體系統的處理性能,同時應對終端集中數據上報造成的浪涌壓力。

(1)應用可以參照業界成熟的消息模型用于應用層之間的信息交互。通常消息模型均包含Message(消息體)、Producer(消息生產者)、Consumer(消息消費者)、Broker(消息服務端)等幾個部分。在此模型中,消息由Producer發出后,又經過Broker路由送至Consumer。應用服務組件(如應用業務邏輯、終端連接等)以Producer或Consumer身份注冊成為消息隊列客戶端,成為發送消息和接收消息的主體;消息的緩存、路由、分發等操作,由模型中的Broker完成。

(2)有多個開源軟件實現了上述消息模型中的Broker功能,如ActiveMQ,Kafka,RabbitMQ等,提供靈活、高效的消息轉發和路由。上述軟件支持通過配置文件(.xml)調整Broker處理消息隊列策略,提升轉發消息的性能,例如消息隊列個數/長度,調整Topics/Partitions數量(Kafka),優化對處理失敗或者過期的消息處理策略(ActiveMQ)等;同時上述軟件均提供了開發接口,不同語言開發的功能組件遵循接口即可與消息隊列服務交互。

(3)以NB-IoT應用服務端系統中,終端上報信息的處理流程為例,可以通過開源軟件Kafka提供的消息處理,處理終端集中上報數據行為造成的浪涌沖擊。(如圖1所示)

圖1

在浪涌高峰時間點,負責與通信運營商能力開發平臺對接的功能組件以消息Producer的身份接入Kafka,收到終端上報消息后不做復雜的處理直接放入消息隊列,避免業務邏輯處理不及時造成上報消息丟失,緩解應用業務邏輯功能組件的處理壓力;Consumer端運行與Partition數量相同應用業務邏輯功能組件,同時內部啟動多條線程并發處理隊列送來的消息。利用上述消息處理機制可有效提升云端應用的消息處理能力,在業務忙時可應對閑時運行幾十倍的浪涌壓力。

6 細分類型和用途優化數據處理策略

數據庫是每個信息應用系統必不可少的部分,包括NB-IoT應用云端服務器。NB-IoT應用的特性決定了隨著系統運行時間的增加,終端數量/采集數據/監控數據在云端的累積也會急劇增加,單一的關系型數據庫在應對數據I/O、海量數據分析、NoSql數據存儲、全文數據檢索等方面會面臨瓶頸。應用云端需要有完備的策略來應對這種壓力,而細分數據的類型和用途區別處理是其中的關鍵。

開源軟件中已有很多高質量數據庫軟件,包括關系型數據庫MySql,PostgreSQL;非關系型數據庫MongoDB、Redis;還有如建立在Apache Lucene? 基礎上的搜索引擎Elasticsearch,這些軟件專注于不同的數據處理細分領域。應用云端可以根據數據類型和用途的差異,針對性的選用不同開源數據庫,讓NB-IoT應用系統具備更良好的運行性能,同時發掘數據中的更多價值。

(1)使用關系型數據庫如Mysql、PostgreSQL等支撐云端應用基本功能的運行,例如業務邏輯、UI界面等。關系型數據庫配套的開發資源十分豐富,從需求分析到系統設計,從開發語言接口到優良代碼框架都有成熟的資源,可以有效提升開發效率和代碼質量。

(2)系統中需要頻繁讀寫、快速返回檢索結果的業務數據,放入memcache、redis等支持內存緩存的數據庫單獨管理,避免加重RDBMS負擔,致使服務器響應惡化,影響應用系統的整體功能。例如,NB-IoT應用到不同能力開放平臺的連接token、服務功能組件之間消息路由策略數據、系統公共參數等。如redis支持內存保存數據,并對外提供遠高于Mysql的高速查詢服務。

(3)利用NoSql數據庫存儲隨著應用系統運行累積產生的數據,包括終端歷史上報累積的數據,進程產生的業務日志等。針對此類數據的查詢和復雜分析需求,也均由NoSql數據庫,降低RDBMS負荷。同時大量NoSql形式的原始信息存儲更為直接方便,Nosql數據的分析和檢索也有豐富的開源工具,如Mongdo和Elasticsearch均支持更為靈活的分析聚合,也能進行復雜的數據建模。

結合容器和消息隊列的使用,組合不同開源數據庫軟件并不需要增加太多的開發工作,卻能幫助NB-IoT應用系統能更有效應對業務量的增長。

7 總結

目前,豐富的開源軟件為開發者提供了大量的功能組件“素材”,而對NB-IoT技術特性和終端行為特點的充分了解和仔細分析,是幫助開發者選取合適“素材”搭建穩固、高效的NB-IoT應用云端服務器的基礎。

猜你喜歡
開源云端消息
四海心連·云端匯聚
云端之城
一張圖看5G消息
五毛錢能買多少頭牛
2019開源杰出貢獻獎
云端創意
大家說:開源、人工智能及創新
開源中國開源世界高峰論壇圓桌會議縱論開源與互聯網+創新2.0
在云端
消息
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合