串流處理常見問題

一般性問題

什麼是 Oracle Cloud Infrastructure Streaming?

Oracle Cloud Infrastructure (OCI) Streaming 提供完全託管、可擴展且持久的訊息傳遞解決方案,用於擷取您可以即時使用的連續大量資料串流。所有支援的 Oracle Cloud Infrastructure 區域都提供串流處理功能。如需清單,請瀏覽區域與可用性網域頁面。

為什麼要使用 Streaming?

串流是一種無伺服器服務,可卸載從網路到儲存的基礎架構管理,以及串流資料所需的組態。您無需擔心基礎架構佈建、持續維護或安全修補。Streaming 服務會同步地跨三個可用性網域複製資料,提供高可用性和資料持久性。在具有單一可用性網域的區域中,資料會跨三個容錯域進行複寫。

如何使用 Streaming?

「串流處理」可讓您輕鬆收集、儲存及處理從數百個來源即時產生的資料。從訊息傳遞到複雜資料串流處理,使用案例數目幾乎無限制。下列是「串流處理」的一些可能用途:

  • Messaging :使用 Streaming 來分離大型系統的元件。產生器和用戶可以使用 Streaming 作為非同步訊息匯流排,並獨立按自己的步調採取行動。
  • Metric and log ingestion :將 Streaming 做為傳統檔案擷取方法的替代方法,以協助快速建立關鍵營運資料,並進行編製索引、分析及視覺化。
  • Web 或行動活動資料擷取:使用串流處理從網站或行動應用程式擷取活動,例如頁面檢視、搜尋或其他使用者動作。您可以將此資訊用於即時監控和分析,以及用於離線處理和報告的資料倉儲系統中。
  • 基礎架構和應用程式事件處理:使用 Streaming 作為雲端元件的統一進入點,以報告其稽核、會計及相關活動的週期事件。

如何開始使用 Streaming?

您可以開始使用 Streaming,如下所示:

  1. 使用 Oracle Cloud Infrastructure 主控台CreateStream API 作業建立串流。
  2. 設定產生器將訊息發布至串流。請參閱發佈訊息
  3. 建置用戶以從串流讀取及處理資料。請參閱使用訊息

您也可以改用 Kafka API 從串流產生及使用。如需詳細資訊,請參閱搭配使用串流處理與 Apache Kafka

Streaming 有哪些服務限制?

Streaming 的輸送量旨在透過將分割區新增至串流來擴展而不受限制。然而,在使用 Streaming 時,必須注意某些限制:

  • 串流中訊息的保留期間上限為 7 天。
  • 可對串流產生的唯一訊息大小上限為 1 MB。
  • 每個分割區每秒可處理高達 1 MB 的傳輸量,以及任意數目的寫入要求。
  • 每個分割區最多可支援每秒 1 MB 的總資料寫入速率,以及每秒 2 MB 的讀取速率。

Streaming 與佇列式服務相比如何?

「串流處理」提供串流式語意。串流語意提供每個分割區的嚴格排序保證、訊息可重新執行性、用戶端游標,以及大規模的水平傳輸量。佇列不提供這些功能。如果使用 FIFO 佇列,可以設計佇列來提供排序保證,但只能以在效能中增加重大負荷的成本來提供。

關鍵概念

什麼是串流?

串流是訊息的分割、僅附加日誌,產生器應用程式會將資料寫入用戶應用程式讀取資料的目標與來源。

什麼是串流集區?

串流集區是一種群組,可用來組織和管理串流。串流集區可透過提供跨多個串流共用組態設定值的功能,提供操作簡易。例如,使用者可以在串流集區上共用安全設定值 (例如自訂加密金鑰),以加密集區內所有串流的資料。串流集區也可讓您透過限制對串流集區內之所有串流的網際網路存取,為串流建立專用端點。對於使用 Streaming 的 Kafka 相容性功能的客戶,串流集區可作為虛擬 Kafka 叢集的根,因此可讓該虛擬叢集上的每個動作都設定該串流集區的範圍。

什麼是分割區?

分割區是一個基礎傳輸量單位,可啟用串流生產和消耗的水平比例和平行程度。分割區提供每秒 1 MB 的資料輸入容量和每秒 2 MB 的資料輸出。建立串流時,您可以根據應用程式的傳輸量需求,指定所需的分割區數目。例如,您可以建立一個包含 10 個分割區的串流,在此情況下,您可以從串流取得 10 MB/ 秒輸入和 20 MB/ 秒輸出的傳輸量。

