附註:
- 此教學課程需要存取 Oracle Cloud。若要註冊免費帳戶,請參閱開始使用 Oracle Cloud Infrastructure Free Tier 。
- 它使用 Oracle Cloud Infrastructure 憑證、租用戶及區間的範例值。完成實驗室時,請將這些值取代為您雲端環境特有的值。
使用可擴展的雲端原生流程在 Oracle Cloud Infrastructure Object Storage 上處理檔案
簡介
在我們的應用程式中,我們通常需要處理大量的檔案。在過去,這是以批次形式完成的,但隨著新技術和雲端的出現,我們現在能夠將許多序列處理轉換為平行處理。使用訊息佇列、Kubernetes 叢集和事件導向架構是一些廣泛使用的技術和架構,可充分利用大量處理。
Oracle Cloud Infrastructure (OCI) 提供可擴展性和降低成本的資源。讓我們探索雲端原生服務。
-
OCI Object Storage 可讓客戶以其原生格式安全地儲存任何類型的資料。透過內建備援功能,OCI Object Storage 適合用於建置需要擴展和彈性的現代化應用程式,因為它們可以用來合併多個資料來源以進行分析、備份或封存。
-
OCI Streaming 服務是適用於開發人員和資料科學家的 Apache Kafka 相容、無伺服器的即時事件串流平台。串流與 OCI、資料庫、GoldenGate 及整合雲完全整合。此服務還為數百種第三方產品提供立即可用的整合,例如 DevOps、資料庫、大數據及 SaaS 應用程式。
-
OCI Events Service 會使用符合 Cloud Native Computing Foundation (CNCF) 雲端活動標準的事件來追蹤對資源所做的變更。開發人員可以使用 OCI Functions 觸發程式碼、記錄至 OCI Streaming,或使用 OCI Notifications 傳送警示,即時回應變更。
-
OCI Functions 是一項無伺服器運算服務,可讓開發人員建置、執行及調整應用程式,而無需管理任何基礎架構。OCI Functions 與其他 OCI 服務和 SaaS 應用程式原生整合。OCI Functions 以開放原始碼 Fn 專案為基礎,因此開發人員可以建立可輕鬆移植到其他雲端和內部部署環境的應用程式。以函數為基礎的程式碼通常會在短時間內執行、無狀態,並且會針對單一邏輯目的執行。客戶只需依據使用的資源付費。
-
Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) 是一項受管理的 Kubernetes 服務,可簡化大規模的企業級 Kubernetes 作業。它可以減少管理複雜 Kubernetes 基礎架構所需的時間、成本和人力。OKE 可讓您部署 Kubernetes 叢集,透過自動調整、更新及安全性修補程式,確保控制層和工作節點上的作業可靠。此外,OKE 還提供與虛擬節點完全無伺服器的 Kubernetes 體驗。
在本教學課程中,我們將看到處理大量檔案的常見方式,應用程式可以在其中將檔案存入 OCI 物件儲存的儲存桶,以及當這些檔案存入時,會產生允許觸發函數將此檔案的 URL 寫入 OCI Streaming 的事件。
注意:有些來源應用程式在 OCI Streaming 中儲存檔案內容時,我們可以想像此解決方案,而我們的應用程式剛讀取此內容,但是在 Kakfa 佇列中傳輸大量資料並不是一個好的做法。為達此目的,我們的方法將使用名為 Claim-Check 的模式,該模式將完全與我們的提案相同,而不是透過訊息佇列傳送檔案,我們將傳送此檔案的參考。我們會將讀取檔案委派給負責處理該檔案的應用程式。
本教學課程將介紹這些元件:OCI 物件儲存、事件服務、函數及串流。
在此鏈結結結尾,我們將讓應用程式使用串流佇列,不過,我們將不會討論如何處理檔案。
目標
- 導入可擴展的事件架構,透過使用 OCI Object Storage、Events Service、Functions 及 Streaming 處理大量檔案。
必要條件
-
針對儲存桶、功能和串流設定的 VNC、子網路及所有安全設定值。
-
設定為管理儲存桶、事件服務、功能及串流的 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 使用者。
工作 1:建立 OCI 串流處理執行處理
OCI Streaming 是像受管理串流處理的 Kafka。我們可以使用 Kafka API 和市場上常見的 SDK 開發應用程式。在這項任務中,我們將建立 OCI Streaming 的執行處理,並將其設定為在兩個應用程式中執行,以發布和使用大量資料。
-
登入 OCI 主控台,按一下分析與 AI 和串流。
-
選取區間,然後按一下建立串流。
-
輸入串流執行處理的串流名稱,並使用預設值保留其他參數。按一下建立以起始執行處理並等待作用中狀態。
注意:
-
在串流建立處理作業中,我們可以選取自動建立預設串流集區,因此會自動建立預設集區。
-
您可以在專用子網路中建立串流執行處理。在此情況下,請注意任務 4 中的功能,它必須位於相同的專用子網路上,或位於可存取專用子網路串流實例的子網路上。檢查您的 VCN、子網路、安全清單、服務閘道或其他安全元件。請確定您的函數可以存取 OCI Streaming 執行處理。
-
-
按一下 DefaultPool 連結。
-
按一下 Kafka 連線設定值並檢視連線設定值。請記下下一個任務中所需的資訊。
作業 2:建立 OCI 物件儲存桶
我們必須建立儲存桶。儲存桶是儲存物件的邏輯容器,因此用於此示範的所有檔案都將儲存在此儲存桶中。
-
開啟 OCI 主控台,然後瀏覽至儲存、儲存桶。在儲存桶區段中,選取區間,區間將會與在任務 1 中建立的 OCI 串流執行處理相同。
-
按一下建立分組,然後輸入分組名稱。使用預設值保留其他參數,然後按一下建立。
我們可以看到建立的儲存桶。
注意: 請複查儲存桶的 OCI IAM 原則。如果您要在示範應用程式中使用這些儲存桶,則必須設定原則。如需詳細資訊,請參閱物件儲存簡介和 OCI IAM 原則。
作業 3:啟用 OCI 事件服務的 OCI 物件儲存的儲存桶
我們必須啟用儲存桶才能發出事件。因此,按一下您的儲存桶詳細資訊並搜尋允許物件事件編輯連結,然後加以啟用。
作業 4:建立 OCI 函數
若要執行下列作業,請從此處下載程式碼:OCI_Streaming_Claim_Check.zip 。
-
瞭解程式碼
有兩個程式碼檔案:主要程式碼
HelloFunction.java
和 OCI Streaming 產生器程式碼Producer.java
。-
HelloFunction.java
.在這部分的程式碼中,我們需要擷取來自 OCI Events Services 的資料,因此有 3 個來源。
- 相關資訊環境:此特性來自 RuntimeContext,我們使用
REGION
變數。 - 事件資料: OCI Events Services 會將資料產生為
resourceName
。 - 其他事件詳細資訊資料: OCI 物件儲存的 OCI 事件服務會產生
namespace
和bucketName
的資料。
我們可以掛載 OCI 物件儲存體檔案 URL。
而主要程式碼則可將 URL 傳送給 OCI Streaming 產生器。
- 相關資訊環境:此特性來自 RuntimeContext,我們使用
-
Producer.java
.這是產生 Claim-check 樣式之 Kafka 資訊的
Message
類別結構。僅限key
和value
。而且,這是產生至串流的基本程式碼。
-
-
建置及部署 OCI 函數
在此步驟中,我們將需要使用 OCI CLI 建立 OCI 函數,並將程式碼部署到您的 OCI 租用戶中。若要建立 OCI Functions,請參閱 Functions:Get Started using the CLI ,遵循步驟並搜尋 Java 選項。您必須使用以下資訊來建立函數。
Application: ocistreaming-app (follow the link Functions: Get Started using CLI) fn create app ocistreaming-app --annotation oracle.com/oci/subnetIds='["<the same OCID of your streaming subnet>"]' Context Variable: REGION=<your streaming region name, ex: us-ashburn-1> fn config app ocistreaming-app REGION=us-ashburn-1
請記住您部署函數的區間。您需要此資訊才能設定 OCI 事件服務。
工作 5:設定 OCI 事件
讓我們設定事件規則以觸發您的函數,以取得儲存桶資訊並將其傳送至 OCI 串流處理。
-
為規則選取相同的區間,然後按一下建立規則。
-
請輸入下列資訊。
-
在規則條件區段中。
- 條件:
Event Type
。 - 服務名稱:
Object Storage
。 - 事件類型:
Object-Create, Object-Delete, Object-Update
。
- 條件:
-
在動作區段中。
- 動作類型:
Functions
。 - 函數區間:
<your function compartment name>
。 - 函數應用程式:
<your function app, in this example ocistreaming-app>
。 - 函數:
fn_stream
。
- 動作類型:
-
工作 6:測試您的事件迴路
注意:若為專用網路,必須在連線至 OCI 串流之相同專用子網路的堡壘主機中執行測試代碼。
在 OCI_Streaming_Claim_Check.zip 原始程式碼套裝程式中,我們可以找到名為 monitoring
的資料夾和名為 consume.py
的檔案。我們可以使用此程式碼來監督和測試解決方案是否正常運作。
我們需要設定程式碼。
設定串流參數之後,您可以執行程式碼並驗證迴路,例如儲存桶、事件、函數和串流。
相關連結
認可
- 作者 - Cristiano Hoshikawa (Oracle LAD A 團隊解決方案工程師)
其他學習資源
瀏覽 docs.oracle.com/learn 的其他實驗室,或前往 Oracle Learning YouTube 頻道存取更多免費學習內容。此外,請造訪 education.oracle.com/learning-explorer 以成為 Oracle Learning Explorer。
如需產品文件,請造訪 Oracle Help Center 。
Process Files on Oracle Cloud Infrastructure Object Storage with a Scalable Cloud Native Flow
F94117-01
March 2024
Copyright © 2024, Oracle and/or its affiliates.