2013-12-17 112 views
4

我見過很多使用高級消費者(消費者羣體)在同一進程中使用多個線程來消費話題的示例。你可以有多個進程(在不同的機器上)拆分分區並並行使用?如果是這樣,你有什麼例子嗎?消費羣體可以跨羣集中的不同節點嗎?

回答

3

簡短的回答是肯定的。對於高級用戶,每個線程處理一個或多個分區,並使用zookeeper進行協調。由於使用zookeeper,因此可以將它們分散到不同的進程和機器中。卡夫卡維基有一個example using the high-level consumer。您可以在多臺機器上運行該程序以查看其運行情況。當消費者被添加或移除時,高級消費者將自動重新平衡消費者。請記住,分區定義了主題的並行性級別,因此如果您的消費者線程多於分區,那麼其中一些線程將處於空閒狀態。

還值得注意的是,Kafka沒有提供任何種類的分佈式框架來跨機器運行消費者應用程序。這就是像Storm或Spark這樣的系統很有用的地方,因爲它們可以從卡夫卡消費並管理消費過程。 Kafka背後的人們最近還開放了一個名爲Samza的軟件包,該軟件包在Hadoop/YARN上提供了更高級的基於kafka的流處理。