什麼是訊息?

訊息是儲存在串流中的 base64 編碼資料單位。在串流中,您可以對分割區產生的訊息大小上限為 1 MB。

什麼是金鑰?

金鑰是用於對相關訊息進行分組的識別碼。具有相同索引鍵的訊息會寫入同一個分割區。「串流處理」可確保指定分割區的任何用戶一律以與寫入順序完全相同的順序讀取該分割區的訊息。

什麼是製作者?

產生器是可以將訊息寫入串流的從屬端應用程式。

什麼是用戶與用戶群組?

用戶是可以從一或多個串流讀取訊息的從屬端應用程式。用戶群組是一組執行處理,可協調串流中所有分割區的訊息。在任何指定時間,特定分割區的訊息只能由群組中的單一用戶使用。

什麼是游標?

游標指向串流中某個位置的一個指標。這個位置可以是指到分割區中特定位移或時間的指標,或是群組目前的位置。

什麼是偏移量?

分割區中的每個訊息都有一個稱為位移的識別碼。使用者可以從一個特定的位移開始讀取訊息,亦可以從他們選擇的任何位移點進行讀取。使用者還可以提交最新處理的位移,以便在停止工作,然後重新啟動時,可以接續工作,不會重播或遺失訊息。

安全性

使用 Oracle Cloud Infrastructure Streaming 時,我的資料有多安全?

「串流處理」預設提供靜態和傳輸中資料加密。串流與 Oracle Cloud Infrastructure Identity and Access Management (IAM) 完全整合,可讓您使用存取原則,選擇性地將權限授予使用者和使用者群組。使用 REST API 時,您也可以透過 HTTPS 協定透過 SSL 端點安全地 PUT 和 GET 資料。此外,「串流處理」提供完整的租用戶層級資料隔離,不會發生任何「其他資源」問題。

是否可以使用自己的主要金鑰集來加密串流中的資料?

串流資料會同時加密靜態和傳輸中資料,並確保訊息的完整性。如果您需要符合特定的合規性或安全標準,可以讓 Oracle 管理加密,或使用 Oracle Cloud Infrastructure Vault 來安全地儲存和管理自己的加密金鑰。

串流集區建立後,可以編輯哪些安全設定值?

如果您想要切換使用「Oracle 金鑰提供的加密」和「使用客戶管理的金鑰管理的加密」,您可以隨時編輯串流集區的資料加密設定值。「串流處理」不會對此活動可執行的次數構成任何限制。

如何管理和控制對串流的存取?

串流與 Oracle Cloud Infrastructure IAM 完全整合。每個串流皆指派一個區間。使用者可以指定以角色為基礎的存取控制原則,此原則可用於描述租用戶、區間或單一串流層級的微點規則。

存取策略是以 <location> 中 <conditions> 的「允許 <subject> 至 <verb> <resource-type>」形式指定。

Kafka 使用者必須搭配 Streaming 使用哪些認證機制?

Kafka 協定的認證使用認證權杖和 SASL/PLAIN 機制。您可以在主控台使用者詳細資訊頁面產生權杖。請參閱使用認證權杖以瞭解詳細資訊。建議您建立專用群組 / 使用者,並授予該群組管理適當區間或租用戶中串流的權限。接著,您可以為建立的使用者產生認證權杖,並在 Kafka 從屬端組態中使用。

我可以在不使用公共 IP 的情況下,私下從虛擬雲端網路 (VCN) 存取串流 API 嗎?

專用端點可限制對租用戶內指定虛擬雲端網路 (VCN) 的存取,以便無法透過網際網路存取其串流。專用端點可將 VCN 內的專用 IP 位址與串流集區建立關聯,讓串流流量避免周遊網際網路。若要建立串流的專用端點,您必須在建立串流集區時,存取含有專用子網路的 VCN。請參閱關於專用端點VCN 和子網路以瞭解詳細資訊。

整合

如何將 Oracle Cloud Infrastructure Streaming 與 Oracle Cloud Infrastructure Object Storage 搭配使用?

您可以將串流的內容直接寫入物件儲存的儲存桶,通常會將資料保留在串流中以進行長期儲存。使用 Kafka Connect for S3 搭配 Streaming,即可達到此目的。如需詳細資訊,請參閱從 Oracle Streaming Service 發布至物件儲存部落格文章。

