使用無伺服器函數將 IoT 資料串流至 Autonomous Database

運用 Internet of Things (IoT) 裝置的工作負載,必須即時有效地擴展。部署更多裝置和感測器時,系統會限制大量資料和各種串流資料,以增加資料量。在 Oracle Cloud 中使用無伺服器函數和自治式資料庫,即可自動化及調整串流 IoT 資料的處理方式。

架構

在此架構中,IoT 裝置的資料會透過 API 閘道流入無伺服器函數,使用「串流」服務將資料上傳至 Oracle Cloud 中的自治式資料庫。雲端外部的使用者可以透過在 Oracle Cloud Infrastructure Compute 執行處理上執行的純文字型 Web 伺服器存取資料。

下圖說明此架構。



oci-arch-iot-streaming-oracle.zip

架構包含下列元件:

  • 區域

    Oracle Cloud Infrastructure 區域是包含一或多個資料中心 (稱為可用性網域) 的本地化地理區域。區域與其他區域無關,而且大型距離可以區隔 (跨國家或甚至洲)。

  • 虛擬雲端網路 (VCN) 和子網路

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。VCN 就像傳統資料中心網路一樣,可讓您完全控制網路環境。VCN 可以有多個非重疊的 CIDR 區塊,供您在建立 VCN 之後變更。您可以將 VCN 區隔為子網路,子網路範圍可為區域或可用性網域。每個子網路均包含一個未與 VCN 中其他子網路重疊的連續位址範圍。您可以在建立子網路之後變更子網路的大小。子網路可以是公用或專用。

    在此架構中,自治式資料庫和設定資料庫的函數都會連附至專用子網路。代管 Web 伺服器的運算執行處理和處理串流的功能都會部署在公用子網路中。

  • 網路安全群組 (NSG)

    NSG 可作為您雲端資源的虛擬防火牆。使用 Oracle Cloud Infrastructure 的零軌跡安全模型時,所有流量都會被拒絕,您可以控制 VCN 內的網路流量。NSG 包含一組傳入和傳出安全規則,僅適用於單一 VCN 中的一組指定 VNIC。

    此架構中的資料庫和 Web 伺服器的存取權是透過個別 NSG 來控制。

  • API 閘道

    Oracle API Gateway 可讓您在網路內存取的專用端點發布 API,並且在需要時向公用網際網路公開。端點支援 API 驗證、要求與回應轉換、CORS、認證與授權,以及要求限制。

  • 串流處理

    Oracle Cloud Infrastructure 串流」提供完整管理、可擴展且持久的儲存解決方案,可擷取連續、大量的資料串流,供您即時使用及處理。您可以使用「串流處理」來擷取大量資料,例如應用程式日誌、作業遙測、Web 點選串流資料,或用於在發布/循序訊息模型中產生及處理資料的其他使用案例。

  • 函數

    Oracle Functions 是一款完全受管理、多租用戶與高擴展性、隨選的 Functions-as-a-Service (FaaS) 平台。由 Fn Project 開放原始碼引擎提供技術支援。函數可讓您部署程式碼,然後直接致電或觸發它以回應事件。Oracle Functions 使用在 Oracle Cloud Infrastructure Registry 中代管的 Docker 容器。

  • 自治式資料庫

    此架構使用自治式資料庫 ( Oracle Autonomous Data WarehouseOracle Autonomous Transaction Processing ) 搭配專用端點。

    Oracle Autonomous Data Warehouse 是一項針對資料倉儲工作負載最佳化的自我驅動、自我保護、自行修復資料庫服務。您不需要設定或管理任何硬體,或是安裝任何軟體。Oracle Cloud Infrastructure 會處理建立資料庫,以及備份、修正、升級和調整資料庫。

    Oracle Autonomous Transaction Processing 是一項針對交易處理工作負載最佳化的自我驅動、自我保護、自行修復資料庫服務。您不需要設定或管理任何硬體,或是安裝任何軟體。Oracle Cloud Infrastructure 會處理建立資料庫,以及備份、修正、升級和調整資料庫。

  • Web 伺服器

    在此架構中,會在運算執行處理上部署 Flask 微架構端點。Flask-based 應用程式可以將自治式資料庫中的資料顯示為動態 Web 內容。

推薦

使用下列建議作為起點。您的需求可能會有所不同。

  • VCN 調整大小

    建立 VCN 時,請根據計畫連附至 VCN 中子網路的資源數目,判斷所需的 CIDR 區塊數目和各個區塊的大小。使用標準專用 IP 位址空間內的 CIDR 區塊。

    選取未與想要設定專用連線之任何其他網路 (在 Oracle Cloud Infrastructure 中、您的內部部署資料中心或其他雲端提供者) 重疊的 CIDR 區塊。

    建立 VCN 之後,您可以變更、新增及移除其 CIDR 區塊。

  • 運算資源配置

    在此架構中,以 Flash 為基礎的 Web 伺服器使用 Oracle Linux 7。8 映像檔和 VM.Standard2.1 資源配置。選擇適合您應用程式資源需求的形狀。

  • API 閘道功能

    API 閘道端點支援 API 驗證、要求與回應轉換、CORS、認證與授權以及要求限制。選擇符合您業務和 IT 需求的功能。

  • 串流分割

    「串流」服務提供分割的僅附加日誌訊息:串流。分割區是串流的一個區段。分割區可讓您透過分割多個節點的訊息來分送串流。您可以將每個分割區放在不同的機器上,讓多個用戶能夠平行讀取串流。對於大型且密集運算的工作負載,請考慮增加分割區數目。

  • 自治式資料庫版本

    使用自治式資料庫的最新可用版本。

