写点什么

在.NET 中实现 Actor 模型的不同方式

  • 2014-08-22
  • 本文字数:1191 字

    阅读完需:约 4 分钟

上周,《实现领域驱动设计》(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 Model Implementations Differ in Approach

2014-08-22 03:383495
用户头像

发布了 428 篇内容, 共 192.0 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

被面试官问懵:TCP 四次挥手收到乱序的 FIN 包会如何处理?

华为云开发者联盟

TCP 网络 报文 挥手 FIN

Tapdata Real Time DaaS 技术详解 PART I :实时数据同步

tapdata

读了这篇SpringBoot底层原理让我在阿里成功涨薪40%,感谢

Java 编程 面试 涨薪 阿里

前端技术概览

数据库 大数据 时序数据库 tsdb 数据智能

大公司运维监控怎么做?从哪些方面考虑?

行云管家

云计算 运维 运维监控 运维审计 数据监控

会员业务基于Cloud KMS的数据安全应用

爱奇艺技术产品团队

数据安全法 Cloud KMS

如何给技术部员工做考核?

石云升

团队管理 管理 引航计划 内容合集 9月日更

想要入职阿里P6?最少啃完这本500页Java并发多线程源码笔记

Java 编程 面试 多线程 阿里

开源应用中心|动手自建一个超高度自由的个人知识库,原来这么容易!

开源

Chrome前端调试技巧分享

华为云数据库小助手

大前端 调试 GaussDB 华为云数据库

让 Serverless 应用开发更简单,Serverless Devs 2.0 全新发布

Serverless Devs

开源 Serverless

阿里官方保姆级Java技术图谱发布!够学到春节了,赶紧收藏!

Java 面试 阿里 大厂 金九银十

"云智一体"全场景智能视频技术与应用解析白皮书下载申请

百度开发者中心

白皮书 云智一体 智能视频

MESI缓存一致性协议

Java 架构 面试 后端

浪潮云洲发布标识解析数据网关产品

工业互联网

iOS 屏幕旋转的实践解析

ZEGO即构

ios 音视频 屏幕旋转

了解JDBC层之QueryDSL

邱学喆

QueryDSL SQLQueryFactory

守护油田安全,EMQ X 在石油石化危化品监测管理中的应用

EMQ映云科技

物联网平台 物联网 IoT 边云协同 emq

亚信科技AntDB数据库国产化进程加速,计费上云再下一城

亚信AntDB数据库

实践案例 9月日更

交易所刷量机器人定制开发案例(源码搭建)

量化系统19942438797

交易所 做市机器人 自动刷量机器人

首场“说透数字化转型专题讲座”将于 9 月 15 日在天津举办

InfoQ 天津

App 不想被“点名”,mPaaS 隐私合规检测为开发者护航数字生态建设

蚂蚁集团移动开发平台 mPaaS

移动开发 mPaaS 监管合规 隐私安全

【墨天轮专访第四期】华为云GaussDB苏光牛:发挥生态优势,培养应用型DBA

墨天轮

数据库 华为云 GaussDB

阿里后端优化这么恐怖?看完这20W字Java性能实战经验手册,最少P7

Java 阿里巴巴 面试 性能调优 金九银十

京东云金秋上云特惠进行中!扫码参与活动

京东科技开发者

云计算 云主机 大促

联想新IT引擎引领智能化变革,助力“中国力量”更加强大

科技范儿

面对面小程序开源

OpenIM

一周信创舆情观察(8.30~9.5)

统小信uos

百度智能云开物工业互联网平台解决方案亮相2021服贸会成果发布会

百度大脑

人工智能 服贸会

Elasticsearch 原理解析(介绍)

ZzC🍖

搜索引擎 elasticsearch

数据脱敏是什么意思?有什么好处?

行云管家

数据库 数据安全 数据脱敏 数据库安全

在.NET中实现Actor模型的不同方式_.NET_Jan Stenberg_InfoQ精选文章