如何將串流與 Oracle Autonomous AI Database 搭配使用?

您可以從 Oracle Autonomous AI Transaction Processing 執行處理中的表格擷取資料。如需詳細資訊,請參閱 Using Kafka Connect With Oracle Streaming Service and Autonomous DB 部落格文章。

如何搭配 Micronaut 使用 Streaming?

您可以使用 Kafka SDK 產生及使用來自 Streaming 的訊息,也可以使用 Micronaut 內建的 Kafka 支援。如需詳細資訊,請參閱 Easy Messaging With Micronaut's Kafka Support and Oracle Streaming Service 部落格文章。

如何使用 Streaming 從 MQTT 中介擷取 IoT 資料?

如需詳細資訊,請參閱將 IoT 資料從 MQTT 中介擷取至 OCI-Oracle Streaming Service、OCI- Kafka Connect Harness 和 Oracle Kubernetes Engine 部落格文章。

Oracle GoldenGate for Big Data 是否與 Streaming 相容?

Oracle GoldenGate for Big Data 現已通過與 Streaming 整合的認證。如需詳細資訊,請參閱 Oracle GoldenGate for Big Data 文件中的連線至 Oracle Streaming Service

是否可以直接從 Streaming 將資料擷取至 Oracle Autonomous AI Lakehouse?

您需要使用 Kafka JDBC Sink Connect 將串流資料直接傳輸至 Oracle Autonomous AI Lakehouse。

定價

使用 Oracle Cloud Infrastructure Streaming 如何計費?

「串流處理」使用簡單的隨用隨付定價,確保您只需為使用的資源付費。訂價維度包含

  • GET/PUT 請求價格:已傳輸的 GB 資料
  • 儲存價格 (根據使用的保留期間時數):每小時儲存 GB

如需最新的定價資訊,請參考 OCI Streaming 頁面。

即使我未使用該服務,還是需要支付佈建費用?

Streaming 的業界頂尖定價模型可確保您僅在使用預設服務限制內的服務時才需要付費。

將資料移入和移出串流是否需要額外付費?

「串流處理」不會為將資料移入和移出服務收取額外價格。此外,使用者還可以利用 Service Connector Hub 的強大功能,以無伺服器方式將資料移入和移出 Streaming,無須額外付費。

Streaming 是否有免費層?

串流處理目前不適用於免費層。

管理 Oracle Cloud Infrastructure 串流

存取 Streaming 需要哪些 IAM 權限?

身分識別和存取管理可讓您控制能夠存取雲端資源的人員。若要使用 Oracle Cloud Infrastructure 資源,無論您是使用主控台或搭配 SDK、CLI 或其他工具的 REST API,都必須在管理員編寫的原則中取得所需的存取類型。存取 policy 的指定格式如下


Allow <subject> to <verb> <resource-type> in <location> where <conditions>

租用戶管理員可以使用原則


Allow group StreamAdmins to manage streams in tenancy

這樣可以讓指定的群組 StreamAdmins 透過串流處理執行所有動作,串流範圍包括建立、更新、列出以及刪除串流及其相關資源。不過,您可以隨時指定更精細的原則,讓只有選取群組中的使用者才能夠只使用他們可以在指定串流上執行的活動子集。如果您是原則的新手,請參閱原則入門一般原則。如果您想要深入瞭解「串流處理」的撰寫原則,請參閱 IAM 原則參照中的串流處理服務的詳細資訊

如何大規模自動部署串流?

You can provision a stream and all its associated components like IAM policies, partitions, encryption settings, etc., using the Oracle Cloud infrastructure Resource Manager or Terraform provider for Oracle Cloud Infrastructure. 如需 Terraform 提供者的相關資訊,請參閱串流服務的 Terraform 主題

我如何確定所需的分割區數量?

建立串流時,您必須指定串流具有多少分割區。您應用程式的預期傳輸量可協助您判斷串流的分割區數目。將平均訊息大小乘以每秒寫入的訊息數目上限,以預估您的預期傳輸量。由於單一分割區每秒寫入速率限制為 1 MB,因此較高的傳輸量需要額外的分割區來避免節流。為了協助您管理應用程式尖峰,建議將分割區配置略高於傳輸量上限。

如何在串流中建立及刪除分割區?

主控台或以程式設計方式建立串流時,即可建立分割區。

