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