×

  Actor模型是什么?

  • 作者:新網(wǎng)
  • 來源:新網(wǎng)
  • 瀏覽:100
  • 2018-02-27 17:25:04

 Actor模型是什么?近些年有逐漸流行的趨勢。Actor模型中一個核心概念就是Actor實體。每個Actor實體負責一個邏輯計算。傳統(tǒng)并發(fā)編程都是基于共享內(nèi)存的方式來達到多線程之間的通訊的目的。

 Actor模型是什么?近些年有逐漸流行的趨勢。Actor模型中一個核心概念就是Actor實體。每個Actor實體負責一個邏輯計算。傳統(tǒng)并發(fā)編程都是基于共享內(nèi)存的方式來達到多線程之間的通訊的目的。

0.jpg
<div>Actor之間不共享數(shù)據(jù),也不直接通訊,而是發(fā)送或者接受mailbox/queque中的消息來達到通訊的目的。Actor之間通過消息來驅(qū)動。正式由于發(fā)送者與接受者的分離,是的Actor具有內(nèi)在的并發(fā)特性,它可以不用考慮actor之間的同步問題,不受限制的調(diào)度執(zhí)行收到消息的Actor,從而優(yōu)化了IO等待的問題。Scala,Golang等在語言層面支持Actor模型。Scala的新版中,推出Akka來完成Actor模型,并有了Java版本。但是需要引入新的API,對現(xiàn)有業(yè)務(wù)代碼塊改造成Actor模型,對現(xiàn)有代碼改動較大。
 
Rx也是一種編程模型,它嘗試提供統(tǒng)一的異步編程接口封裝來操作一個可觀察的數(shù)據(jù)流。其吸收了函數(shù)式編程的優(yōu)秀思想,并將觀察者,迭代器模式實現(xiàn)的淋漓精致。當下流行的語言,基本都有相應(yīng)的實現(xiàn)。 如RxJava類庫,即提供了java版本的實現(xiàn),RxJava在Netflix的Zuul項目中得到成功的應(yīng)用。Rx看起來更像是一種編程思想的突破。它提供了統(tǒng)一的函數(shù)式的風格編程接口來簡化異步程序的編寫,同時內(nèi)部也通過callback機制,比Actor能獲得更好的響應(yīng)速度。在調(diào)研過程中,我們發(fā)現(xiàn)它同樣要求對現(xiàn)有代碼做較大改動,并將之前的同步模式轉(zhuǎn)換成函數(shù)式編程風格。
 
綜合來看,以上一些優(yōu)秀的框架并不能立即利用到我們的項目中,引入成本還是很高的。結(jié)合現(xiàn)有技術(shù)架構(gòu)上,以及產(chǎn)品正在快速迭代的環(huán)境下,我們對HTTP服務(wù)進行了一次輕量級的異步化改造。這次改造,引入Graph-Based Execution Engine來解決服務(wù)之間復(fù)雜的依賴關(guān)系,集中管理異步狀態(tài)。結(jié)合Servlet 3.0提供了請求及釋放tomcat容器線程的接口,充分利用Servlet容器線程資源。最后,通過spring mvc的異步模塊銜接這兩種異步機制,達到了全棧異步化的目的。
 

免責聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認相關(guān)法律責任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請發(fā)送郵件至:operations@xinnet.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

免費咨詢獲取折扣

Loading