借助Apache Kafka和Kafka Streams框架可以更好地搭建以流為中心的架構和開發分布式流處理應用程序。Confluent的CEO Jay Kreps在上周舉行的2016響應式峰會上為我們帶來了有關流處理和微服務的演講。
Jay說,人們已經在數據庫技術上做了很多研究,但在消息隊列上做得并不多。在基于微服務的系統架構里,消息傳遞可以作為服務的強有力后盾。
他提到了三種編程范式:請求/響應、批處理和流處理,以及這三種范式之間的區別。流處理同時適用于在線和批處理兩種場景。流處理并不是更快的MapReduce,而是處理和分析數據的另一種范式。Jay介紹了Kafka的四種有關流處理的核心API:Producer、Consumer、Connector和Streams。
Kafka Streams是一個Java類庫,可以用來構建具有容錯能力的分布式流處理應用程序。它支持map、filter、aggregate(count、sum)和join這些方法。
在大會的另一個演講里,來自UC Santa Cruz的Peter Alvaro談到如何為大規模分布式容錯系統做自動故障測試。他提到了沿襲驅動故障注入(Lineage-Drive Fault Injection,LDFI)方法,這種方法利用日志跟蹤信息來識別冗余計算,有助于測試的進行。
Peter總結了系統故障測試需要具備的四個條件:
真實的問題 真實的系統 思考時間 故障自由關于這個話題的更多信息,可以在Netflix博客上看到。
大會第二天的活動內容包括Jan Machacek帶來的“從單體到微服務”以及Anil Gursel和Akara Sucharitakul帶來的“使用Akka Streams和Kafka進行回壓”。
Jan Machacek介紹了如何使用Akka、Scala和Kafka開發一個微服務系統。這個系統還使用了Apache Cassandra作為數據存儲,還有RabbitMQ,以及在Apache Spark里運行的批處理分析代碼。他建議我們在開發分布式系統時要有很好的監控和跟蹤能力。每個微服務都可能會發布自己的內部API,開發者們要知道如何使用它們。
Anil Gursel和Akara Sucharitakul講述了他們在PayPal利用Akka Streams和Kafka的回壓能力來應對突發性負載的經歷。他們舉了一個Web爬蟲的例子,并告訴我們他們是如何利用Kafka的緩沖能力和Akka Streams的回壓異步處理能力來應對突發性負載的。
Akka Streams框架提供了純異步流處理,具有響應式流的特點。他們還講到了Squbs,Squbs是PayPal開發的一個響應式平臺,并具有引導啟動、生命周期管理能力,可以用于構建松耦合的模塊化系統,并為日志和監控提供了集成接口。
查看英文原文:Jay Kreps on Distributed Stream Processing with Apache Kafka and Kafka Streams