[英]How does Kinesis achieve Kafka style Consumer Groups?
在Kafka中,我可以將我的主題分成許多分區。 我不能擁有比Kafka中的分區更多的消費者,因為分區用作擴展主題的一種方式。 如果我有更多的負載,我可以增加分區的數量,這將允許我增加消費者的數量,這將允許我在給定主題上有更多的線程/進程處理。
在卡夫卡,有一個消費者群體的概念。 如果我們在一個主題上有10個消費者組,則每個消費者組將有機會處理主題中的每條消息。 消費者群體仍然利用分區的可擴展性(即每個消費者群體可以擁有最多'n'個消費者,其中'n'是主題上的分區數量)。 這是卡夫卡的美感,可擴展性和多聲道閱讀是兩個獨立的概念,有兩個單獨的旋鈕可以轉動。
在Kinesis中,我們被告知,如果您使用Kinesis Library Client,您可以通過定義不同的Kinesis應用程序獲得與使用者組相同的功能。 換句話說,我們可以讓不同的Kinesis應用程序獨立地流式傳輸來自同一流和不同時間的所有記錄。
我們還被告知“Amazon Kinesis客戶端庫(KCL)會自動為每個Amazon Kinesis應用程序創建一個Amazon DynamoDB表,以跟蹤和維護狀態信息,例如重新分片事件和序列號檢查點。”
好的,所以我准備開始閱讀這里的KCL代碼了 ,但是我希望有人可以回答這些問題,以節省一些時間。
我在這里看到了這個問題,但它沒有回答我的問題。 特別是第三個問題! 此外,這個問題直接比較了兩種類似的技術。 它將幫助了解卡夫卡的人,更快地學習Kinesis。
在KCL配置中,有一個“appName”部分,它對應於“Application Name”,與Kafka中的“consumer group”相同。 對於每個使用者組(即Kinesis Streams Consumer Application),都有一個DynamoDB表。 你可以在這里看到一個示例DynamoDB(KCL appName是'quickstats-development'): AWS Kinesis leaseOwner confusion
不,據我所知,沒有。 “Kinesis Streams”類似於Kafka,但除此之外,沒有太多的圖形表示。
是。 每個Kafka Consumer-Group都表示為Kinesis中的不同DynamoDB表。 這樣,不同的Kinesis Consumer Applications可以獨立地使用相同的記錄。 Kinesis中的檢查點是Kafka的Offset值。 DynamoDB中的檢查點是Kinesis分片中讀取點的光標。 閱讀此答案的類似示例: https : //stackoverflow.com/a/42833193/1622134
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.