IOT Core-设备接入网关
設備接入網關是負責設備連接,設備鑒權,設備Topic訂閱和發布的控制,設備消息路由等。
提供的能力
設備連接能力。
設備訂閱和消息發布能力。
設備鑒權能力。
訂閱和發布控制。
設備消息路由。
網關以服務形式與第三方服務交互,從而與具體業務解藕,如果客戶有自己的業務系統或客戶需要自己開發,也能夠與之對接,同時也能滿足我們的業務系統。
網關層整體架構:
2. 設備鑒權和ACL控制
2.1. 背景
對于物聯網平臺來說,這塊是可以做到統一,然后由業務方去實現鑒權或ACL控制服務,但是當前也有好多垂直行業的大廠,比如像XXX,他在智能樓宇有一套完整的系統,他可能只想用我們的連接層,因為智能樓宇這個行業其實發展了幾十年,他們對行業,對客戶需求了解的比較清楚,也形成了一些行業積累和行業軟件,并且這種積累是有一定的競爭優勢和潛在價值,所以他們不太可能放棄這塊或者將他交給第三方開發,但是對于連接層來說,由于連接層不跟客戶打交道,并且對于大規模設備的管控他們可能不擅長。
2.2. 鑒權和ACL控制鑒權架構設計
為了滿足不同的鑒權、acl控制業務場景,所以將網關層的鑒權ACL控制進行了抽像和封裝,盡可能保留擴展。
2.3. 常見的業務場景主要有以下幾種:
通過HTTP的get, post等請求方式,參數通過url, body, header傳輸。
通過 gRPC 請求方式,參數通過protobuf文件規定。
通過直接與數據庫連接進行鑒權,比如redis, mysql等, redis通過命令行,mysql通過sql語句。
2.4. 網關層提供的信息:
clientId, username, password, topic
2.5. 鑒權架構設計
poolcow插件:
levimq_auth_grpc:
grpc形式鑒權插件,實現通過protobuf文件將參數打包發送到grpc server.ehttpd:
對外提供restful接口插件,可根據swagger自動產生代碼,自動生成文檔,自動生成測試環境。支持wormhole插件
支持wormhole插件做服務發現接入etcd。身份認證是大多數應用的重要組成部分,MQTT 協議支持用戶名密碼認證,啟用身份認證能有效阻止非法客戶端的連接,并且由于認證方式差異性大,所以網關提供接入第三方的認證服務。
當前想到可能的鑒權方式:鑒權方式
方式
根據配置連接到Redis,通過username HMGET獲取加密算法后的password,然后用相同加密算法加密password與之對比。
通過調用第三方的Restful API請求來認證,支持將username和password(加密算法處理后)通過GET或POST方式,提交到第三方服務器,參數可以放到boyd或URL上。
支持直接連接mysql數據庫,并可以配置sql語句來直接查詢數據庫。
4.grpc認證
支持通過protobuf文件來調用第三方服務
ACL規則設置主要是根據MQTT協議自身的特點,從Topic, clientId, username進行規則判斷, 同時需要考慮集群,性能而提供對外接口,方便第三方應用將策略下發給網關,從而實現讓設備只能訂閱、發布自己相關的Topic。
策略描述
指定clientId,訂閱或發布相應的topic,topic支持正則表達式
模糊匹配clientId,訂閱或發布相應的topic,topic支持正則表達式
支持正則表達式匹配topic進行訂閱或發布
指定客戶端ip,訂閱或發布相應的topic, topic支持正則表達式
支持指定username訂閱或發布相應的topic, topic支持正則表達式
支持多租戶功能,租戶信息可以放到clientid或topic里面
連接限流
限流是對某一時間窗口內的請求數進行限制,保持系統的可用性和穩定性,防止因流量暴增而導致的系統運行緩慢或宕機。
異常設備
提供異常設備判斷,從而從網關層將異常設備處理
異常設備規則
設備在指定周期內發送大量消息
設備在指定周期內頻繁上下線
…
提供Restful API & grpc
功能
支持添加,刪除,編輯,查看ACL規則
支持添加,刪除,編輯,查看設備鑒權規則
支持添加,刪除,編輯,查看異常設備規則
總結
以上是生活随笔為你收集整理的IOT Core-设备接入网关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python简易学员管理系统
- 下一篇: 优化LNMP架构采用“Website B