下一代的 Actor 模型框架 Proto Actor
ProtoAct 是下一代的 Actor 模型框架,提供了 .NET 和 Go 語言的實現,默認支持分布式,提供管理和監控功能。在過去幾年,我們經常看到兩種 Actor 模型方法相互競爭,首先是經典的 Erlang/Akka 風格的 Actor 模型;以及微軟的“虛擬Actor”或者成為“Grains” 的風格。這兩種風格有各自的優缺點。
而 Proto.Actor 將這兩種風格結合在一起形成一個通用的框架。同時解決了另外一個主要的問題 —— 目前已有的 Actor 框架或者是語言無法在不同平臺間進行通訊,選擇了一種框架會導致你鎖定到某一個特定平臺上。
這也就是為什么 Proto.Actor 引入了“Actor 標準協議”的概念,這是一個可以被不同語言實現的基礎原語的協議。這改變了 Actor 系統中的游戲規則,你可以自由的為你基于 Actor 的微服務選擇不同的語言,這在之前是不可想象的。
Proto.Actor 提供了可伸縮、實時的事務處理,適用的場景包括:
投資和商業銀行業務
零售
社交媒體
仿真
游戲和賭博
汽車和交通系統
衛生保健
數據分析
任何需要高吞吐量、低延遲的業務需求都可以用到 Proto.Actor 。
Actors :
關于 Actor 模型的介紹:
Actor模型在并發編程中是比較常見的一種模型。很多開發語言都提供了原生的Actor模型。例如erlang,scala等。
Actor,可以看作是一個個獨立的實體,他們之間是毫無關聯的。但是,他們可以通過消息來通信。一個Actor收到其他Actor的信息后,它可以根據需要作出各種相應。消息的類型可以是任意的,消息的內容也可以是任意的。這點有點像webservice了。只提供接口服務,你不必了解我是如何實現的。
一個Actor如何處理多個Actor的請求呢?它先建立一個消息隊列,每次收到消息后,就放入隊列,而它每次也從隊列中取出消息體來處理。通常我們都使得這個過程是循環的。讓Actor可以時刻處理發送來的消息。
Go 示例代碼?https://github.com/AsynkronIT/protoactor-go? :
type?Hello?struct{?Who?string?} type?HelloActor?struct{}func?(state?*HelloActor)?Receive(context?actor.Context)?{switch?msg?:=?context.Message().(type)?{case?Hello:fmt.Printf("Hello?%v\n",?msg.Who)} }func?main()?{props?:=?actor.FromInstance(&HelloActor{})pid?:=?actor.Spawn(props)pid.Tell(Hello{Who:?"Roger"})console.ReadLine() }C# 示例代碼?https://github.com/AsynkronIT/protoactor-dotnet? :
using?System;using?Proto;class?Program{static?void?Main(string[]?args){var?props?=?Actor.FromFunc(ctx?=>{if(ctx.Message?is?string)ctx.Respond("hey");return?Actor.Done;});var?pid?=?Actor.Spawn(props);var?reply?=?pid.RequestAsync<object>("hello").Result;Console.WriteLine(reply);} }相關文章:
Akka系列---什么是Actor
.NET的Actor模型:Orleans
在.NET中實現Actor模型的不同方式
視頻游戲《光環4》的Actor模型設計和實現
原文地址:https://www.oschina.net/p/protoactor
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
總結
以上是生活随笔為你收集整理的下一代的 Actor 模型框架 Proto Actor的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 传奇 1.0 的出版过程,以及
- 下一篇: 用 Docker Machine 创建