orleans/Documentation
福利
奥尔良的主要好处是︰开发人员工作效率,甚至为非专家程序员;和默认的透明可伸缩性与程序员没有特别努力。我们扩大每个下面这些好处。
开发人员的生产力
奥尔良的编程模型通过提供以下关键的抽象、 担保和系统服务引发的专家和非专家程序员的生产力。
- 熟悉面向对象编程 (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.InterfacesMicrosoft.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。
orleans/Documentation的更多相关文章
- github.com/dotnet/orleans
Orleans is a framework that provides a straight-forward approach to building distributed high-scale ...
- Orleans框架简单示范
希望现在学习Orleans不会晚,毕竟Server Fabric都开源了.本篇博客从Sample的HelloWorld示例程序来解读Orleans的Grains. Server配置参考 : https ...
- Orleans学习总结(三)--持久化篇
经过上篇Orleans学习总结(二)--创建工程的介绍,我们的工程已经跑起来了,下面我们来介绍下持久化相关. 关于持久化的文档地址在这http://dotnet.github.io/orleans/D ...
- Orleans框架------基于Actor模型生成分布式Id
一.Actor简介 actor模型是一种并行计算的数学模型. 响应于收到的消息,演员可以:做出决定,创建更多Actor,发送更多消息,并确定如何响应接收到的下一条消息. 演员可以修改自己的状态,但只能 ...
- Orleans的入门教程
Orleans的入门教程 官方Hello World 地址 https://github.com/dotnet/orleans/tree/master/Samples/2.0/HelloWorld ...
- .net core 微服务通讯组件Orleans的使用与配置
Orleans非常好用 并且支持.net core 社区也非常活跃 Orleans2.0+在国内的教程偏少 多数是1.5版本的教程 在这里写上四篇Orleans教程 目录 1.Orleans的入门教程 ...
- Orleans 文档记录
Orleans 官方文档:官方文档 http://dotnet.github.io/orleans/index.html Orleans 中文文档:中文文档 https://orleanscn.git ...
- Orleans 框架3.0 官方文档中文版系列一 —— 概述
关于这个翻译文档的一些说明: 之前逛博客园的时候,看见有个园友在自己的博客上介绍Orleans. 觉得Orleans 是个好东西. 当时心想:如果后面有业务需要的时候可以用用Orleans框架. 当真 ...
- Orleans2.0正式版发布
2.0版本支持.net core. Orleans是一个微软研究创建的用于大规模分布式计算的框架,使用者不需要学习和应用复杂的并发或其他缩放模式. 根据我几个项目的使用经验来说,Orleans虽然有应 ...
随机推荐
- 可在广域网部署运行的QQ高仿版 -- GG叽叽V3.4,增加系统设置、最近联系人、群功能(源码)
自从上次版本(GG叽叽V3.2,增加离线消息.离线文件功能)发布后,我个人觉得主要的大功能都实现得差不多了,接下来的几个版本将不断优化GG的细节,提高其可用性.这次版本更新的内容主要是为GG增加了系统 ...
- 可在广域网部署运行的QQ高仿版 -- GG叽叽(源码)
前段时间看到园子里有朋友开发了QQ高仿版的程序,我也非常有兴趣,以前一直有个做即时聊天程序的梦,趁这段时间工作不是很忙,就开始动手来做这个事情.根据我以往积累下来的项目经验,实现QQ的基本功能,问题应 ...
- Intel VT-x 基本概念
看IaaS 资料时,捎带研究下硬件虚拟化,主要参考<基于intel VT-x 的Xen 全虚拟化实现>,<intel 开发手册 第三卷 19/20章> Intel VT 是in ...
- Java虚拟机1:什么是Java
前言 让我们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/: 97%的企业桌面运行Java 美国有89%的桌面(或计算机)运行Java 全球有900万J ...
- mvvm的优势
之前在项目中有个功能,是根据数据模型生成页面,然后页面变动之后,再同步到数据模型之中. 当时用的jquery写的,一点一点的控制,整个功能写下来.测试,花了很长时间,而且还担心出bug. 现在用mvv ...
- Programming Entity Framework CodeFirst -- 约定和属性配置
以下是EF中Data Annotation和 Fluenlt API的不同属性约定的对照. Length Data Annotation MinLength(nn) MaxLength(nn) ...
- angularjs移除不必要的$watch
在我们的web page,特别是移动设备上,太多的angular $watch将可能导致性能问题.这篇文章将解释如何去移除额外的$watch提高你的应用程序性能. $watch如果不再使用,我们最好将 ...
- Sqlserver 如何获取每组中的第一条记录
在日常生活方面,我们经常需要记录一些操作,类似于日志的操作,最后的记录才是有效数据,而且可能它们属于不同的方面.功能下面,从数据库的术语来说,就是查找出每组中的一条数据. 例子 我们要从上面获得的有效 ...
- java Decompiler的bug
java Decompiler 有一个明显的bug是, 之前的打开jar文件,会被缓存起来,如果再次打开同名jar文件(jar内容替换~!),会导致仍然显示原来内容! . 必须关闭Decompiler ...
- Model模型和Module模块的区别
资料是从网上找的,具体是谁最先写的,不清楚了. Model通常是指模型.这个模型也许是你需求分析出来的, 也许是你算法做出来的. 不过最大可能是MVC的网站,或者是GUI开发模式中的M里的那个模型. ...