AKKA介紹(二)

上一篇提到,Akka是Actor內(nèi)單線程編程模型,不共享狀態(tài),使用消息在actor間通信。有效的提升actor內(nèi)的內(nèi)聚性與降低actor間的耦合性。換個(gè)角度來看,其實(shí)akka的編程模型是真正的限定開發(fā)者從OO的角度思考與設(shè)計(jì)系統(tǒng)。

OO思想的本質(zhì)是通過對(duì)象之間協(xié)作來實(shí)現(xiàn)業(yè)務(wù)價(jià)值,在整個(gè)設(shè)計(jì)過程中,對(duì)象的有效識(shí)別就變成了至關(guān)重要的環(huán)節(jié)。AKKA中的actor完天美的表達(dá)了OO對(duì)象,包括開篇提到的actor的幾點(diǎn)特性,也體現(xiàn)出了出色的OO設(shè)計(jì)。

在OO設(shè)計(jì)實(shí)踐中,對(duì)于抽象出的復(fù)雜對(duì)象,借助狀態(tài)圖完成對(duì)象生命周期建模,通過狀態(tài)機(jī)實(shí)現(xiàn)狀態(tài)流轉(zhuǎn)與業(yè)務(wù)邏輯之間的解耦,在AKKA中架構(gòu)中,Actor內(nèi)嵌了狀態(tài)機(jī),當(dāng)設(shè)計(jì)復(fù)雜對(duì)象時(shí),可以基于面向生命周期建模狀態(tài)圖,并快速實(shí)現(xiàn)狀態(tài)機(jī)。AKKA的FSM組件封裝了狀態(tài)機(jī)的DSL,可以大大簡(jiǎn)化狀態(tài)機(jī)的實(shí)現(xiàn)。

Actor之間的通信是基于消息的,在AKKA中被抽象成命令,Actor接收一個(gè)命令,生成一個(gè)事件并完成狀態(tài)轉(zhuǎn)換,同時(shí)持久化事件到存儲(chǔ)中。Akka的存儲(chǔ)是基于Event Sourcing的,僅存儲(chǔ)領(lǐng)域事件到存儲(chǔ)中,當(dāng)我們還原actor狀態(tài)時(shí),回播領(lǐng)域事件即可。這種基于Event Sourcing的持久化方案被稱為Akka Persistece,它并不是一個(gè)DDD的框架,但當(dāng)它設(shè)計(jì)實(shí)現(xiàn)的時(shí)候,與DDD的概念驚人的相似。

?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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