官网:http://dotnet.github.io/orleans/

文档:http://dotnet.github.io/orleans/What's-new-in-Orleans

源码:https://github.com/dotnet/orleans

来自官网的解释:

奥尔良是一个框架,提供一个简单的方法来构建分布式的高规模计算应用程序,而无需了解并应用复杂并发或其他伸缩模式。它是由微软研究院创建和设计在云计算中使用。

它是一种构建分布式、 高规模(伸缩)的应用程序,类似于Akka的Actor模型,建立在.NET之上的。

微软官方游戏:Halo4、Halo5(光环|光晕)的云服务全部由它来承载。

特性:

  1. 可扩展
  1. 低延迟
  1. 简化并发

大型网站架构的目标:

高性能:提供快速的访问体验。(并发处理能力)

高可用:网站服务一直可以正常访问。(ISP)

可伸缩:通过硬件增加/减少,提高/降低处理能力。

安全性:提供网站安全访问和数据加密,安全存储等策略。

扩展性:方便的通过新增/移除方式,增加/减少新的功能/模块。

敏捷性:随需应变,快速响应;

大型网站架构模式:

  • 分层:一般可分为,应用层,服务层,数据层,管理层,分析层;
  • 分割:一般按照业务/模块/功能特点进行划分,比如应用层分为首页,用户中心。
  • 分布式:将应用分开部署(比如多台物理机),通过远程调用协同工作。
  • 集群:一个应用/模块/功能部署多份(如:多台物理机),通过负载均衡共同提供对外访问。
  • 缓存:将数据放在距离应用或用户最近的位置,加快访问速度。
  • 异步:将同步的操作异步化。客户端发出请求,不等待服务端响应,等服务端处理完毕后,使用通知或轮询的方式告知请求方。一般指:请求——响应——通知 模式。
  • 冗余:增加副本,提高可用性,安全性,性能。
  • 安全:对已知问题有有效的解决方案,对未知/潜在问题建立发现和防御机制。
  • 自动化:将重复的,不需要人工参与的事情,通过工具的方式,使用机器完成。
  • 敏捷性:积极接受需求变更,快速响应业务发展需求。

传统的分层体系结构:

无状态的前端

无状态的中间层

存储层

这种结构在可伸缩性方面是有限制的,由于存储层在延迟和吞吐量方面的限制,这对于每个用户请求都有影响。通常解决方案是在中间层和存储层之间添加缓存层来提高性能。然而这种方式会存在缓存和存储池的不一致更新。为了防止不一致更行,应用程序或者缓存管理器需要实现并发控制。

Actor模型:

Akka的Actor平台在简化分布式系统编程方面是向前迈出了一步。然而,他们仍然负担与许多分布式系统的复杂性,因为开发人员面临相对低水平的抽象和系统服务。关键的挑战是开发管理Actor生命周期的代码,处理分布式竞争、处理故障和恢复Actor以及分布式资源管理等等都很复杂,因此,如果建立一个应用程序必须正确的解决这些问题,开发人员则必须是一个分布式系统专家(难度太大)。

为了避免这些复杂性,微软研究院建造了Orleans的编程模型

Orleans模型的特点:

  1. Orleans的Actor总是存在的,但是它不能被显式地创建或销毁。它的存在超越任何内存中任何实例的生命周期,超越了任何特定服务器的生命周期。
  1. Orleans Actor是自动实例化的:如果内存没有,就会自动创建。如果服务器中一台崩溃,原本发送给这台服务器的消息会被自动实例化到另一台服务器。

基于Orleans的应用部署图:

核心角色:

Grains(粮食,谷物)

Grains可以理解为一个服务,类似:UserService、AccountService,是主要的业务逻辑实现与抽象。

谷物是一个Orleans的应用程序的构建块,他们是孤立的原子单元,。一个典型的粮食封装了状态和行为的一个单一的实体。

Silos(筒仓)

Silos可以理为一台Server,里面主要用于存储Grains,也就是说Grains开发完成后需要注册到Silos中,然后等待调用。Silos可以通过构建一个Orleans集群协同工作。奥尔良运行时完全自动化管理集群。Silosj间共享存储。在任何时候,一个Silos可以通过注册加入集群。

支持的宿主

.NET Framework、Core CLR,也就是说可以进行跨平台部署。

Client(客户端)

具体的应用客户端,可以是控制台、Web应用程序(MVC——包含vNext、WebForms)、WindowService、WPF等一切.NET端技术。

安装Orleans

http://dotnet.github.io/orleans/Prerequisites

安装建议使用VS2013以上版本,.net4.5.1以上版本。

  1. 安装Microsoft      Orleans Tools for Visual Studio

源文档 <https://visualstudiogallery.msdn.microsoft.com/36903961-63bd-4eec-9ca4-cf2319dc75f4>

  1. 安装ETG.Orleans.Templates.VSIX

