Akka(一)

Akka

什么是Akka

Akka是一組用于構(gòu)建高并發(fā)(highly concurrent),分布式(distributed)万俗,彈性(resilient)湾笛,消息驅(qū)動(dòng)(message-driven)的JAVA和SCALA應(yīng)用的工具包。

為什么用Akka

  • 更簡單的高并發(fā)實(shí)現(xiàn)
  • 彈性設(shè)計(jì)闰歪,自愈&容錯(cuò)
  • 高性能(單機(jī)處理5千萬消息/秒)嚎研,輕量級(jí)事件(1GB內(nèi)存可創(chuàng)建250萬actor)
  • 集群部署,分布式節(jié)點(diǎn)
  • 響應(yīng)式編程课竣,異步非阻塞事件驅(qū)動(dòng)

Akka工作視圖

image.png

上圖是一個(gè)類似樹狀層次結(jié)構(gòu)嘉赎,ActorSystem的Top-Level層次結(jié)構(gòu),與Actor關(guān)聯(lián)起來于樟,稱為Actor路徑(Actor Path)公条,不同的路徑代表了不同的監(jiān)督范圍(Supervision Scope)。下面說明ActorSystem的監(jiān)督范圍:

  • “/”路徑:通過根路徑可以搜索到所有的Actor
  • “/user”路徑:用戶創(chuàng)建的Top-Level Actor在該路徑下面迂曲,通過調(diào)用ActorSystem.actorOf來實(shí)現(xiàn)Actor的創(chuàng)建
  • “/system”路徑:系統(tǒng)創(chuàng)建的Top-Level Actor在該路徑下面

Actor

普通的并發(fā)編程方式

多線程方法調(diào)用


image.png

多線程調(diào)用棧


image.png

問題:
需要上鎖靶橱,防止并發(fā)導(dǎo)致的數(shù)據(jù)錯(cuò)亂;
鎖成本高,應(yīng)用被阻塞关霸,多cpu利用率低传黄,死鎖;
多線程管理和異常處理較麻煩队寇;

事件驅(qū)動(dòng)編程

Actor模型是一個(gè)并行計(jì)算(Concurrent Computation)模型,它把a(bǔ)ctor作為并行計(jì)算的基本元素來對待:為響應(yīng)一個(gè)接收到的消息佳遣,一個(gè)actor能夠自己做出一些決策,如創(chuàng)建更多的actor窒舟,或發(fā)送更多的消息,或者確定如何去響應(yīng)接收到的下一個(gè)消息

Actor通過消息協(xié)作诵盼,而不是call method


image.png

image.png

Actor作為Akka最小的并發(fā)單元,充當(dāng)了消息的執(zhí)行者和信使洁墙,它包含什么:

  1. 收件箱(存儲(chǔ)消息隊(duì)列)
  2. 行為(狀態(tài),僅內(nèi)部可變)
  3. 消息列表(待處理的任務(wù))
  4. 地址

Actor生命周期

image.png


ActorSystem

在Akka中杀糯,一個(gè)ActorSystem是一個(gè)重量級(jí)的結(jié)構(gòu)扫俺,他需要分配多個(gè)線程固翰,所以在實(shí)際應(yīng)用中,按照邏輯劃分的每個(gè)應(yīng)用對應(yīng)一個(gè)ActorSystem實(shí)例