考量

實行此架構時,請考量下列參數的需求:

  • 要求調節

    建立 API 閘道並部署一或多個 API 之後,您可能會想要限制前端從屬端可傳送要求給後端服務的速率。藉由保護後端資源不受太多要求溢位、根據您的需求決定要求速率限制、以維持高可用性和公平使用。您可能也需要避免拒絕服務 (DoS) 攻擊或控制和限制資源使用。最後,您可以在 API 部署規格中的所有路由套用全域速率限制。

  • 服務限額

    設計架構時,請考量「串流與函數」服務的服務限制。請參閱「瀏覽更多」小節中列出的「服務限制」文件。

  • 擴展性
    • 資料庫

      您可以隨時手動擴展或縮減資料庫的 CPU 核心數目。自治式資料庫的自動調整功能可讓您的資料庫隨時使用最多三次的 CPU 核心數目。隨著需求增加,自動調整會自動增加使用中的核心數目。自治式資料庫可讓您隨時擴展儲存容量,而不會影響使用狀態或效能。

    • 應用程式

      您可以使用執行處理集區和自動調整功能來調整 Flask 應用程式規模。

      執行處理集區可讓您根據相同區域內的相同組態佈建及建立多個運算執行處理。

      使用自動調整功能,可根據效能測量結果 (例如 CPU 使用率) 自動調整執行處理集區中的運算執行處理數目。自動調整可協助您在高需求期間為使用者提供一致的效能,並在需求低時降低您的成本。

    • 函數

      Oracle Functions 會根據要求載入自動建立及移除函數容器。只有在呼叫函數以及函數執行的持續時間時才需支付。

  • 應用程式可用性

    容錯域提供可用性網域內的最佳復原能力。如果您需要更高的可用性,請考慮在需要時使用多個可用性網域或多個區域。

  • 備份
    • 資料庫

      Oracle Cloud Infrastructure 會自動備份自治式資料庫,並保留 60 天的備份。您可以在保留期間,將資料庫回復並復原至任何時間點。您也可以建立手動備份來補充自動備份。手動備份會儲存在您建立的 Oracle Cloud Infrastructure Object Storage 儲存桶中,且會保留 60 天。

    • 應用程式

      Oracle Cloud Infrastructure Block Volumes 服務可讓您建立區塊磁碟區上資料的時間點備份。您可以隨時將這些備份回復至新的磁碟區。

      您也可以使用服務來建立開機磁碟區的時間點、當機一致的備份,而不需要應用程式中斷或停止工作。開機磁碟區和區塊磁碟區的備份功能相同。

  • 安全性
    • 存取控制

      您可以使用原則來限制哪些使用者可以存取您在雲端中的資源,以及他們可以執行的動作。

    • 網路安全

      網路服務提供兩種虛擬防火牆功能,使用安全規則來控制封包層次的流量:安全清單和網路安全群組 (NSG)。NSG 包含一組傳入和傳出安全規則,僅適用於單一 VCN 中您選擇的一組 VNIC。例如,您可以選擇作為 VCN 中多層應用程式之 Web 層中的 Web 伺服器的所有運算執行處理。

      NSG 安全規則的運作方式與安全清單規則相同。不過,對於 NSG 安全規則的來源或目的地,您可以指定 NSG 而非 CIDR 區塊。因此,您可以輕鬆撰寫安全規則,以控制相同 VCN 中兩個 NSG 之間的流量,或單一 NSG 內的流量。建立資料庫系統時,您可以指定一或多個 NSG。您也可以更新現有的資料庫系統,以使用一或多個 NSG。

建置

GitHub 中提供此參照架構的 Terraform 程式碼。只要按一下即可將程式碼提取至 Oracle Cloud Infrastructure Resource Manager,然後建立堆疊並加以部署。或者,從 GitHub 下載程式碼至您的電腦、自訂程式碼,以及使用 Terraform CLI 建置架構。

  • 使用 Oracle Cloud Infrastructure Resource Manager 進行部署:
    1. 一下部署到 Oracle Cloud

      如果您尚未登入,請輸入租用戶和使用者證明資料。

    2. 複查並接受條款與條件。
    3. 選取要建置堆疊的區域。
    4. 依照畫面上的提示和指示建立堆疊。
    5. 建立堆疊之後,請按一下 Terraform 動作,然後選取畫。
    6. 等待工作完成,然後複查計劃。

      若要進行任何變更,請返回「堆疊詳細資訊」頁面,按一下編輯堆疊,然後進行必要的變更。然後,再次執行「劃」動作。

    7. 如果不需要進一步的變更,請返回「堆疊詳細資訊」頁面,按一下 Terraform 動作,然後選取用。
  • 使用 Terraform CLI 部署:
    1. 前往 GitHub
    2. 將程式碼下載或複製到您的本機電腦。
    3. 依照 README 中的指示進行。

變更日誌

此日誌僅列出重要的變更: