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虽然有应 ...
随机推荐
- 人人都是 DBA(X)资源信息收集脚本汇编
什么?有个 SQL 执行了 8 秒! 哪里出了问题?臣妾不知道啊,得找 DBA 啊. DBA 人呢?离职了!!擦!!! 程序员在无处寻求帮助时,就得想办法自救,努力让自己变成 "伪 DBA& ...
- Python2.6下基于rsa的加密解密
生成公钥的私钥: # -*- coding: UTF-8 -*- import rsa import base64 (public_key, private_key) = rsa.newkeys(10 ...
- 渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(5)
前情回顾:昨天简单地介绍了一下如何使用vi编辑器,例如命令模式和插入模式的切换,以及一些简单命令的讲解. —————————————————————————直接就开始吧———————————————— ...
- FastUI快速界面原型制作工具
FastUI是一款快速制作应用程序界面原型的小工具,它之所以快,是因为它体积小巧.功能简洁实用. 在真正的应用程序(包括winform.手机app.网站等)开始编码之前,一般要先设计出原型,以便确认需 ...
- node.js调试
用了几天node.js感觉很新奇,但是调试问题实在是愁煞人,开始的时候懒的学习调试方法,看看异常内容就可以了,但随着代码复杂程度的上升,并不是所有错误都是语法错误了,不调试搞不定了,只好搜搜资料,学习 ...
- html5 postMessage解决跨域、跨窗口消息传递
一些麻烦事儿 平时做web开发的时候关于消息传递,除了客户端与服务器传值还有几个经常会遇到的问题 1.页面和其打开的新窗口的数据传递 2.多窗口之间消息传递 3.页面与嵌套的iframe消息传递 4. ...
- 大叔也说Xamarin~Android篇~为HttpClient共享Session,android与api的session共享机制
回到目录 杂谈 在进行android进行开发时,我们的数据一般通过接口来获收,这里指的接口泛指web api,webservice,wcf,web应用程序等:它们做为服务端与数据库进行直接通讯,而AP ...
- JavaScript模板引擎实例应用
在之前的一篇名为<移动端基于HTML模板和JSON数据的JavaScript交互>的文章中,我向大家说明了为什么要使用JavaScript模板以及如何使用,文末还提到了laytpl.art ...
- Searching for a valid kernel header path... The path "" is not a valid path to the ***** kernel headers. Would you like to change it? [yes]
在centos 6.5安装vmtools时候,解压包,mount挂载后,安装pl过程中报 这个问题,半天没有解决,google 后发现这样就行了 I installed the kernel-deve ...
- <C#>找出数组中重复次数最多的数值
给定一个int数组,里面存在重复的数值,如何找到重复次数最多的数值呢? 这是在某社区上有人提出的问题,我想到的解决方法是分组. 1.先对数组中的所有元素进行分组,那么,重复的数值肯定会被放到一组中: ...