一個(gè)ActorSystem是具有分層結(jié)構(gòu)(Hierarchical Structure)的:一個(gè)Actor能夠管理(Oversee)某個(gè)特定的函數(shù)疗琉,他可能希望將一個(gè)task分解為更小的多個(gè)子task歉铝,這樣它就需要?jiǎng)?chuàng)建多個(gè)子Actor(Child Actors),并監(jiān)督這些子Actor處理任務(wù)的進(jìn)度等詳細(xì)情況柠贤,實(shí)際上這個(gè)Actor創(chuàng)建了一個(gè)Supervisor來監(jiān)督管理子Actor執(zhí)行拆分后的多個(gè)子task类缤,如果一個(gè)子Actor執(zhí)行子task失敗,那么就要向Supervisor發(fā)送一個(gè)消息說明處理子task失敗宴霸。需要知道的是,一個(gè)Actor能且僅能有一個(gè)Supervisor瓢谢,就是創(chuàng)建它的那個(gè)Actor氓扛。基于被監(jiān)控任務(wù)的性質(zhì)和失敗的性質(zhì)采郎,一個(gè)Supervisor可以選擇執(zhí)行如下操作選擇:

  1. 重新開始(Resume)一個(gè)子Actor尉剩,保持它內(nèi)部的狀態(tài)
  2. 重啟一個(gè)子Actor,清除它內(nèi)部的狀態(tài)
  3. 終止一個(gè)子Actor
  4. 擴(kuò)大失敗的影響毅臊,從而使這個(gè)子Actor失敗
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末理茎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子管嬉,更是在濱河造成了極大的恐慌,老刑警劉巖础倍,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胎挎,死亡現(xiàn)場離奇詭異犹菇,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)胳搞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門称杨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姑原,“玉大人,你說我怎么就攤上這事摊滔。” “怎么了呻袭?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵腺兴,是天一觀的道長页响。 經(jīng)常有香客問我,道長闰蚕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任涩哟,我火速辦了婚禮盼玄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘器仗。我一直安慰自己童番,他們只是感情好妓盲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弹沽,像睡著了一般筋粗。 火紅的嫁衣襯著肌膚如雪娜亿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天沛婴,我揣著相機(jī)與錄音,去河邊找鬼泻蚊。 笑死丑婿,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的秒旋。 我是一名探鬼主播诀拭,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼耕挨,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起魄健,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤沽瘦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后良哲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體助隧,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡并村,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年哩牍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丸边。...
    茶點(diǎn)故事閱讀 39,991評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖纬朝,靈堂內(nèi)的尸體忽然破棺而出嘱吗,到底是詐尸還是另有隱情谒麦,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布患膛,位于F島的核電站耻蛇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏跃捣。R本人自食惡果不足惜夺蛇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一刁赦、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧丸升,春花似錦牺氨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽歹篓。三九已至揉阎,卻和暖如春背捌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坑赡。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工毅否, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蝇刀,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓捆探,卻偏偏與公主長得像黍图,于是被迫代替她去往敵國和親奴烙。 傳聞我的和親對象是個(gè)殘疾皇子雌隅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 北京時(shí)間2019年4月20日,Erlang之父Joe Armstrong去世修械,享年68歲,致敬真正的思想者(還有...
    Queen〇fLaponia閱讀 1,403評論 3 3
  • Actor系統(tǒng)的實(shí)體 在Actor系統(tǒng)中翘单,actor之間具有樹形的監(jiān)管結(jié)構(gòu),并且actor可以跨多個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行透...
    JasonDing閱讀 3,341評論 2 6
  • 持久化 當(dāng)我們在集群系統(tǒng)中哄芜,一臺(tái)機(jī)器向另一臺(tái)機(jī)器發(fā)送一段數(shù)據(jù)柬唯,負(fù)責(zé)接收的機(jī)器在接收數(shù)據(jù)前突然宕機(jī),就會(huì)造成數(shù)據(jù)丟失...
    mango_knight閱讀 4,539評論 0 4
  • 本章描述了Actor如何被識(shí)別和定位在于一個(gè)分布式Actor系統(tǒng)涂屁。這與固有的主管層次一樣是Actor系統(tǒng)的核心內(nèi)容...
    兒哥欠三百首閱讀 1,827評論 0 0
  • Actor的創(chuàng)建&引用&聲明周期 1.創(chuàng)建actor 定義一個(gè)Actor類 要定義自己的Actor類拆又,需要繼承Ac...
    這個(gè)該叫什么呢閱讀 1,011評論 0 1