在.NET中实现Actor模型的不同方式
上周,《实现领域驱动设计》(Implementing Domain-Driven Design)一书的作者Vaughn Vernon,发布了Dotsero,这是一个使用C#编写的、基于.NET的Actor模型工具包,它的实现参考了Akka API。Akka工具包是对Actor模型的一种实现,目前为止已经有对应Java和Scala版本的API。
今年早些时候,微软Research部门也发布了一个基于Actor模型的框架,Orleans框架的预览版。这个框架采用了云端编程模型,编写这个框架的目的在于尽可能减少创建互动式的服务时所面对的各种挑战,这些服务往往对伸缩性和可靠性有较高要求。
Orleans团队认为,虽然Erlang和Akka这些Actor平台已经在简化分布式系统编程方面前进了一步,但由于它们提供了相对较低层次的抽象与系统服务,因此自身的复杂性依然很高。开发者们必须要成为分布式系统方面的专家,才有可能使用这些工具创建正确的解决方案。为了避免这些复杂性,并吸引主流开发者,Orleans团队提升了Actor的抽象层次。虽然它仍然基于Actor模型,但与任何现有的基于Actor模型的平台所不同的是:它将Actor视为抽象的,而不是物理的实体。
最近,Vaughn与Orleans项目的带头人,来自微软Research部门的Sergey Bykov在twitter上进行了一番讨论。Vaughn认为,Orleans本质上并非是一种基于Actor模型的实现,其中部分原因在于它缺少了用以支持有限状态机(FSM)的Become和Unbecome方法,而Vaughn认为这是Actor原始的定义中所必需的一部分。他同时也认为,由于在Orleans中Actor是始终存在的,那么当客户端对某个本应不存在的Actor发起请求时,它难以意识到这一点,从而容易引发问题。
Sergey在回应中表示,Become只是读取定义的其中一种方式,并非Actor模型所必需的一部分。而从他的经验来看,由于Orleans中的Actor始终存在,因而减少了竞态条件的产生,并且简化了恢复操作,从这方面来看由此可能产生问题的可能性比Vaughn所说要小很多。如果某个Actor不应该存在,那么可以通过由应用程序逻辑返回一个错误状态的方式进行处理,虽然他也承认这种方式并不够理想,但比起在创建Actor时遇到竞态条件的情况还是要更好一些。
最近, Azure方面的一位微软MVP,Richard Astbury创建了一个简单的物联网网关应用程序,以此表明他对Orleans的观点,即Orleans能够帮助开发者在云端创建大规模、低延迟并且适应性良好的.NET应用程序。Richard表示,虽然这只是个简单的示例,但它已经包含了创建更复杂的场景时所需的各种基础构建块了。
今年三月时,有一份名为《Orleans:针对可编程性与伸缩性的分布式虚拟Actor》的论文专门讲解了Orleans背后的设计原则。
Vaughn去年在一篇关于响应式领域驱动设计(DDD)的文章中谈论了关于Actor模型的话题,并且在之前的一次演讲中谈论了Actor Model的产生以及DDD的相关话题。
在.NET中实现Actor模型的不同方式的更多相关文章
- Java中的线程模型及实现方式
概念: 线程是一个程序内部的顺序控制流 线程和进程的比较: 每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大. 线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和 ...
- springmvc中的视图模型的返回方式
way1:略过; way2:(神似way1)通过在方法的参数中添加一个Model类型的参数,,该参数由spring自动生成传入, 然后在方法内部使用addAttribute()方式添加模型数据, 最后 ...
- Actor模型原理
1.Actor模型 在使用Java进行并发编程时需要特别的关注锁和内存原子性等一系列线程问题,而Actor模型内部的状态由它自己维护即它内部数据只能由它自己修改(通过消息传递来进行状态修改),所以使用 ...
- Actor模型及原理
1.Actor模型 在使用Java进行并发编程时需要特别的关注锁和内存原子性等一系列线程问题,而Actor模型内部的状态由它自己维护即它内部数据只能由它自己修改(通过消息传递来进行状态修改),所以使用 ...
- 【Akka】Actor模型探索
Akka是什么 Akka就是为了改变编写高容错性和强可扩展性的并发程序而生的.通过使用Actor模型我们提升了抽象级别,为构建正确的可扩展并发应用提供了一个更好的平台.在容错性方面我们採取了" ...
- akka设计模式系列(Actor模型)
谈到Akka就必须介绍Actor并发模型,而谈到Actor就必须看一篇叫做<A Universal Modular Actor Formalism for Artificial Intellig ...
- 基于Actor模型的CQRS、ES解决方案分享
开场白 大家晚上好,我是郑承良,跟大家分享的话题是<基于Actor模型的CQRS/ES解决方案分享>,最近一段时间我一直是这个话题的学习者.追随者,这个话题目前生产环境落地的资料少一些,分 ...
- 高系统的分布性有状态的中间层Actor模型
写在前面 https://www.cnblogs.com/gengzhe/p/ray_actor.html Orleans是基于Actor模型思想的.NET领域的框架,它提供了一种直接而简单的方法来构 ...
- Actor模型的状态(State)+行为(Behavior)+邮箱(Mailbox)
状态(State)+行为(Behavior)+邮箱(Mailbox) 基于Actor模型的CQRS.ES解决方案分享 开场白 大家晚上好,我是郑承良,跟大家分享的话题是<基于Actor模型的CQ ...
随机推荐
- Es+kafka搭建日志存储查询系统(设计)
现在使用的比较常用的日志分析系统有Splunk和Elk,Splunk功能齐全,处理能力强,但是是商用项目,而且收费高.Elk则是Splunk项目的一个开源实现,Elk是ElasticSearch(Es ...
- cocos2dx 3.x 拼图小游戏
.h #define IMAGE_MAX 2 //图片的个数.. //图片结构体 属性 struct IMAGE_DATA { cocos2d::Sprite *m_pImage; bool m_bO ...
- oracle定时器job的使用
对于DBA来说,数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作.但是,Oracle定时器Job时间的处理 ...
- 20155201 实验四《Java面向对象程序设计》实验报告
20155201 实验四<Java面向对象程序设计>实验报告 一.实验内容 1.基于Android Studio开发简单的Android应用并部署测试; 2.了解Android.组件.布局 ...
- FZU 1901 Period II(KMP中的next)题解
题意:给你一串字符串,问你前后缀相同情况有几种,并输出后缀位置(?这里一直没看懂length是什么,但是这样理解答案也对,然后还要加上本身长度) 思路:这里好好讲讲next的用法.我们都知道next代 ...
- noip2017普及 兔纸游玩记
初中的最后一场比赛...就这样结束了吧...QAQ时间...真够快的qwq 应该是初中的最后一篇游记了吧,尽量写多点... 这是一篇,初三 老年菜兔的 noip2017 普及游玩记吧! DAY 0 ...
- SDN原理 控制层 Controller控制器
本文参照SDN原理视频而成:SDN原理 Controller 概念 从上面这个图片,我们能够知道,Controller 是一个非常重要的东西:承上启下,左右拓展. 从整个SDN的架构来看,控制器 处在 ...
- 七步精通Python机器学习--转载
作者简介: Matthew Mayo 翻译:王鹏宇 开始.这是最容易令人丧失斗志的两个字.迈出第一步通常最艰难.当可以选择的方向太多时,就更让人两腿发软了. 从哪里开始? 本文旨在通过七个步骤, ...
- SRM 585 DIV2
250pt: 一水... 500pt:题意: 给你一颗满二叉树的高度,然后找出出最少的不想交的路径并且该路径每个节点只经过一次. 思路:观察题目中给的图就会发现,其实每形成一个 就会存在一条路径. 我 ...
- GetLastError()数字_转换为_文字
1.具体参数 可参看 http://blog.csdn.net/hongweigg/article/details/6821536 或 其它文章 或 MSDN 2.VC6 测试代码: #include ...