主控台 UI 螢幕擷取畫面

主控台 UI:

以程式設計方式:

建立資料流

CreateStreamDetails streamDetails =
        CreateStreamDetails.builder()
                .compartmentId(compartmentId)
                .name(streamName)
                .partitions(partitions)
                .build();

SDK 提供更詳細的範例。

串流處理會在內部管理分割區,因此您不需要管理這些分割區。使用者無法直接刪除分割區。刪除串流時,會刪除與該串流相關聯的所有分割區。

可以請求的串流最小輸送量是多少?

Oracle Cloud Infrastructure 串流的傳輸量是由分割區所定義。分割區每秒提供 1 MB 的資料輸入,每秒提供 2 MB 的資料輸出。

我可以請求多少傳輸量是串流的最大值?

Oracle Cloud Infrastructure 串流的輸送量可以增加更多分割區來擴大。串流可以保留的分割區數目沒有理論上上限。不過,每個 Oracle Cloud Infrastructure 租用戶的通用點數類型帳戶預設分割區限制為 5。如果您需要更多分割區,可以隨時要求提高服務限制

如何使用 Oracle Cloud Infrastructure 主控台提高租用戶的服務限額?

您可以依照下列步驟要求提高服務限額:

  1. 在主控台的右上角,開啟使用者功能表並按一下租用戶:<tenancy_name>

  2. 按一下服務限制,然後按一下要求提高服務限制

  3. 填寫表單,針對服務類目選取其他,針對資源選取其他限制。在要求原因中,要求增加您租用戶中串流處理服務的分割區數目。

管理串流有哪些最佳做法?

以下是在建立串流時記住的幾個最佳做法:

  • 串流名稱在串流集區中必須是唯一的。這表示只有在兩個串流位於不同的串流集區上時,您才能在同一個區間中建立同名的兩個串流。
  • 建立串流之後,您就無法變更其中分割區的數目。建議將分割區配置稍微高於傳輸量上限。這可協助您管理應用程式尖峰。
  • 串流的保留期間在建立後即無法變更。依照預設,資料會儲存在串流中 24 小時。不過,它可以設定為在 24 到 168 小時之間保留資料。儲存在串流中的資料量不會影響串流的效能。

產生訊息到 Oracle Cloud Infrastructure 串流

如何產生串流的訊息?

串流建立且處於「作用中」狀態後,您就可以開始產生訊息。您可以使用主控台或透過 API 產生至串流。

主控台:移至主控台的「串流處理」服務區段,此區段位於解決方案與平台 > 分析頁籤底下。如果您已經建立串流,請在區間中選取串流,然後瀏覽至「串流詳細資訊」頁面。按一下主控台上的「產生測試訊息」按鈕。這會將分割區索引鍵隨機指派至訊息,而且將會寫入串流中的分割區。您可以按一下載入訊息按鈕,在最近的訊息區段中檢視此訊息。

對於 API :您可以使用 Oracle Cloud Infrastructure Streaming API 或 Kafka API 來產生串流。訊息將發布到串流中的分割區。如果有一個以上的分割區,您可以指定一個索引鍵來選擇要將訊息傳送至哪個分割區,如果未指定索引鍵,「串流處理」會產生 UUID 並將訊息傳送給隨機分割區,為您指派一個分割區。這樣可確保沒有任何金鑰的訊息會平均分配到所有分割區中。不過,建議您一律指定訊息索引鍵,以便明確控制資料的分割策略。

有關如何使用 Streaming SDK 產生訊息至串流的範例,請參閱文件

如何知道產生器將使用哪個分割區?

在使用 Oracle Cloud Infrastructure API 產生訊息時,分割邏輯是由 Streaming 控制。這稱為伺服器端分割。身為使用者,您可以根據索引鍵選擇要傳送的分割區。索引鍵是雜湊值,而產生的值則是用來決定要傳送訊息的分割區編號。具有相同索引鍵的訊息將進入同一個分割區。具有不同索引鍵的訊息可能會移至不同分割區或相同分割區。

不過,如果您使用 Kafka API 產生串流,則分割是由 Kafka 從屬端控制,而 Kafka 從屬端中的分割器則負責分割邏輯。這稱為用戶端分割。

如何建立有效的分割區索引鍵?

