2025 AI基础设施风向标,不看必后悔!#AI基础设施峰会 了解详情
写点什么

在.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:383332
用户头像

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

关注

评论

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

数字化时代,为什么解决信任问题是科技公司最重要的事情?

CECBC

深入C语言中数据的存储

小写丶H

字节跳动三面拿offer:网络+IO+redis+JVM+GC+红黑树+数据结构

Java 编程 程序员 架构 面试

网络攻防学习笔记 Day55

穿过生命散发芬芳

网络攻防 6月日更

6月GitHub上star涨得最多的repo盘点

北游学Java

GitHub

数字人民币双层运营架构下缘何衍生出2.5层?看完才明白,原来这么重要!

CECBC

阿里最新秋招面经,腾讯/美团/字节1千道Java中高级面试题

Java 编程 程序员 架构 面试

《Spring Framework 系列》- IOC

公众号:程序猿成神之路

ioc Spring Framework

dubbo 2.7应用级服务发现踩坑小记

捉虫大师

dubbo 服务发现

5W1H聊开源之Who和How——谁、如何参与开源?

禅道项目管理

开源 开源文化

性能利器Takin来了!首个生产环境全链路压测平台正式开源

TakinTalks稳定性社区

开源 高可用 性能测试 压力测试

Java 的函数式接口(必懂知识点!)

Java MySQL 程序员 面试

2021-06-25 从简书迁移来到InfoQ首文

林建

领导说PHP已经过时了,让我滚!!

网络安全学海

php 网络安全 信息安全 渗透测试 安全漏洞

Redis主从复制、Sentinel、集群总结

Hex

redis 后端 Redis 核心技术与实战

解密开源技术的污点

BeeWorks

奇亚矿机系统源码,Bzz节点分币系统搭建

iOS面试残篇-辟邪剑谱

程序员 面试 编程之路 移动开发 iOS 知识体系

社群编码识别黑灰产攻击实践

百度Geek说

CloudQuery 安全系列(一): Http 与 Https

BinTools图尔兹

数据库 网络安全 https 数据安全 数据库管理

未来法律科技发展现五大趋势,区块链、AI、大数据吸引资本目光

CECBC

解析 Nebula Graph 子图设计及实践

NebulaGraph

数据库 图数据库 子图

安卓工控主板显示接口有哪些呢?

双赞工控

安卓主板 工控主板 ARM开发主板

我的新书《C++服务器开发精髓》终于出版啦

张小方

c++ 网络编程 Linux服务器开发 C++后端开发 网路通信

41 位 Contributor 参与,1574 个 PR,不容错过的版本更新!

SphereEx

有没有字节工牌,Java并发安全的根本原因都得懂

慕枫技术笔记

Java 高并发

数仓备机DN重建:快速修复你的数仓DN单点故障

华为云开发者联盟

数据仓库 主机 华为云 备机 DN

多路三线RTD电阻温度采集电路设计方案

不脱发的程序猿

电路设计 硬件开发 RTD电阻 温度采集电路

Windows 11 这项亮点功能源自英特尔Bridge技术支持

E科讯

5G时代,视频会议的未来

anyRTC开发者

音视频 WebRTC 视频会议

Github自爆:阿里内部SpringBoot学习笔记,学完直接进大厂

Java架构师迁哥

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