2017-03-16 103 views
1

我過去曾經在Kafka上工作過一段時間,最近有要求在AWS Kinesis Stream上移植部分數據管道。現在我已經讀到Kinesis實際上是卡夫卡的一個分支,並且有許多相似之處。Kafka喜歡Kinesis Stream上的偏移量?

但是我沒有看到我們如何讓多個消費者從同一個流中讀取,每個消費者都有相應的偏移量。每個數據記錄都有一個序列號,但我找不到特定於消費者的任何內容(Kafka group Id?)。

真的有可能在同一個AWS Kinesis Stream上擁有不同的攝取率的不同消費者嗎?

回答

3

是的。

您可以擁有多個Kinesis使用者應用程序。比方說,你有2

  1. 第一用戶應用(我認爲這是在海邊的卡夫卡「消費羣」?)可以是「第一應用程序」,並存儲它在DynamoDB「第一應用程序表」的位置。它可以擁有儘可能多的節點(ec2實例)。
  2. 第二個消費者應用程序也可以在同一個流上工作,並將其位置存儲在另一個DynamoDB表上,比如說「second-app-table」。

每個表格將包含「應用程序Y的碎片X上最後處理的位置是什麼」信息。所以這2個應用程序在不同的地方存儲相同碎片的檢查點,這使得它們獨立。

關於採樣率,使用KCL的消費者應用程序中有一個「idleTimeBetweenReadsInMillis」值,即獲取操作的Amazon Kinesis API的輪詢間隔。例如,第一個應用程序可以具有「2000」輪詢間隔,因此它將每2秒輪詢流的碎片以查看是否有新記錄出現。

我不太瞭解卡夫卡,但據我記憶; Kafka「分區」在Kinesis中是「碎片」,Kafka「offset」在Kinesis中也是「sequence number」。 Kinesis消費者庫對存儲的序列使用術語「checkpoint」。就像你說的,概念是相似的。

+0

太好了。正是我在找什麼。 –

+0

googling'Checkpoint Kinesis'給了我後續問題的答案。 –