若要確保訊息的統一分送,您需要有效的訊息索引鍵值。要建立串流資料,請考慮串流資料的選擇性與基數。

  • 基數:請考量可能根據特定使用案例產生之唯一索引鍵的總數。較高的索引鍵基數通常意味著更好的分配。
  • 選擇性:考量每個索引鍵的訊息數目。較高的選擇性意味著每個索引鍵有更多訊息,這可能會導致熱點。

一律以高基數及低選擇性為目標。

如何確保訊息的傳遞順序與產生的順序相同?

串流可確保分割區內的可線性讀取和寫入。如果要確保具有相同值的訊息進入相同的分割區,則應對這些訊息使用相同的索引鍵。

訊息大小如何影響串流的傳輸量?

分割區提供每秒 1MB 的資料輸入速率,且每秒最多支援 1000 則 PUT 訊息。因此,如果記錄大小小於 1 KB,分割區的實際資料輸入速率將會小於每秒 1 MB,受限於每秒的 PUT 訊息數目上限。我們建議您分批產生訊息,原因如下:

  • 它可以減少傳送到服務的 put 要求數目,進而避免節流。
  • 它會啟用更好的傳輸量。

一批訊息的大小不應超過 1 MB。如果超出此限制,則會觸發節流機制。

如何處理大於 1 MB 的訊息?

您可以使用區塊功能,或使用 Oracle Cloud Infrastructure Object Storage 傳送訊息。

  • 分區:您可以將大型有效負載分割成串流處理可接受的多個較小區塊。區塊儲存在服務中的方式與一般、非分區訊息儲存的方式相同。唯一的差別在於消費者必須保留區塊,並在收集所有區塊後將其合併至訊息中。分割區中的區塊可以與一般訊息交互編寫。
  • 物件儲存:將大型有效負載放在「物件儲存」中,並且只傳輸該資料的指標。接收器可辨識此類型的指標有效負載 (Payload),以通透方式從 Object Storage 讀取資料,並將其提供給一般使用者。

如果我生產的費率大於分割區允許的費率,會發生什麼情況?

當產生器以每秒大於 1MB 的速率產生時,就會調節要求,並傳回 429,太多要求錯誤給從屬端,指出每一分割區每秒收到太多要求。

使用來自 Oracle Cloud Infrastructure Stream 的訊息

如何從串流讀取資料?

用戶是一個從一或多個串流讀取訊息的實體。此實體可單獨存在或屬於用戶群組的一部分。若要使用訊息,您必須建立游標,然後使用該游標來讀取訊息。游標指向串流中的位置。此位置可以是分割區或群組目前位置中的特定偏移量或時間。視您要讀取的位置而定,有各種可用的游標類型:TRIM_HORIZONAT_OFFSETAFTER_OFFSETAT_TIMELATEST.

如需詳細資訊,請參閱使用訊息的相關文件。

在任何指定的時間點,可以從串流使用的訊息數目上限為何?

GetMessagesRequest 類別的 getLimit () 方法會傳回最大訊息數。您最多可以指定 10,000 則訊息。依預設,此服務會傳回盡可能多的訊息。請考量您的平均訊息大小,以避免超出串流的輸送量。串流 GetMessages 批次大小是根據對特定串流產生的平均訊息大小而定。

如何避免向使用者發送重複訊息?

「串流處理」為消費者提供「最少一次」的傳遞語意。我們建議您透過使用者應用程式處理重複訊息。例如,當用戶群組的先前非作用中執行處理重新加入群組,並開始使用先前指派的執行處理尚未確認的訊息時,就有機會處理重複項目。

如何知道消費者是否落後?

如果您生產速度比消耗速度快,消費者就會落後。若要確定您的用戶是否落後,您可使用訊息的時戳。如果用戶落後,請考慮產生新的用戶,以從第一個用戶接管部分分割區。如果在單一分割區上落後,則無法復原。

請考慮下列選項:

  • 增加串流中的分割區數目。
  • 如果問題是由熱點引起,請變更訊息鍵策略。
  • 減少訊息處理時間,或同時處理請求。

如果您想知道特定分割區中留下多少訊息可供使用,請使用類型為 LATEST 的游標、取得下一個已發布訊息的偏移量,然後使用您目前使用的偏移量來設定差異。因為我們沒有密集偏移,所以您只能得到粗略的估計。不過,如果您的製作者停止產生,您就無法取得該資訊,因為您永遠不會取得下一個已發布訊息的偏移量。

使用者群組如何運作?

