Orleans 介绍

前面根据 Orleans 框架创建了一个基础示例,今天结合 Orleans 文档做一个整体介绍。

Actor Model

在开始之前,我们简单介绍下 Actor Model 概念,Actor Model 的原理:所有的对象皆是 Actor,每个 Actor 之间通过消息进行通信,所有的操作都是异步的,从而使整个系统获得大规模的并发能力。

计算机科学中的 Actor Model 是解决并发的数学模型,将 "Actor" 视为解决并发的通用原语。 为了响应它收到的消息,Actor 可以做出本地决策,创建更多 Actor,发送更多消息,并确定如何响应收到的下一条消息。 Actor 可以修改自己的私有状态,但只能通过消息相互影响(避免需要任何锁)。

在设计分布式和高并发系统时,Actor Model 被广泛应用。而且,一些框架提出抽象 Actor Model原理。Orleans 就是这种框架。还是更高级别的抽象。

Actor 是应用程序的基本构建模块,是唯一的封闭(隔离)单元。Orleans 框架 Actor 实现是由 Grains 来完成,Grains 它是一个虚拟 Actor,所以 Virtual Acotr Model 是 Orleans 的核心。接下来我们来了解 Orleans 的 Grains。

Grains

Grains 是创建 Orleans 应用程序的最小单元。由 identity(身份/标识)、behavior(行为)、state(状态)组成。

Orleans 会根据需要自行实例化或管理 Grains 对象。会将长期不使用的 Grains 对象从内存中释放。当 Grain 出现异常时会自动恢复。Orleans 会自动管理 Grain 的整个生命周期,使得开发人员可以专注业务开发中。

Grains 是 Orleans 构建可靠、可伸缩、高性能分布式系统的关键因素。Grains 如何在服务器集群或进程中运行?为了运行(或激活) Grains 引入了 Silos 。

Silos

Silos 是托管和执行 Grains 的容器。Orleans 通过 Silos 创建和管理 Grains 对象,并且执行 Grains 对象,客户端仅通过 Grains 定义的接口去调用。从而将 Grains 的对象状态封装起来,只公开 Grains 声明的接口方法。

Clients(客户端)

客户端又称 Grains 客户端,即调用 Grains 程序代码。客户端分为两种:一种与 Silos 存在相同进程中,即共同托管的客户端;另外一种是运行 Silos 外的进程中,即外部客户端。

1、共同托管客户端

客户端与 silos 是在同一个进程中,客户端可以从宿主应用的依赖注入窗口中获取,这样客户端可以直接与 Silos 进行通信,还能利用 Silos 集群额外的好处。

共同托管客户端有几个好处:

1)减少网络和 CPU 的开销及延迟

2)利用 Silos 集群的扩扑,不需要单独的网关

3)避免网络跳跃和序列化/反序列化,提高性能、吞吐量和可靠性

4)简化部署和应用程序拓扑

除了以上带来的优势,也有一些不的好缺点;

1)Grain 代码与客户端耦合度就提高,Grain 将不再是封闭(即隔离性)

2)导致 IO 阻塞或线程饥饿的锁竞争,会影响到 Grain 代码中的性能

3)客户端代码与 Grain 代码在同一处理器上执行,会给 CPU 缓存带来额外的压力,会增加本地资源的竞争

4)监控客户端代码和 Grain 代码上的问题会变得更加困难

共同托管客户端虽然会带来一些问题,但这也是一种流行的选择。因为很多应用程序都推荐这种做法。上述所说的一些缺点在实践中只是一小部分。而且,客户端的代码通常很少,它所需要分担的成本很小。能够影响的性能有限。运用一些 CPU 分析和调试器工具可以有效地识别问题根源。

2、外部客户端

外部客户端代码运行在 Orleans 集群之外的,因此,通过连接器或管理连接 所有 Grain 的集群和应用程序。

通常,外部客户端指的是 Web 前端,Web 前端主要通过 Orleans 集群作为中间件来连接 Grains 执行业务逻辑。 Web 前端服务器接收网络请求,并进行身份验证和授权验证来决定哪些 Grain 可以请求。 Web 前端服务器调用一个或多个 Grain 声明的接口方法,并将 Grain 处理的结果返回给Web 前端并响应。

本文主要是对 Orleans 一个简述,主要来源于 Orleans 文档介绍并结合基础示例的学习和记录。Orleans 还提供很多特性,如:持久化、Timers(定时器) & Reminders、Streams、分布式 ACID 事务、Event Sourcing 等。具体运用,后面跟大家一起学习和分享。

最后,祝大家学习愉快!

Orleans 项目基本上被认为是并行计算模型 Actor Model 的分布式版本。  虽然已经存在 Erlang 和 Akka 这样利用 Actor Model 的框架,用户仍然需要做很多工作来确保那些 actors 保持在线以及能够处理故障和恢复。Orleans 框架着眼复杂项目和 actor 管理,让用户能够编写分布式项目而无需担心。    关于自家的云计算平台,微软最大的一个卖点就是开发人员可以使用.NET、Visual Studio和其它编程工具来编写Azure应用程序。不过这并不是事情的全部,微软研究人员正在研发下一代云计算编程模式和相关工具,根据最新的资 料,Orleans就微软下一代云计算编程模式(之一)。    Orleans是一种新的编程模式,用来提升微软通用语言运行库(CLR)的抽象水平,它引入了“grains”的概念,这是一个可以在数据中心之 间迁移的计算和数据存储单元。Orleans自身还将提供很多运行时,包括Geo-Distribution、数据复制与一致行、性能监控、自适应控制、 运行时监控、分布式调试。    Orleans的宗旨就是为了创建一种既适用于客户端又适用于服务器的编程模式,简化代码调试,提高代码的可移植性。    目前已知的资料并没有任何关于Orleans开发计划的内容,Orleans也许还处在概念设计阶段,也许已经开始了初期的开发工作,这些都要耐心等待才会有答案。相关入门教程: http://www.rm5u.com/orleans/orleans-intro.html 标签:云计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值