以訊息為中心的車輛訊息平台

前言

IoT 設備設備的訊息收集是物聯網的基本要件,特別是車載機經由無線網路的訊息品質以及以秒為單位的資料要求,在大量的連線數時必需同時收集資訊、命令的下達和回應,以及告警通知的回報等。 •所以必需要有一個可以調節上下方不同通訊方法並同時滿足以上要求的聯網通訊平台來掌控這些資訊流,除了具備低延遲的特性之外, 應該也要可以以垂直或水平的擴展方式來支應系統成長的要求,以下為系統設計的要求和目標:

  • 同時在實體機/虛擬機或容器的架構之上來安裝及佈署。
  • 資訊低延遲性,
  • 以多執行緒、多程序、時序控制和訊息交換的技術來提升系統的可用度並確保運轉的穩定度。
  • 可彈性擴充系統容量,可依作業的角色來擴建主機節點。
  • 使用穩定的開源軟件來降低建構成本,提升系統穩定度,
  • 可選擇性的記錄資料的內容和記錄管理。

說明

•Dwins_iot_gateway 是一個訊息收集及交換平台元件,用來傳送車機或IOT設備的訊息並且轉發上層的下發命令. •本系統平台的設計為為大量設備快速的訊息所設計,在單台節點上可以支應超過3000台的連線,也可以依負載增多佈署多個節點的平行擴增。 •預設接收上層HTTP的下發指令,對設備則是TCP協議。 •使用Message Queue 作為Gateway 中所有的訊息交換中心,所有的內部軟體元件的資訊交換及未來擴充時,只需變更該元件的內容即可。 •容易以各種方式來佈署。

系統元件及軟件

開源軟件

  • Redis ,記憶體資料庫。做為設備連線及登錄控制的角色。
  • Haproxy,代理程式做為流量的分派。
  • RabbitMQ,message Queue。為訊息交換
  • WebTareas,後台管理、作業及報表。
  • MariaDB,webTareas 使用的資料庫
  • Apache,webTareas 使用的網頁伺服器.

服務元件

  • Car_Agent: 車機連線程式
  • iServer_Agent: 服務[下發指令伺服器]的服務程式
  • Car_Registration_agent: 機車登錄程式
  • Car_monitor: 機車監控程式
  • Job_agent: 工作作業管理程式
  • Static_logger: 定期回報記錄程式
  • event_logger:事件回報記錄程式
  • alert_agent:警報發佈程式
  • admin_server:管理所有的代理程式,如收集連線數等。

1對多

轉發iServer 主機命令到多車機

收集多車機訊息到主機

HTTP 與TCP協定及命令轉換

後台操作

效益

  • 彈性的擴展架構, 可以以實機主機/虛擬主機/容器架構來實現高可張的營運環境.
  • 依作業需求可以分別佈署效能瓶頸的作業,
  • 適合做為大/中/小車隊的基礎元件,
  • 適用硬件開發商和作業分析單位在大數據作業的基礎架構,降低進入車隊管理的開發需求。
  • 使用穩定且掌握度高的開源元件,降低建置及營運成本。
  • 當使用的硬體車機協定或是上層下發指令變更時,只需變更部份控制即可

測試與驗證

本系統己經過模擬測試壓力測試與實機上線使用,在模擬測試的環境中以單機(4vCPU/8GBRAM)可支應到6000台(15 s/筆). 實機測試中目前確認到約1000台, 對應的系統資源還在充裕的狀態。

除了系統的開發、佈署和檢核之外,還可以配合常用的系統監測系統如:Prometheus & Grafana來記錄監控系統資源的使用率,以便為增進系統可用度以及為評估系統調整的作業準則。