源文档 <https://visualstudiogallery.msdn.microsoft.com/b61c87e7-0655-4a6e-8e4f-84192950e08c>

  1. 有几个至关重要的package需要安装:

PM> Install-Package Microsoft.Orleans.Templates.Interfaces

      PM> Install-Package Microsoft.Orleans.Templates.Grains

     PM> Install-Package Microsoft.Orleans.Core

    PM> Install-Package Microsoft.Orleans.OrleansRuntime

      PM> Install-Package Microsoft.Orleans.Server

      PM> Install-Package Microsoft.Orleans.Client

还有其它的一些package,可参考:http://dotnet.github.io/orleans/NuGets

Orleans是什么 (一)的更多相关文章

  1. .NET的Actor模型:Orleans

    Orleans是微软推出的类似Scala Akka的Actor模型,Orleans是一个建立在.NET之上的,设计的目标是为了方便程序员开发需要大规模扩展的云服务, 可用于实现DDD+EventSou ...

  2. 一种基于Orleans的分布式Id生成方案

    基于Orleans的分布式Id生成方案,因Orleans的单实例.单线程模型,让这种实现变的简单,贴出一种实现,欢迎大家提出意见 public interface ISequenceNoGenerat ...

  3. ORLEANS REMOTE DEPLOYMENT

    Orleans Remote Deployment Table of Contents Overview: 1 Prerequisites. 2 Deployment Steps. 2 Orleans ...

  4. Microsoft Orleans 之 入门指南

    Microsoft Orleans 在.net用简单方法构建高并发.分布式的大型应用程序框架. 原文:http://dotnet.github.io/orleans/ 在线文档:http://dotn ...

  5. orleans/Documentation

    福利 奥尔良的主要好处是︰开发人员工作效率,甚至为非专家程序员;和默认的透明可伸缩性与程序员没有特别努力.我们扩大每个下面这些好处. 开发人员的生产力 奥尔良的编程模型通过提供以下关键的抽象. 担保和 ...

  6. github.com/dotnet/orleans

    Orleans is a framework that provides a straight-forward approach to building distributed high-scale ...

  7. 微软分布式云计算框架Orleans(1):Hello World

    自从写了RabbitHub框架系列后的一段时间内一直在思索更加轻量简便,分布式高并发的框架(RabbitHub学习成本较高),无意间在网上级联看到了很多新框架:从helios到Akka.NET在到Or ...

  8. 微软分布式云计算框架Orleans(2):容灾与集群(1)

    在上一篇:微软分布式云计算框架Orleans(1):Hello World,我们大概了解了Orleans如何运用,当然上一篇的例子可以说是简单且无效的,因为用了Orleans不可能只写一个Hello ...

  9. Orleans 高级特性-目录

    这里将介绍一些Orleans的高级特性,适合对Orleans已经有不少了解的用户,先列出一个索引,博客文章慢慢补充 1.使用Immutable 优化复制 2.自定义序列化 (待完成) 3.可重入 Gr ...

随机推荐

  1. Sublime多行编辑快捷键

    鼠标选中多行,按下 Ctrl Shift L (Command Shift L) 即可同时编辑这些行: 鼠标选中文本,反复按 CTRL D (Command D) 即可继续向下同时选中下一个相同的文本 ...

  2. HDU 5384 字典树、AC自动机

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=5384 用字典树.AC自动机两种做法都可以做 #include<stdio.h> #includ ...

  3. CDN技术发展趋势

    智能化 存储智能化 关键技术点:文件分片热度的判断策略,跨节点快速文件调度 存储向以文件切片为基础的全网共享存储发展:把一个整片切成n个小块,按用户访问热度分散存储在不同节点.当用户访问的时候,由边缘 ...

  4. 简单实现div遮罩

    顾名思义,div遮罩就是将网页上的一部分用div遮盖起来,防止用户误点,因此div遮罩的一个用途就是将table设置为不可编辑. 作者通过查找资料,并进行简单的测试,最终完成了以下几段简单代码,来实现 ...

  5. Unity手游之路<十一>资源打包Assetbundle

    http://blog.csdn.net/janeky/article/details/17652021 在手游的运营过程中,更新资源是比不可少的.资源管理第一步是资源打包.传统的打包可以将所有物件制 ...

  6. Android学习笔记(六)——活动的启动模式

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 活动的启动模式共有四种: standard.singleTop.singleTask 和 singleInst ...

  7. 在linux下安装Python:

    # 下载最新版本 cd /usr/local/src/ sudo wget http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.bz2 su ...

  8. Sqli-LABS通关笔录-14

    这一节让我学习到了 1.extractvalue函数(该函数用于对xml文件进行查询和修改,于此相关的还有一个叫“updatexml”函数) 语法:extractvalue(XML_document, ...

  9. spring mvc 传参数

    1.页面:(1)js传参数:location.href="${ctx }/forum/changeCtm.html?ctmId="+id; (2)将内容写在form表单里面,然后用 ...

  10. 网页嵌入swf代码

    <object class id="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://dow ...