Akka 設(shè)計(jì)Reactive System架構(gòu)指南(A-Z翻譯系列)Part2

第二部分 使用Reactive Streams,Akka Streams, Akka HTTP, and Alpakka將工作負(fù)載流化(Streaming)

最受歡迎的Akka OSS模塊之一出現(xiàn)于幾年前,它就是Akka Streams?;?br> Reactive Streams,Lightbend與Netflix,Oracle,Pivotal等公司的工程師共同發(fā)起,使得Reactive Streams可以處理帶背壓(backpressure)的數(shù)據(jù)流。類(lèi)似TCP, 背壓可以防止生產(chǎn)者給下游的消費(fèi)者過(guò)載的數(shù)據(jù)以至于無(wú)法處理。

Reactive Streams and Akka Streams

figure11.png

在圖11中,左邊是Reactive Stream(Java9),包括一個(gè)發(fā)布者,一個(gè)訂閱者和一個(gè)處理器。在jdK9中,不傾向于直接使用這些組件,而是作為streaming的基礎(chǔ)單元。Akka Streams構(gòu)建于Reactive Streams標(biāo)準(zhǔn)之上,額外添加了更多的功能。

在圖11的右邊,Akka Steams使用的術(shù)語(yǔ)是sources, sinks, 和 flows。對(duì)應(yīng)Java的publisher, subscriber, 和 processor。 它們的功能是類(lèi)似的,Akka Streams基于灣光公司 Akka團(tuán)隊(duì)和OSS社區(qū)的經(jīng)驗(yàn),在flow這一塊添加了功能。Akka Streams 提供了對(duì)于函數(shù)式編程人員很熟悉的功能,例如filter, fold, 和 map。這些方法支持在流中flow環(huán)節(jié)進(jìn)行數(shù)據(jù)的轉(zhuǎn)換。

Akka Streams, Akka HTTP, 和Alpakka

figure12.png

Akka HTTP 構(gòu)建于Akka Streams之上, Akka Streams天然適合于HTTP請(qǐng)求轉(zhuǎn)換到HTTP響應(yīng)的場(chǎng)景(見(jiàn)圖12). 轉(zhuǎn)換發(fā)生在steam的Flow模塊中,此模式同樣適合websocket,使用Akka Stream或Akka HTTP在消息進(jìn)入或者送出的時(shí)候進(jìn)行處理。

對(duì)于企業(yè)集成,可以選擇另一項(xiàng)目Alpakka,采用響應(yīng)式(Reactive)的,基于Akka Streams方案,代替Apache Camel。 和Camel社區(qū)版類(lèi)似,開(kāi)源社區(qū)大力構(gòu)建了不同的連接器,用來(lái)將背壓(backpressure)能力帶到傳統(tǒng)的Camel端點(diǎn)。
例如,以維基百科圖像為來(lái)源,Alpakka能夠“豐富數(shù)據(jù)” 并推送到各種連接器,例如Amazon S3, Apache Kafka或者M(jìn)icrosof Azure存儲(chǔ)隊(duì)列。

連接器列表:


connects.png

Alpakka用簡(jiǎn)潔的代碼提供了強(qiáng)大的能力,背后使用 Akka Streams和Akka actors,避免直接處理底層內(nèi)部控制。使用Akka Streams,更多的用函數(shù)式編程處理事物流,數(shù)據(jù)流過(guò)不同的函數(shù)來(lái)進(jìn)行不同的轉(zhuǎn)換操作。

總結(jié)

? Reactive Streams旨在為流負(fù)載提供背壓(backpressure)能力,避免生產(chǎn)者或消費(fèi)者過(guò)載。
? Akka Streams 是Reactive Streams的實(shí)現(xiàn),提供了一系列的流程處理轉(zhuǎn)換。
? 基于Akka Streams, Akka HTTP和Alpakka具備背壓(backpressure)能力。作為Akka生態(tài)系統(tǒng)的一部分,提供了彈性的HTTP服務(wù)和企業(yè)集成功能。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容