本文包含將IoT中樞型解決方案移至生產環境時應考慮的項目清單。
使用部署戳記
戳記是支援已定義裝置數目的核心解決方案元件離散單位。 每個復本稱為 戳記。 或 縮放單位。 例如,戳記可能包含集裝置母體擴展、IoT 中樞、事件中樞或其他路由端點,以及處理元件。 每個戳記都支持定義的裝置母體擴展。 您可以選擇戳記可以儲存的裝置數目上限。 隨著裝置擴展成長,您可以新增戳記實例,而不是獨立地相應增加解決方案的不同部分。
如果您不是新增戳記,而是將IoT中樞型解決方案的單一實例移至生產環境,您可能會遇到下列限制:
調整限制: 您的單一實例可能會遇到調整限制。 例如,您的解決方案可能會使用限制輸入連線、主機名、TCP 套接字或其他資源的服務。
非線性調整或成本: 您的解決方案元件可能無法以線性方式調整要求數目或內嵌的數據量。 相反地,對於某些元件而言,一旦達到閾值,效能可能會降低或成本增加。 使用更多容量相應增加,可能不像新增戳記來相應放大一樣好。
客戶分離: 您可能需要將特定客戶的數據與其他客戶的數據隔離。 同樣地,您可能有一些客戶需要比其他人服務更多的系統資源,並考慮將它們分組在不同的戳記上。
單一和多租用戶實例: 您可能有一些大型客戶需要自己的解決方案獨立實例。 您可能也有可共用多租使用者部署的較小客戶集區。
複雜的部署需求: 您可能需要以受控制的方式將更新部署到服務,並在不同時間部署到不同的戳記。
更新頻率: 您可能有一些客戶可以容忍經常更新您的系統,而其他客戶可能是風險厭惡的,而且想要不常更新您的服務。
地理或地緣政治限制: 若要降低延遲或符合數據主權需求,您可以將部分客戶部署到特定區域。
若要避免上述問題,請考慮將您的服務分組為多個戳記。 戳記彼此獨立運作,可以獨立部署和更新。 單一地理區域可能包含單一戳記,或可能包含多個戳記,以允許區域內水準向外延展。 每個戳記都包含客戶的子集。
發生暫時性錯誤時,請使用退關
與遠端服務和資源通訊的所有應用程式都必須對暫時性錯誤敏感。 這尤其適用於在雲端中執行的應用程式,其中環境的性質和透過因特網的連線能力意味著這些類型的錯誤可能會更頻繁地發生。 暫時性錯誤包括:
- 暫時失去元件和服務的網路連線
- 暫時無法使用服務
- 服務忙碌時發生的逾時
- 裝置同時傳輸時所造成的碰撞
這些錯誤通常是自我更正,如果動作在適當的延遲之後重複,它可能會成功。 不過,判斷重試之間的適當間隔很困難。 一般策略會使用下列類型的重試間隔:
- 指數輪詢。 應用程式會在第一次重試之前等候一小段時間,然後在每次後續重試之間以指數方式遞增。 例如,它可能會在 3 秒、12 秒、30 秒等之後重試作業。
- 定期間隔。 應用程式會等候每次嘗試之間的相同時間。 例如,它可能會每隔 3 秒重試一次作業。
- 立即重試。 有時暫時性錯誤是短暫的,可能是因為網路封包衝突或硬體元件尖峰等事件。 在此情況下,立即重試作業是適當的,因為如果錯誤在應用程式進行組合並傳送下一個要求時清除,可能會成功。 不過,如果立即重試失敗,就不應該有一次以上的立即重試嘗試,而且您應該切換到替代策略,例如指數輪詢或後援動作。
- 隨機化。 上述任何重試策略可能包含隨機專案,以防止客戶端同時傳送後續重試嘗試的多個實例。
也請避免下列反模式:
- 實作不應包含重複的重試程式代碼層。
- 永不實作無止盡的重試機制。
- 永遠不要執行多次立即重試。
- 避免使用定期重試間隔。
- 防止相同用戶端的多個實例或不同用戶端的多個實例同時傳送重試。
使用零觸控布建
布建是將裝置註冊到 Azure IoT 中樞 的動作。 布建可讓 IoT 中樞 知道裝置,以及裝置所使用的證明機制。 您可以使用 Azure IoT 中樞 裝置布建服務 (DPS) 或直接透過 IoT 中樞 登錄管理員 API 進行佈建。 使用 DPS 會授與晚期系結的優點,這可讓移除和重新布建現場裝置以 IoT 中樞,而不需要變更裝置軟體。
下列範例示範如何使用 DPS 實作測試對生產環境轉換工作流程。
- 解決方案開發人員會將測試和生產IoT雲端連結至布建服務。
- 如果裝置已不再布建,裝置會實作 DPS 通訊協議來尋找 IoT 中樞。 裝置一開始會布建至測試環境。
- 由於裝置已向測試環境註冊,因此它會連線到該處並進行測試。
- 開發人員會將裝置重新佈建至生產環境,並將它從測試中樞移除。 測試中樞會在下次重新連線時拒絕裝置。
- 裝置會連線並重新交涉布建流程。 DPS 現在會將裝置導向至生產環境,裝置會連線並在那裡進行驗證。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主要作者:
- Matthew Cosner |主要軟體工程管理員
- Ansley Yeo |主體計劃管理員
若要查看非公開的 LinkedIn 設定檔,請登入 LinkedIn。