2016-08-17 63 views
3

IM在一個POC轉換現有弗林克應用/拓撲工作使用KafkaStreams。我的問題是關於部署。kafkastreams - 加入更多的處理能力

特別是 - 在Flink中,向flink安裝添加了「工作者節點」,然後向拓撲添加更多並行化以跟上日益增長的數據速率。

隨着數據速率的增加,人們如何增加KStream容量? KStreams是否自動處理?我是否啓動更多流程(ala微服務)?

還是我錯過了這裏的大圖?

回答

6

我是否會推出更多流程(ala Micro-services)?

簡短的回答是肯定的:

  • 回答1(增加容量):向外擴展,你只需啓動你的流處理應用程序,如的另一個實例在另一臺機器上。您的應用程序的實例將相互瞭解並自動開始共享處理工作。這可以在實時操作期間完成,並且不會丟失數據!
  • 答案2(移除容量):只需停止流處理應用程序的一個或多個正在運行的實例,例如關閉4個運行實例中的2個。應用程序的其餘實例會意識到其他實例已停止並自動接管已停止實例的處理工作。這可以在實時操作期間完成,並且不會丟失數據!

看到卡夫卡流文件在http://docs.confluent.io/3.0.0/streams/developer-guide.html#elastic-scaling-of-your-application進一步的細節(遺憾的是卡夫卡流Apache的卡夫卡文檔沒有這些細節還沒有)。

還是我錯過了這裏的大圖?

大的圖片是,圖片其實很好,很小。 :-)

因此,讓我添加以下內容,因爲我覺得很多用戶被其他相關技術的複雜性所困惑,然後並不真正期望您可以在一個流中執行流處理(包括其部署)更簡單的方法,就像你可以用Kafka Streams做什麼:

Kafka Streams應用程序是一個正常的普通的舊Java應用程序,恰好使用Kafka Streams庫。現有流處理技術的一個關鍵區別在於,通過使用Kafka Streams庫,您的應用程序變得可擴展,具有彈性,容錯等特性,而無需使用特殊的「處理集羣」來添加計算機,就像爲Flink,Spark,Storm等做好準備。Kafka Streams部署模型更加簡單和簡單:只需啓動或停止應用程序的其他實例(即字面上相同的代碼)。這適用於基本上任何與部署相關的工具,包括但不限於Puppet,Ansible,Docker,Mesos,YARN。您甚至可以通過運行java ... YourApp來手動執行此操作。

+0

因此,他們共享數據(聚合等),如flink /風暴/等應用程序? – ethrbunny

+0

另外 - 爲了實現這個運行,需要使用Kafka的Confluent版本/版本? – ethrbunny

+0

應用程序實例不共享數據。我建議閱讀文檔以獲得更好的理解。 –