福利
奥尔良的主要好处是︰开发人员工作效率,甚至为非专家程序员;和默认的透明可伸缩性与程序员没有特别努力。我们扩大每个下面这些好处。
开发人员的生产力
奥尔良的编程模型通过提供以下关键的抽象、 担保和系统服务引发的专家和非专家程序员的生产力。
- 熟悉面向对象编程 (OOP) 范式。行为者实施的.NET 类声明.NET 演员接口使用异步方法。因此演员这似乎对程序员来说是可以直接调用其方法的远程对象。这为程序员提供了熟悉的面向对象范式的转成消息的方法调用,将它们路由到正确的终结点,调用目标演员方法处理失败和角情况下,在完全透明的方式。
- 单线程执行的行动者。运行时保证,演员从来没有超过一个线程上执行一次。再加上从其他行动者隔离,程序员永远不会面临并发演员一级,因此永远不会需要使用锁或其他同步机制来控制对共享数据的访问。这一功能使分布式应用程序开发为非专家程序员温顺。
- 透明激活。运行时激活演员作为需要只有当它处理的消息。这干净地分离创建引用到的演员,是可见并由应用程序代码和演员在内存中,这是对应用程序透明的物理活化控制的概念。在许多方面,这是类似于虚拟内存,因为它决定什么时候"页出"(停用) 或"页面中"(激活) 的演员;应用程序具有不间断的接触充分"内存空间"的逻辑创建行动者,无论他们是否在任何特定时刻的物理内存在时间。透明激活使动态、 自适应负载平衡通过放置和迁移的演员跨硬件资源池。此功能是传统角色模型,在哪个演员一生是应用程序管理有重大改善。
- 位置透明性。主角引用 (代理对象),程序员使用来调用演员的方法或传递给其他组件只包含逻辑的演员身份。翻译的这位演员的逻辑身份对其物理位置和相应路由的消息由奥尔良运行时透明地完成。应用程序代码进行通信与行动者没有注意到它们的物理位置,可能由于故障或资源管理时间的推移,或因为演员被停用时调用。
- 与持久存储区的透明集成。奥尔良允许演员的内存中状态到持久存储区的声明式映射。它将同步更新,以透明方式保证调用方接收结果的持久性状态已成功更新后才。延长和/或自定义现有持久性存储提供程序可用集是直截了当的。
- 错误的自动传播。运行库会自动传播与异步和分布式的 try-catch 语义调用链中向上的未处理的错误。因此,错误不会丢失在应用程序中。这允许程序员把错误处理逻辑在适当的地方,没有手动传播错误的每个级别的繁琐工作。
默认情况下的透明可扩展性
奥尔良的编程模型被为了指导程序员下来路径有可能成功地扩展他们的应用程序或服务通过几个数量级。这是通过结合行之有效的最佳做法和模式,并提供较低的能级系统功能有效地执行。这里有几个关键因素,使可伸缩性和性能。
- 隐式细晶粒分区的应用程序状态。通过使用直接寻址的实体作为演员,程序员隐式分解及其应用程序的整体状态。虽然的奥尔良编程模型并没有规定如何大或小演员应当是,在大多数情况下它意义有相对大量的行动者 — — 数以百万计或更多 — — 与每个元素代表一个自然的实体的应用程序,如用户帐户、 采购订单等。演员被单独可寻址与抽象出来了由运行时其物理位置,奥尔良有极大的灵活性,在平衡负载和处理热点在透明和通用的方式,没有任何思想从应用程序开发人员。
- 自适应资源管理。与行动者关于他们交互由于位置透明性与其他演员现场制作没有假设,运行时可以管理和调整可用的硬件资源的分配在一个非常动态的方式使细粒决定按安置/迁移的演员跨计算群集中反应来加载和通信模式没有传入的请求。通过创建多个副本的一个特定的演员运行时可以提高吞吐量的演员如有必要,不需要更改任何应用程序代码。
- 复用通信。在奥尔良行为者逻辑终结点,而它们之间消息传递多路复用在一套固定的全部共物理连接 (TCP 套接字)。这允许运行时主机寻址的实体,与每位演员较低的操作系统开销非常大号 (百万)。此外,激活/取消激活的演员并不招致的注册注销一个物理端点,例如 TCP 端口或一个 HTTP URL,或甚至关闭 TCP 连接的成本。
- 高效调度。运行时安排跨与每个物理处理器核心线程的自定义线程池执行大量的单线程的演员。与演员代码写在非阻塞延续基于风格 (奥尔良编程模型要求) 应用程序的代码运行在一个非常有效的"合作"多线程的方式与没有争用。这可使系统达到较高的吞吐量和运行在 CPU 使用率很高 (达 90%以上) 与极大的稳定性。在系统和负载行为者的人数增长不会导致额外的线程或其他 OS 基元的事实帮助各个节点和整个系统的可扩展性。
- 显式异步。奥尔良编程模型使得导游程序员编写非阻塞异步代码与分布式应用程序显式异步性质。与异步消息传递、 高效调度相结合,这样,很大程度的分布式并行性和整体吞吐量无需显式使用多线程。
系统必备组件
奥尔良是一套的.NET 库。要使用奥尔良,需要.NET 框架4.5.1 或更高和Visual Studio 2015 或更高版本的副本。请注意,快递版本的 Visual Studio 不支持扩展包,但您可以通过直接添加引用 NuGet 程序包使用奥尔良。
在生产中,奥尔良需要持久存储。以下技术支持 (只需要其中之一)︰
- Azure -测试与Azure SDK 2.4-2.8
- SQL Server 2008 或更高
- 动物园管理员3.4.0 或更高
- MySQL 5.0 或更高
- 领事0.6.0 或更高
- DynamoDB - AWSSDK-亚马逊 3.1.5.3与测试
Nuget 程序包
自1.3.1 版奥尔良 NuGet 程序包
有 4 关键的 NuGet 程序包,您将需要在大多数情况下使用︰
微软奥尔良生成时间代码生成
PM> Install-Package Microsoft.Orleans.OrleansCodeGenerator.Build
建立粮食接口和执行项目的支持。将它添加到您的粮食接口和执行项目,使粮食引用和序列化程序的代码生成。 和包是过时和提供仅用于向后兼容性和迁移。Microsoft.Orleans.Templates.Interfaces
Microsoft.Orleans.Templates.Grains
微软奥尔良核心库
PM> Install-Package Microsoft.Orleans.Core
包含 Orleans.dll,定义大多数奥尔良公共类型和奥尔良客户端。引用它构建库和客户端应用程序使用奥尔良类型但不需要任何包含提供者。
微软奥尔良服务器库
PM> Install-Package Microsoft.Orleans.Server
包括一切您需要运行一个筒仓。
微软奥尔良客户端库
PM> Install-Package Microsoft.Orleans.Client
包括一切你需要的奥尔良客户端 (前端)。
附加的软件包
下列的软件包提供额外的功能。
供应商和扩展
微软奥尔良蔚蓝的实用程序
PM> Install-Package Microsoft.Orleans.OrleansAzureUtils
包含基于 Azure 表群集成员资格提供程序,简化的筒仓和 Azure 工人/Web 角色、 持久性提供程序 Azure 表和 Azure Blob 和 Azure 队列流供应商中的客户端实例化的包装类。
微软奥尔良 Sql 实用程序
PM> Install-Package Microsoft.Orleans.OrleansSqlUtils
包含基于 SQL 群集成员身份和持久性提供与 SQL Server、 MySQL、 PostgreSQL 和其他 SQL 数据库一起使用。
微软奥尔良提供商
PM> Install-Package Microsoft.Orleans.OrleansProviders
包含一组内置的持久性和流服务供应商。包括在 Microsoft.Orleans.Client 和 Microsoft.Orleans.Server。
微软奥尔良 ServiceBus 实用程序
PM> Install-Package Microsoft.Orleans.OrleansServiceBus
包括流提供商 Azure 事件集线器。
微软奥尔良领事实用程序
PM> Install-Package Microsoft.Orleans.OrleansConsulUtils
包括用于存储群集成员资格数据使用领事的插件。
微软奥尔良饲养员实用程序
PM> Install-Package Microsoft.Orleans.OrleansZooKeeperUtils
包括用于存储群集成员资格数据使用 ZooKeeper 的插件。
微软奥尔良遥测消费者-性能计数器
PM> Install-Package Microsoft.Orleans.OrleansTelemetryConsumers.AI
Windows 性能计数器的奥尔良遥测 API 执行的情况。
微软奥尔良遥测消费者-Azure 应用程序的见解
PM> Install-Package Microsoft.Orleans.OrleansTelemetryConsumers.AI
包括遥测消费者对 Azure 应用程序的见解。
微软奥尔良遥测消费者-NewRelic
PM> Install-Package Microsoft.Orleans.OrleansTelemetryConsumers.NewRelic
包括为 NewRelic 遥测消费者。
微软奥尔良债券序列化程序
PM> Install-Package Microsoft.Orleans.Serialization.Bond
包括对债券的序列化程序的支持。
主办和测试
微软奥尔良运行时
PM> Install-Package Microsoft.Orleans.OrleansRuntime
核心运行时库的 Microsoft 奥尔良承载并执行谷物筒仓内。
微软奥尔良筒仓主机
PM> Install-Package Microsoft.Orleans.OrleansHost
包括默认筒仓主机-OrleansHost.exe。可以用于在内部部署或作为一个进程外筒仓主机在 Azure 工作者角色。包含在 Microsoft.Orleans.Server 中。
微软奥尔良服务结构支持
PM> Install-Package Microsoft.Orleans.ServiceFabric
主办微软奥尔良服务织物上的支持。
微软奥尔良测试主机图书馆
PM> Install-Package Microsoft.Orleans.TestingHost
包括用于承载筒仓在测试项目库。
微软奥尔良代码生成
PM> Install-Package Microsoft.Orleans.OrleansCodeGenerator
包括运行的时代码生成器。包括在 Microsoft.Orleans.Server 和 Microsoft.Orleans.Client。
工具
微软奥尔良性能计数器工具
PM> Install-Package Microsoft.Orleans.CounterControl
包括 OrleansCounterControl.exe,注册 Windows 性能计数器类别,奥尔良统计,并为部署的粮食类。需要提升权限。可以在 Azure 作为角色启动任务的一部分执行。包含在 Microsoft.Orleans.Server 中。
微软奥尔良管理工具
PM> Install-Package Microsoft.Orleans.OrleansManager
包括奥尔良管理工具-OrleansManager.exe。