本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
選擇要在 中串流的正確模式
下列主題說明如何為您的應用程式選擇最佳模式,並視需要在模式之間切換。
Kinesis Data Streams 中有哪些不同的模式?
模式會決定如何管理資料串流的容量,以及如何向您收取使用資料串流的費用。在 Amazon Kinesis Data Streams 中,您可以選擇隨需標準、隨需優勢,並佈建為資料串流的 模式。
-
隨需標準 - 具有隨需模式的資料串流不需要容量規劃,且會自動擴展以處理每分鐘 GB 的寫入和讀取輸送量。使用隨需模式時,Kinesis Data Streams 會自動管理碎片,以提供必要的輸送量。
-
隨需優勢 - 帳戶層級模式,可啟用更多功能,並為隨需串流提供更簡單的定價結構。在此模式中,您可以隨時主動暖機串流的寫入輸送量容量。對於定價,不再收取固定的每個串流層級費用,而且所有隨需串流的資料擷取、資料擷取和延長保留用量至少比隨需標準低 60%。
-
佈建 - 對於具有佈建模式的資料串流,您必須指定資料串流的碎片數量。資料串流的總容量是其碎片容量的總和。您可以視需要增加或減少資料串流中的碎片數量。
您可以使用 Kinesis Data Streams PutRecord和 PutRecords APIs,以任何模式將資料寫入資料串流。若要擷取資料,這三種模式都支援使用 GetRecords API 的預設取用者,以及使用 SubscribeToShard API 的增強型廣發 (EFO) 取用者。
隨需和佈建兩種模式都支援所有 Kinesis Data Streams 功能,包括保留模式、加密、監控指標和其他功能。Kinesis Data Streams 可在隨需和佈建容量兩種模式下提供高耐久性和可用性。
隨需標準模式功能和使用案例
具有隨需模式的資料串流不需要規劃容量,而且會自動擴展以處理每分鐘 GB 的寫入和讀取輸送量。隨需模式可簡化以低延遲的方式擷取和儲存大量資料,因為無需佈建和管理伺服器、儲存裝置或輸送量。您每天可以擷取數十億筆記錄,而不會產生任何營運開銷。
隨需模式非常適合應對高度變化且無法預測的應用程式流量需求。您不再需要為尖峰容量佈建這些工作負載,這可能會因為使用率低而導致更高的成本。隨需模式適用於流量模式不可預測且高度變化的工作負載。
使用隨需容量模式,您可以按從資料串流寫入和讀取的資料 GB 數量付費。不需要指定您預期應用程式將進行的讀取和寫入輸送量。Kinesis Data Streams 會在您的工作負載上升或下降時,立即因應。如需詳細資訊,請參閱 Amazon Kinesis Data Streams 定價
隨需模式下的資料串流最多可容納前 30 天觀察到的尖峰寫入輸送量的兩倍。當資料串流的寫入輸送量達到新的尖峰時,Kinesis Data Streams 會自動擴展資料串流的容量。例如,如果您的資料串流的寫入輸送量在 10 MB/s 和 40 MB/s 之間變化,Kinesis Data Streams 可確保您可以輕鬆提升至先前的尖峰輸送量增加一倍,或是 80 MB/s。如果相同的資料串流維持 50 MB/s 的新尖峰輸送量,則 Kinesis Data Streams 可確保有足夠的容量來擷取 100 MB/s 的寫入輸送量。但是,如果流量在 15 分鐘的持續時間內增加到前一個峰值的兩倍以上,則可能會發生寫入限流。您必須重試這些限流的請求。
使用隨需模式的資料串流彙總讀取容量會與寫入輸送量成比例增加。這有助於確保取用者應用程式永遠具有足夠的讀取輸送量來即時處理傳入資料。與使用 GetRecords API 讀取資料相比,您會取得至少兩倍的寫入輸送量。建議您將一個取用者應用程式與 GetRecord API 搭配使用,以便在應用程式需要從停機時間復原時,該應用程式有足夠的空間來跟進。對於需要新增多個取用者應用程式的案例,建議您使用 Kinesis Data Streams 的增強型散發功能。增強型散發支援使用 SubscribeToShard API 將最多 20 個取用者應用程式新增至資料串流,每個取用者應用程式都有專用輸送量。
處理讀取和寫入輸送量例外狀況
使用隨需模式 (與佈建容量模式相同),您必須指定每個記錄的分割區索引鍵,以將資料寫入資料串流。Kinesis Data Streams 會使用您的分割區索引鍵在碎片之間分發資料。Kinesis Data Streams 會監控每個碎片的流量。當傳入流量超過每個碎片 500 KB/s 時,其會在 15 分鐘內對碎片進行分割。父碎片的雜湊索引鍵值在子碎片中均勻地重新分配。
如果傳入流量超過先前峰值的兩倍,即使資料平均分佈在碎片上,您也可以體驗大約 15 分鐘的讀取或寫入例外狀況。建議您重試所有此類請求,以便將所有記錄正確儲存在 Kinesis Data Streams 中。
如果您使用的分割區索引鍵會導致資料分配不均,且指派給特定碎片的記錄超出其限制,則可能會遇到讀取和寫入例外狀況。使用隨需模式時,資料串流會自動適應以處理不均勻的資料分配模式,除非單一分割區索引鍵超過碎片的 1 MB/s 輸送量和每秒 1000 筆記錄限制。
在隨需模式中,Kinesis Data Streams 偵測到流量增加時,會平均分割碎片。但是,它不會偵測和隔離將較高部分傳入流量導向特定碎片的雜湊索引鍵。如果您使用的是高度不均勻的分割區索引鍵,則可能會繼續收到寫入異常。如需此使用案例,建議使用支援精細碎片分割的佈建容量模式。
隨需優勢模式功能和使用案例
隨需優勢是一種帳戶層級設定,可解鎖更多功能,並為區域中所有隨需串流提供不同的定價結構。在此模式中,隨需串流會保留其功能,並繼續根據實際資料用量自動擴展容量。如果您想要主動暖機串流的寫入輸送量容量,您可以設定暖傳輸量。例如,如果您的資料串流的寫入輸送量介於 10 MB/s 和 40 MB/s 之間,您可以預期它在不限流的情況下處理高達 80MB/s 的即時輸送量增加。不過,如果您預測即將發生的事件達到大約 200MB/s 的流量峰值,則可以使用 200MB/s 的暖輸送量來設定串流,以確保在資料輸送量到達時有可用的容量。使用暖輸送量不會產生額外費用。
隨需優勢模式的另一個好處是隨需串流會轉換為更簡單的定價結構。啟用 模式後,帳戶將不再看到固定的每個串流費用,而且您只會處理資料擷取、資料擷取和選用的延長保留費用。與隨需標準中的對應維度相比,每個定價維度也具有顯著的折扣。如需詳細資訊,請參閱 Amazon Kinesis Data Streams 定價
與此模式中的標準資料擷取相比,增強廣發資料擷取也沒有價格溢價。此外,使用隨需優勢模式,每個串流最多可註冊 50 位消費者,以使用增強型廣發功能。啟用隨需優勢會將帳戶遞交至所有隨需串流至少每秒 25MiB 的資料擷取和每秒 25MiB 的資料擷取。對於符合最低用量需求的帳戶,Kinesis Data Streams 主控台會檢查您帳戶的用量模式是否適合使用隨需優勢模式。
如果您的帳戶的資料使用量低於要求,將會向您收取差額的費用,但仍會以相同的折扣費率計費。啟用隨需優勢也有最短 24 小時的期間,您才能停用 模式。整體而言,如果您的輸送量使用量接近或高於最低承諾、需要許多廣發消費者,或是使用數百個資料串流操作,則隨需優勢是使用 Kinesis Data Streams 進行串流的最佳方式。
佈建模式功能和使用案例
使用佈建模式時,在建立資料串流之後,您可以使用 或 UpdateShardCount API 動態擴展AWS 管理主控台或縮減碎片容量。當有 Kinesis Data Streams 生產者或取用者應用程式正在寫入或從串流讀取資料時,您可以進行更新。
佈建模式適用於容量需求且易於預測的可預測流量。如果您想要對資料在碎片之間分發的方式進行更精細控制,則可以使用佈建模式。
採用佈建模式,必須指定資料串流的碎片數目。若要決定使用佈建模式的資料串流的大小,您需要以下各項輸入值:
-
寫入串流的資料記錄其平均大小 (KB 數),無條件進位至 1 KB (
average_data_size_in_KB)。 -
每秒寫入串流以及從串流讀取的資料記錄筆數 (
records_per_second)。 -
同時各自從串流取用資料的 Kinesis Data Streams 應用程式數目,即取用者數目 (
number_of_consumers)。 -
單位為 KB 的傳入寫入頻寬 (
incoming_write_bandwidth_in_KB),其值等於average_data_size_in_KB乘以records_per_second。 -
單位為 KB 的傳出讀取頻寬 (
outgoing_read_bandwidth_in_KB),其值等於incoming_write_bandwidth_in_KB乘以number_of_consumers。
您可使用以下公式帶入輸入值,計算串流所需的碎片數目 (number_of_shards)。
number_of_shards = ceiling(max(incoming_write_bandwidth_in_KiB/1024, outgoing_read_bandwidth_in_KiB/2048))
如果您未設定處理尖峰輸送量的資料串流,則可能仍會在佈建模式中遇到讀取和寫入輸送量例外狀況。在這種情形下,您必須手動擴展資料串流以適應資料流量。
如果您使用的分割區索引鍵會導致資料分配不均,且指派給碎片的記錄超出其限制,則可能會遇到讀取和寫入例外狀況。若要在佈建模式中解決此問題,請識別此類碎片並手動分割,以更好地容納您的流量。如需詳細資訊,請參閱將串流重新分片。
在模式之間切換
對於 中的每個資料串流AWS 帳戶,您可以在 24 小時內在隨需和佈建模式之間切換兩次。在模式之間切換不會對使用此資料串流的應用程式造成任何中斷。您可以繼續寫入此資料串流和從中讀取資料。當您在模式之間切換時,從隨需切換到佈建,或從佈建切換到隨需時,串流的狀態會設定為更新。您必須等待資料串流狀態變為作用中,才能再次修改其屬性。
當您從佈建容量模式切換到隨需容量模式時,資料串流最初會保留轉換前的碎片計數,從此開始,Kinesis Data Streams 會監控您的資料流量,並根據您的寫入輸送量擴展此隨需資料串流的碎片計數。當您從隨需模式切換到佈建模式時,資料串流一開始也會保留在轉換之前擁有的任何碎片計數,但從這個時間點開始,您必須負責監控和調整此資料串流的碎片計數,以正確容納您的寫入輸送量。
您可以透過啟用帳戶層級設定,從隨需標準切換到隨需優勢模式。啟用時,帳戶會遞交至 區域中所有隨需串流至少 25MiB/s 的資料擷取和 25MiB/s 的資料擷取用量。啟用後,您必須等待至少 24 小時才能停用隨需優勢,但您可以隨時請求變更。如果您想要從隨需優勢切換到隨需標準,您必須先移除隨需串流設定的任何暖輸送量。