整合 OCI Functions 和 OCI Event 服務,將訊息發布至專用 OSS 串流

雲端原生事件導向架構運用雲端資源和事件作為服務間的主要通訊機制。它可以透過分離元件並允許對事件進行即時反應,從而實現可擴展、彈性和靈活的系統。它運用事件串流與無伺服器運算,進行分散式事件導向的通訊與處理。

Oracle Cloud Infrastructure Events 是一個功能強大的工具,可根據各種雲端資源的狀態變更建立自動化。它可以讓我們建立將事件傳遞至特定 OCI 資源的規則,例如 Oracle Cloud Infrastructure StreamingOCI FunctionsOracle Cloud Infrastructure Notifications

在某些情況下,有需要將訊息發布到專用串流。雖然 OCI 事件可以將事件直接傳遞至公用串流端點,但目前不支援直接將訊息傳遞至專用串流端點,因為專用端點只能在相同的 VCN 內解析,而 OCI 事件則無法存取將訊息推送至專用串流。不過,您可以使用 OCI Functions 作為事件規則中的動作類型來達成此目的。

此參考架構提供了如何運用 OCI FunctionsOCI Events ,將訊息傳遞至私有串流端點的全方位概觀。

架構

此參考架構示範如何在 Oracle Cloud Infrastructure Object Storage 中建立或更新檔案時,使用 OCI FunctionsOCI Events 將訊息發布至專用 OSS 串流端點。

此架構圖說明資料流程,從上傳檔案到 OCI 物件儲存中特定儲存桶開始。OCI 事件會根據定義的事件規則條件觸發。發出的事件接著會呼叫函數,從上傳的檔案擷取資料,並將資料和事件訊息發布到 OCI Functions 內設定的專用串流端點。請務必注意,串流處理服務和功能應建立在相同的虛擬雲端網路 (VCN) 和專用子網路中,以確保 OCI 函數可以存取專用串流訊息端點。

下圖說明此參照架構。



oci-functions-events-integration-diagram-oracle.zip

開始前

  1. 設定您的 OCI Functions 應用程式和 OCI Streaming 服務 (串流集區和串流)。
  2. 請收集下列資訊。設定 OCI Functions 的環境變數時需要這些值。
    • 使用者 ID

      要認證之使用者的 OCID。

    • 租用戶 ID

      租用戶 OCID。可在使用者設定檔中找到。

    • 指紋

      將用於認證 OCI API。

    • 區域

      要建立要求之區域的 ID。

    • API 私密金鑰

      API 私密金鑰檔案位置。

    • 串流 OCID

      OSS 串流 OCID。

    • 認證權杖

      使用者設定的認證權杖。

    • 串流端點

      OSS 串流端點 (從「串流」資訊畫面的「訊息端點」取得)。

架構具有下列元件:

  • 租用戶

    租用戶是指註冊 Oracle Cloud Infrastructure 時,Oracle 在 Oracle Cloud 內設定的安全獨立分割區。您可以在租用戶的 Oracle Cloud 中建立、組織及管理您的資源。租用戶與公司或組織同義。通常,公司會有單一租用戶,並反映其在該租用戶內的組織結構。單一租用戶通常與單一訂閱關聯,而單一訂閱通常只有一個租用戶。

  • 區域

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

  • 區間

    區間是 Oracle Cloud Infrastructure 租用戶內的跨區域邏輯分割區。使用區間組織您在 Oracle Cloud 中的資源、控制對資源的存取,以及設定使用配額。若要控制對指定區間中資源的存取,您可以定義原則來指定可存取資源的人員及可執行的動作。

  • 可用性網域

    可用性網域是區域內的獨立資料中心。每個可用性網域中的實體資源會與其他可用性網域中的資源隔離,以提供容錯能力。可用性網域並不共用基礎設施,例如電力或冷卻系統或內部可用性網域網路。因此,一個可用性網域發生失敗並不會影響區域中的其他可用性網域。

  • 容錯域

    容錯網域是可用性網域內的一組硬體和基礎設施。每個可用性網域都有三個容錯域,具備獨立電源和硬體。當您將資源分散到多個容錯域時,您的應用系統就可容忍容錯域中的實體伺服器故障、系統維護以及電源故障。

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

    VCN 是您在 Oracle Cloud Infrastructure 區域中設定的可自訂軟體定義網路。就像傳統的資料中心網路,VCN 可讓您完全控制網路環境。VCN 可以有多個非重疊 CIDR 區塊,而您可以在建立 VCN 之後進行變更。您可以將 VCN 區隔成子網路,然後對區域或可用性網域進行調整。每個子網路都是由不與 VCN 中其他子網路重疊的連續位址範圍所組成。您可以在建立子網路後變更其大小。子網路可以是公用網路或專用子網路。

  • 安全清單

    您可以為每個子網路建立安全規則,以指定必須允許進出子網路的來源、目的地和流量類型。

  • 服務閘道

    服務閘道可讓您從 VCN 存取其他服務,例如 Oracle Cloud Infrastructure Object Storage 。VCN 到 Oracle 服務的流量會透過 Oracle 網路光纖通道,而一律不會周遊網際網路。

  • 物件儲存

    物件儲存可快速存取任何內容類型的大量結構化與非結構化資料,包括資料庫備份、分析資料,以及豐富內容 (例如影像和影片)。您可以安全地儲存,然後直接從網際網路或雲端平台內擷取資料。您可以無縫擴充儲存,而不會發生任何效能或服務可靠性的降低。針對快速、立即和經常存取的「熱」儲存,使用標準儲存。將封存儲存用於長時間且鮮少存取的「冷」儲存。

  • 事件

    Oracle Cloud Infrastructure 服務會發出事件,也就是描述資源變更的結構化訊息。系統會發出事件來進行建立、讀取、更新或刪除 (CRUD) 作業、資源生命週期狀態變更,以及影響雲端資源的系統事件。

  • 串流處理

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

  • 功能

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

  • 記錄日誌
    日誌記錄是一種可高度擴展且完全受管理的服務,可讓您從雲端資源存取下列類型的日誌:
    • 稽核日誌:與稽核服務發出之事件相關的日誌。
    • 服務日誌:由個別服務 (例如 API 閘道、事件、函數、負載平衡、物件儲存以及 VCN 流量日誌) 發出的日誌。
    • 自訂日誌:包含自訂應用程式、其他雲端提供者或內部部署環境之診斷資訊的日誌。

