下一代的 Actor 模型框架 Proto Actor
2017-06-28 07:50
232 查看
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 :
C# 示例代码 https://github.com/AsynkronIT/protoactor-dotnet :
相关文章:
Akka系列---什么是Actor
.NET的Actor模型:Orleans
在.NET中实现Actor模型的不同方式
视频游戏《光环4》的Actor模型设计和实现
原文地址:https://www.oschina.net/p/protoactor
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
而 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跨平台或扫描二维码关注
相关文章推荐
- Orleans框架------基于Actor模型生成分布式Id
- Orleans框架------基于Actor模型生成分布式Id
- Kilim框架的Actor并发模型
- Kilim框架的Actor并发模型
- 在使用actor模型的游戏后端框架中添加单元测试
- Netty框架之异步事件驱动模型
- 【PSR规范专题(1)】PSR-0+namespace+spl_autoload_register实现框架模型
- 下一代的B/S开发框架--Echo 教程(4)
- 多线程开发的捷径:构建Java并发模型框架
- JAVA并发框架之Semaphore实现生产者与消费者模型
- 基于Scala的Actor之上的分布式并发消息驱动框架Akka初体验
- Laravel框架学习笔记(二)项目实战之模型(Models)
- TensorFlow 深度学习框架(6)-- mnist 数字识别及不同模型效果比较
- 持久化框架——编程模型
- Runtime - 运行时 理解和应用 字典转模型框架 AFN中的交换方法
- TensorFlow 深度学习框架(7)-- 变量管理及训练模型的保存与加载
- Erlang 中的并发 -- Actor 模型
- TensorFlow 深度学习框架(9)-- 经典卷积网络模型 : LeNet-5 模型 & Inception-v3 模型
- Actor-ES框架:Ray-Handler之CoreHandler编写
- PHP YII框架开发小技巧之模型(models)中rules自定义验证规则