天天看點

Neha Narkhede: 借助Apache Kafka實作大規模流處理

在qcon紐約2016大會上,neha narkhede在演講“借助apache kafka實作大規模流處理”中介紹了kafka streams,這是kafka用于處理流式資料的新特性。據narkhede介紹,因為“無界(unbounded)”資料集随處可見,是以流處理越來越流行。那不再是一個像機器學習那樣的小衆問題。

narkhede首先介紹了資料操作的基本程式設計範式:

請求/響應周期 批處理 流處理

然後,narkhede提供了一個來自零售領域的流處理執行個體:銷售和發貨從根本上說是無界資料集,流處理可以有效地處理這樣的資料集。銷售和發貨是一個事件流(“發生了什麼”)和基于這些事件重新計算價格(“做些什麼”)的函數是流處理器。

在考慮流處理時,narkhede提到了開發人員如今可以選擇的兩個最流行的選項。第一,開發人員可以自己實作,對于簡單的場景而言,這可能還說得過去,但當加入像訂購、擴充性、容錯性或處理曆史資料這樣的特性時,情況會變得非常複雜。第二,開發人員可以選擇像spark或samza這樣的解決方案,它們都是重量級的,而且一般說來是為map/reduce而設計的。但在narkhede看來,流處理更像基于事件的微服務,而不是map/reduce,而這就是kafka streams的設計初衷。

kafka streams是一個輕量級的庫,可以嵌入應用程式,而且對打包或部署沒有施加任何限制。narkhede接下來概括地介紹了如何實作流處理系統的重要功能。

因為事件日志分區,是以擴充性是自動支援的。這樣,基于kafka streams的應用程式就可以形成叢集。消費者庫也會在并行資料處理方面提供幫助。 容錯性也是開箱即用的。kafka streams叢集中的節點不分主次,都是同等的節點。本地狀态差不多就是一個緩存,如果一個節點宕了,則資料處理隻要簡單地轉移到另一個節點就可以了。 有狀态處理也是支援的,根據需要通過連接配接或視窗計算實作。在這種情況下,必要的資料會被推送到處理器,以避免遠端通路。 支援使用修改後的業務邏輯對資料進行再處理,允許新消費者從偏移量0(從頭)開始事件處理。

接下來,narkhede介紹了kafka streams的雙重性,作為實作給定特性的基本原則:從根本上講,就是表(“狀态”)和流(“狀态如何變化”)的概念相結合。是以,基于kafka streams的應用程式可以同時具備響應性和狀态。另外,同時具備這兩個概念還會簡化架構。

neha narkhede在結尾時簡單地介紹了一下kafka connect,這是一個副項目,可以連接配接各種資料庫、hadoop或elasticsearch等系統,向kafka輸入資料或從kafka擷取資料。

本文轉自d1net(轉載)

繼續閱讀