建議

請使用下列建議作為使用 OCI FunctionsOCI Events 實作此參考架構的起點。 您的需求可能與此處所述的架構不同。
  • VCN

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

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

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

    設計子網路時,請考慮您的流量與安全需求。將特定層或角色內的所有資源連附至相同的子網路,以作為安全界限。

  • 雲端保全

    複製並自訂 Oracle 提供的預設處方,以建立自訂偵測器與回應器處方。這些處方可讓您指定哪些類型的安全違規會產生警告,以及允許對其執行哪些動作。例如,您可以偵測可見性設為公用的物件儲存的儲存桶。

    在租用戶層次套用雲端保全以涵蓋最廣的範圍,並減少維護多個組態的管理負擔。

    您也可以使用「受管理清單」功能,將特定組態套用至偵測器。

  • OCI 函數

    此架構中的 OCI 函數是使用 Python 開發的。請注意, OCI Functions 支援多種程式設計語言,您可以使用您選擇的語言來開發函數並進行部署。

  • OCI 串流處理

    串流集區使用 VCN 中的專用子網路建立。串流則是使用此串流集區所建立。請務必在與專用 OSS 串流相同的 VCN 中建立函數,並具備所有必要的存取權限。

    「串流處理」也利用 Kafka Connect 生態系統,透過立即可用的 Kafka 來源和接收器連線器,直接與第一方和第三方產品連接。如需使用 Kafka Connect 的詳細資訊,請參閱「深入瞭解」。

  • OCI 物件儲存

    此架構使用標準物件儲存上傳檔案。請確定啟用「允許物件事件」,以便觸發甚至服務。此外,建議您將專用儲存桶用於機密資料。

  • OCI 事件

    在此架構中, OCI 事件是設定為監聽 OCI Object Storage 中 "Object Create" 和 "Object Update" 事件的變更。將物件上傳至 OCI Object Storage 並呼叫函數進行處理後,就會呼叫服務。

注意事項

實作此參考架構時,請務必考量下列層面。

  • 效能

    OCI EventsOCI FunctionsOCI Streaming 皆可高度擴展。請考慮根據您預期的檔案大小與數目調整分割區與串流的數目。

  • 安全

    使用原則限制可存取 OCI 資源的人員。

    對於 OCI 物件儲存,預設會啟用加密,且無法關閉。

    OCI Functions 中部署的所有函數存取都透過 Oracle Cloud Infrastructure Identity and Access Management (IAM) 控制,讓函數管理和函數呼叫權限能夠指定給特定使用者和使用者群組。

    建議將加密密碼和機密資料儲存在 OCI 保存庫中。請考慮使用 OCI 保存庫來儲存用於 OCI 服務授權的 API 金鑰和認證權杖。

  • 使用狀態

    Oracle 可確保 OCI FunctionsOCI EventsOCI StreamingOCI Logging 的高可用性,這些是雲端原生且完全託管。OCI Streaming 包含下列高可用性功能:

    • 日誌資料的固定流程
    • 多重執行緒與水平可擴充服務
    • 接近即時擷取
    • 可抵禦短期中斷的抗逆力
    • 最佳化以提升資料使用效率
  • 成本

    您只需支付函數執行時所使用的資源。

部署

GitHub 儲存區域包含實行此參照架構的 OCI Functions 程式碼。

  1. 請前往 GitHub
  2. 複製或下載儲存區域到您的本機電腦。
  3. 遵循 README 文件中的說明。

探索更多

深入瞭解 OCI FunctionsOCI EventsOCI Streaming

檢閱下列額外資源:

確認書

Authors: Shan Duraipandian

Contributors: John Sulyok