日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

阿卡vs风暴

發(fā)布時(shí)間:2023/12/3 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿卡vs风暴 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我最近在Twitter的Storm上工作了一段時(shí)間,這讓我想知道,它與另一個(gè)高性能的并發(fā)數(shù)據(jù)處理框架Akka相比如何 。

什么是Akka和Storm?

讓我們從兩個(gè)系統(tǒng)的簡(jiǎn)短描述開(kāi)始。 Storm是一個(gè)分布式實(shí)時(shí)計(jì)算系統(tǒng)。 在Storm集群上,您執(zhí)行拓?fù)?/strong> ,該拓?fù)?/strong>處理元組 (數(shù)據(jù))流。 每個(gè)拓?fù)涠际且粋€(gè)由噴嘴 (生成元組)和螺栓 (轉(zhuǎn)換元組)組成的圖形。 Storm負(fù)責(zé)群集通信,群集之間的故障轉(zhuǎn)移和拓?fù)浞植肌?

Akka是用于構(gòu)建分布式,并發(fā),容錯(cuò)應(yīng)用程序的工具包。 在Akka應(yīng)用程序中,基本構(gòu)造是actor ; actor異步處理消息 ,并且確保每個(gè)actor實(shí)例一次最多使用一個(gè)線程運(yùn)行,這使得并發(fā)變得更加容易。 Actor也可以遠(yuǎn)程部署。 即將提供一個(gè)集群模塊 ,它將處理集群節(jié)點(diǎn)之間的自動(dòng)故障轉(zhuǎn)移和參與者分配。 兩種系統(tǒng)都可以很好地?cái)U(kuò)展,并且可以處理大量數(shù)據(jù)。 但是何時(shí)使用一個(gè),何時(shí)使用另一個(gè)?

關(guān)于該主題還有另一篇不錯(cuò)的博客文章,但是我想進(jìn)一步進(jìn)行比較:讓我們看看Storm中的基本構(gòu)造與Akka中的基本構(gòu)造相比。

比較基礎(chǔ)

首先,Storm中數(shù)據(jù)的基本單位是元組 。 一個(gè)元組可以具有任意數(shù)量的元素,每個(gè)元組元素可以是任何對(duì)象,只要有一個(gè)序列化器即可。 在Akka中,基本單元是message ,它可以是任何對(duì)象,但也應(yīng)該可序列化(用于發(fā)送給遠(yuǎn)程參與者)。 因此,這里的概念幾乎是等效的。

讓我們看一下基本的計(jì)算單位。 在Storm中,我們有一些組成部分螺栓 。 螺栓可以是任何代碼,它可以對(duì)傳入的元組進(jìn)行任意處理。 它還可以存儲(chǔ)一些可變數(shù)據(jù),例如以累積結(jié)果。 此外,螺栓在單個(gè)線程中運(yùn)行,因此,除非您在螺栓中啟動(dòng)其他線程,否則您不必?fù)?dān)心并發(fā)訪問(wèn)螺栓數(shù)據(jù)。 這與演員非常相似,不是嗎? 因此,暴風(fēng)雨螺栓/萌芽對(duì)應(yīng)于Akka演員。 這兩個(gè)如何詳細(xì)比較? 參與者可以接收任意消息; 螺栓可以接收任意元組。 預(yù)計(jì)兩者都將根據(jù)接收到的數(shù)據(jù)進(jìn)行一些處理。 兩者都具有內(nèi)部狀態(tài),該狀態(tài)是私有的,并且可以防止并發(fā)線程訪問(wèn)。

演員和螺栓:差異

一個(gè)關(guān)鍵的區(qū)別是角色和螺栓之間的通信方式。 演員可以向任何其他演員發(fā)送消息,只要該消息具有ActorRef (如果沒(méi)有,則可以按名稱查找演員)。 它還可以將回復(fù)發(fā)送給正在處理的郵件的發(fā)件人。 另一方面,暴風(fēng)雨是單向的 。 您無(wú)法發(fā)送回郵件; 您也無(wú)法將消息發(fā)送到任意螺栓。 您還可以將元組發(fā)送到命名通道(流),這將導(dǎo)致元組(消息)廣播到拓?fù)渲卸x的所有偵聽(tīng)器。 (螺栓還會(huì)向發(fā)短信確認(rèn)消息,這也是通信的一種形式。)

在Storm中,可以并行運(yùn)行螺栓/新芽代碼的多個(gè)副本(取決于并行性設(shè)置 )。 因此,這對(duì)應(yīng)于一組(可能是遠(yuǎn)程的)actor,在它們前面有一個(gè)負(fù)載均衡器actor 。 這是Akka的選路中眾所周知的概念。 關(guān)于元組如何路由到Storm中的螺栓實(shí)例(隨機(jī),字段上的一致性哈希)有兩種選擇,這大致對(duì)應(yīng)于Akka中的各種路由器選項(xiàng)(循環(huán),消息上的一致性哈希)。

螺栓和演員的“重量”也有所不同。 在Akka,擁有很多演員 (多達(dá)數(shù)百萬(wàn))是正常的。 在Storm中,預(yù)期的螺栓數(shù)量要少得多; 無(wú)論如何這都不是Storm的缺點(diǎn),而是設(shè)計(jì)上的決定。 同樣,Akka角色通常共享線程 ,而每個(gè)螺栓實(shí)例都傾向于具有專用線程 。

其它功能

Storm還有一個(gè)關(guān)鍵功能,即開(kāi)即用的Akka尚未實(shí)現(xiàn): 保證消息傳遞 。 Storm跟蹤了整個(gè)元組樹(shù),這些元組樹(shù)是由發(fā)芽產(chǎn)生的任何元組產(chǎn)生的。 如果未確認(rèn)所有元組,則將重播該元組。

而且,Storm的群集管理更加先進(jìn)(基于Zookeeper的自動(dòng)故障轉(zhuǎn)移,群集中工作人員的自動(dòng)平衡);以及 但是,即將推出的Akka群集模塊應(yīng)該可以解決這個(gè)問(wèn)題。

最后,Storm中的通信布局-拓?fù)?是靜態(tài)的,并且是預(yù)先定義的。 在Akka中,通信模式可以隨時(shí)間變化,并且可以完全動(dòng)態(tài)。 actor可以向其他任何actor發(fā)送消息,甚至可以發(fā)送地址(ActorRefs)。

因此,總體而言,Storm很好地實(shí)現(xiàn)了特定范圍的用法,而Akka則更多地是通用工具包。 可以在Akka之上構(gòu)建類似于Storm的系統(tǒng),但反之則不行(至少很難)。

參考: Adam Warski博客的Blog中來(lái)自JCG合作伙伴 Adam Warski的Akka vs Storm 。

翻譯自: https://www.javacodegeeks.com/2013/06/akka-vs-storm.html

總結(jié)

以上是生活随笔為你收集整理的阿卡vs风暴的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。