可以將使用者配置為群組的一部分,以便使用訊息。串流分割區會分散在群組的成員之間,以便只將來自任何單一分割區的訊息傳送給單一用戶。當用戶加入或離開群組時,分割區指派會重新平衡。如需詳細資訊,請參閱用戶群組的相關文件。

為什麼要使用使用者群組?

使用者群組提供以下優勢:

  • 用戶群組中的每個執行處理都會接收來自一或多個「自動」指派之分割區的訊息,而其他執行處理 (指派給不同分割區) 不會收到相同的訊息。如此一來,只要有一個執行處理只讀取一個分割區,就可以將執行處理數目擴充到分割區的數目。在這種情況下,加入該群組的新例項處於閒置狀態,不會被指派到任何分割區。
  • 將執行處理當作不同用戶群組的一部分,表示提供發布 - 訂閱模式,其中分割區的訊息會傳送到不同群組的所有執行處理。
    在同一個用戶群組中,規則如下圖所示:

    在不同的群組中,執行處理會收到相同的訊息,如下圖所示:

    當分割區內的訊息對於將採取不同處理方式的不同應用程式感到興趣時,此規則會很實用。我們希望所有感興趣的應用程式從分割區接收所有相同的訊息。
  • 當一個執行個體加入一個群組時,如果有足夠的分割區可用 (即,一個執行個體尚未達到每個分割區的限制),則會開始重新平衡。分割區會重新指派給現有執行個體,外加新的執行個體。同樣地,如果執行個體離開群組,則分割區會重新指派給其餘執行個體。
  • 位移提交是自動管理的。

每個串流可以有多少個用戶群組受到限制?

每個串流最多可有 50 個用戶群組。用戶群組是臨時的。它們在未用於串流保留期間時會消失。

使用用戶和用戶群組時,需要注意哪些逾時?

「串流處理」的下列元件有逾時:

  • 游標:只要您持續使用訊息,就不需要建立游標。如果訊息的使用量停止超過 5 分鐘,則必須重新建立游標。
  • 執行處理:如果執行處理停止使用超過 30 秒的訊息,就會將它從用戶群組中移除,而其分割區會重新指派給另一個執行處理。這稱為重新平衡。

使用者群組中的重新平衡是什麼?

重新平衡是一個處理作業,其中一組屬於相同用戶群組協調的執行處理,擁有一組屬於特定串流的互斥分割區。用戶群組成功重新平衡作業結束時,串流中的每個分割區都是由群組內的一或多個用戶執行處理所擁有。

哪些觸發用戶群組內的重新平衡活動?

當使用者群組的例項因無法傳送活動訊號超過 30 秒或程序終止而變成非作用中時,使用者群組內會觸發重新平衡活動。這麼做是為了處理非作用中執行處理先前所使用的分割區,並將其重新指派給作用中執行處理。同樣地,當先前非作用中的用戶群組例項加入群組時,會觸發重新平衡以指派分割區開始使用。Streaming 服務在執行處理重新加入群組時,不保證將執行處理重新指派給相同的分割區。

如何從使用者故障中復原?

若要從失敗中復原,您必須儲存為每個分割區處理的最後一個訊息的位移,以便在需要重新啟動用戶時從該訊息開始使用。


注意請勿儲存游件;這些游標會在 5 分鐘後過期。


我們不會提供任何指引來儲存上次處理的訊息偏移量,因此您可以使用任何想要的方法。例如,您可以將游標儲存在另一個串流上、VM 上的檔案或物件儲存的儲存桶上。重新啟動用戶時,請閱讀您處理之最後一個訊息的位移,然後建立類型為 AFTER_OFFSET 的游標,並指定您剛剛得到的位移。

Oracle Cloud Infrastructure Streaming 的 Kafka 相容性

如何將現有的 Kafka 應用程式與 Streaming 整合?

Streaming 服務提供 Kafka 端點,可供您現有的 Apache Kafka 型應用程式使用。所有組態變更都必須具備完全受管理的 Kafka 體驗。Streaming 的 Kafka 相容性可替代執行您自己的 Kafka 叢集。「串流處理」支援 Apache Kafka 1.0 和更新的用戶端版本,並可與現有的 Kafka 應用程式、工具及架構搭配使用。

現有的 Kafka 應用程式需要進行哪些組態變更,才能與 Streaming 互動?

具有現有 Kafka 應用程式的客戶只要變更其 Kafka 組態檔的下列參數,即可移轉至 Streaming。

security.protocol: SASL_SSL
sasl.mechanism: PLAIN


sasl.jaas.config: org.apache.kafka.common.security.plain.PlainLoginModule required username="{username}" password="{pwd}";
bootstrap.servers: kafka.streaming.{region}.com:9092
# Application settings
topicName: [streamOcid]

如何將 Kafka Connect 與 Streaming 搭配使用?

若要使用您的 Kafka 連接器搭配 Streaming,請使用主控台或命令行介面 (CLI) 建立 Kafka Connect 組態Streaming API 會呼叫這些組態的工作角色。在指定區間中建立的 Kafka Connect 組態只適用於相同區間中的串流。您可以使用多個具有相同 Kafka Connect 組態的 Kafka 連接器。如果需要在個別區間中產生或使用串流,或需要更多容量以避免在 Kafka Connect 組態上達到節流限制 (例如太多連接器或有太多工人的連接器),您可以建立更多 Kafka Connector 組態。

串流提供哪些與第一方和第三方產品的整合?

Streaming 的 Kafka Connect 相容性意味著您可以利用許多現有的第一方和第三方連接器,將資料從您的來源移至目標。Oracle 產品的 Kafka 連接器包括:

如需第三方 Kafka 來源和接收器連接器的完整清單,請參閱 Confluent Kafka 官方中心

監控 Oracle Cloud Infrastructure 串流

在哪裡可以監控我的串流?

串流與 Oracle Cloud Infrastructure Monitoring 完全整合。在主控台中,選取要監督的串流。在串流詳細資訊頁面底下,瀏覽至資源段落,然後按一下產生監督圖表來監督產生器要求,或按一下使用監督圖表來監督用戶端測量結果。這些測量結果可以在串流層次使用,而不是在分割區層次使用。如需所支援 Streaming 指標的說明,請參閱文件

監控串流時有哪些統計資料?

Console 中可用的每個指標均提供下列統計資料:

  • 費率、總和及平均值
  • 最小、最大和計數
  • P50、P90、P95、P99 和 P99.9

這些統計資料有下列時間間隔:

  • 自動
  • 1 分鐘
  • 5 分鐘
  • 1 小時

一般應為哪些指標設定警示?

針對製作者,請考慮根據下列指標設定警報:

  • 置放訊息延遲:延遲增加表示訊息需要較長的時間發佈,這可能表示網路問題。
  • 置放訊息總傳輸量
    • 總輸送量的重要增加,可能表示將達到每個分割區每秒 1 MB,並且該事件將觸發節流機制。
    • 重大減少可能意味著客戶製作者遇到問題或將要停止。
  • 將訊息調節記錄放入:在訊息調節時收到通知是很重要的。
  • Put Messages Failure (放置訊息失敗) :如果將訊息設為失敗,請務必告知作業小組是否可以開始調查原因。

對於使用者,請考慮根據下列指標設定相同的警報:

  • 獲取訊息延遲
  • 取得訊息總傳輸量
  • 獲取訊息節流請求
  • 獲取訊息失敗

如何知道我的串流狀況良好?

當串流處於「作用中」狀態時,其狀況良好。如果您可以產生串流,而且您得到成功的回應,則串流是正常的。在串流中產生資料之後,用戶可以在設定的保留期間內存取該資料。如果 GetMessages API 呼叫傳回較高的內部伺服器錯誤層級,則服務不正常。

狀況良好的串流也具有正常的指標:

  • 放置訊息延遲低。
  • 放置訊息總輸送量接近每秒每秒 1 MB。
  • 放置訊息節流記錄接近 0。
  • 放置訊息失敗接近 0。

  • 獲得訊息延遲低。
  • 「取得訊息總傳輸量」接近每秒每秒 2 MB。
  • 獲得訊息節流請求接近 0。
  • 獲得訊息失敗接近 0。

訊息何時會在串流中進行調節?

節流表示串流無法處理任何新的讀取或寫入。當您超過以下臨界值時,節流機制便會啟動:

  • GetMessages :每秒 5 次呼叫或每秒 2 MB
  • PutMessages :每個分割區每秒 1 MB
  • 管理和控制層作業,例如 CreateCursor、ListStream 等:每個串流每秒 5 次呼叫

在哪裡可以找到 API 錯誤清單?

有關 API 錯誤的詳細資訊,請參閱說明文件