介绍

Orleans是一个框架,它提供了一种简单的方法来构建分布式大规模计算应用程序,而无需学习和应用复杂的并发或其他扩展模式。

背景

云应用程序和服务本质上是并行和分布式的。它们也具有交互性和动态性;通常需要在云实体之间,近乎实时地直接交互。构建这样的应用程序,在今日已异常艰难。不仅开发过程需要专家级程序员,并且随着工作负载的增长,通常需要昂贵的设计和体系结构的迭代。

今天大多数大规模应用程序,都是作为无状态N层服务的组合而构建的,大多数应用程序逻辑都位于中间层。

虽然该模型允许通过向中间层添加更多服务器来扩展,但它受到存储层的性能和可扩展性的限制,因为从前端Web服务器进入中间层的大多数请求,需要从存储中读取一次或多次。由于中间层服务器之间缺乏协调,更新变得更加复杂,并且容易出现并发问题和冲突。它通常需要在无状态层中进行缓存,以获得可接受的性能。这样做既增加了复杂性,又引入了缓存一致性问题。无状态N层模型的另一个问题是,它不能很好地支持中间层暴露的各个应用程序实体之间的横向通信。

Orleans作为有状态的中间层

Orleans提供了一种构建有状态中间层的直观方式,中间层就像一个海洋,有各种业务逻辑实体,它们是分布在服务器集群(silos)中的、不同应用程序定义类型的、隔离的、全局可寻址的.NET对象(grains)。

grain类型是一个简单的.NET类,它实现了一个或多个应用程序定义的grain接口。单个grain是应用程序定义的Grain类的实例,它们可以根据需要由服务器上的Orleans运行时自动创建,以处理对这些grain的请求。grain本质上映射到大多数应用程序实体,例如用户、设备、会话、库存和订单。这使得构建面向对象的业务逻辑变得非常容易,而又能在服务器集群中透明地扩展。每个grain在其应用逻辑选择的grain类型内,具有稳定的逻辑标识(键),例如,用户电子邮件或设备ID或库存SKU代码。Orleans保证每个单独grain的单线程执行,从而保护应用程序逻辑免受并发和竞争的危险。在微服务领域,Orleans被用作实现微服务的框架,微服务可以由开发人员选择的微服务部署/管理解决方案,进行部署和管理。

grain的生命周期

grain在存储,内存状态或两者中都可以具有持久状态。通过使用目标grain的逻辑标识,任何其他grain或前端(客户端)都可以调用任何grain,而无需创建或实例化目标grain。Orleans的编程模型使得grain看起来就好像它们一直存在于内存中。实际上,grain在整个生命周期中仅经历:从存储中的持久状态,到内存中实例化,以及从内存中移除。

在幕后,Orleans运行时会在他们有工作负载的时候实例化(激活)grain,并在grain空闲时间过长时将其从内存中移除(停用)以回收硬件资源。运行时对grain的生命周期管理工作,于应用程序代码是透明的,并将其从分布式资源管理的复杂任务中解放出来。应用程序逻辑可以用它可用的整个“地址空间”来编写,而不需要硬件资源来同时将所有的grain保存在内存中,概念上类似于虚拟内存在操作系统中的工作方式。此外,grains的虚拟性质允许Orleans以对应用程序逻辑最透明的方式,来处理服务器故障,这是因为一旦检测到故障,在发生故障的服务器上执行的grains,将自动在集群中的其他服务器上重新实例化。

虚拟Actor

Orleans的实现基于自20世纪70年代以来一直存在的Actor模型。然而,与Erlang或Akka等更传统的Actor系统中的Actor不同,Orleans grain是虚拟Actor。最大的区别在于,grain的物理实例完全被抽象出来,并由Orleans运行时自动管理。虚拟角色模型更适合云服务等大规模动态工作负载,这是Orleans的主要创新。您可以在Orleans技术报告中详细信息。

Orleans的起源

Orleans是在Microsoft Research创建的,专为在云中使用而设计。自2011年以来,它已被多个微软产品组广泛应用于云端和内部,最着名的是游戏工作室,如343 Industries和The Coalition、作为Halo 4和5背后的云服务平台,还有战争机器4 ,以及其他一些公司。

Orleans于2015年1月开源,吸引了许多开发人员,他们构成了.NET生态系统中最具活力的开源社区之一。在开发人员社区与Microsoft Orleans团队之间的积极协作中,每天都会添加和改进功能。微软研究院继续与Orleans团队合作,推出新的主要功能,如地理分布,索引和分布式交易,这些都推动了最先进的技术发展。Orleans已经成为许多.NET开发人员构建分布式系统和云服务的首选框架。

Orleans 2.0 官方文档 —— 1.1 概览 - 介绍相关推荐

  1. Orleans 2.0 官方文档中文版 (闫辉)

    目录 第一章 概览 1.1 概览 -> 介绍 1.2 概览 -> 优点 1.3 概览 -> 常见问题 1.4 概览 -> Orleans 2.0 1.5 概览 -> Or ...

  2. Orleans 2.0 官方文档 —— 4.1 Grains - 开发一个Grain

    设置 在编写实现grain类的代码之前,请新建一个面向.NET Standard(首选).或.NET Framework 4.6.1或更高版本的类库项目(如果由于依赖性而无法使用.NET Standa ...

  3. Orleans 2.0 官方文档 —— 4.5 Grains - 观察者

    观察者 在某些情况下,简单的消息/响应模式是不够的,客户端需要接收异步通知.例如,用户可能希望在朋友发布新的即时消息时得到通知. 客户端的观察者是一种允许异步通知客户端的机制.观察者是从IGranob ...

  4. Orleans 2.0 官方文档 —— 6.8.4 部署 - 多集群支持 - silo的配置

    Orleans silo的配置 为了快速了解到概貌,我们将在下面的XML语法中,显示所有相关配置参数(包括可选配置参数): <?xml version="1.0" encod ...

  5. Orleans 2.0 官方文档 —— 开发一个Grain

    设置 在编写实现grain类的代码之前,请新建一个面向.NET Standard(首选).或.NET Framework 4.6.1或更高版本的类库项目(如果由于依赖性而无法使用.NET Standa ...

  6. Orleans 2.0 官方文档 —— 3.1 核心概念 - 什么是grain

    什么是grain? grain是Orleans编程模型的关键原语.grain是Orleans应用程序的构建块,它们是隔离的.分布式的.持久性的原子单元.grain是表示应用程序实体的对象.就像在经典的 ...

  7. Orleans 2.0 官方文档 —— 4.8.1 Grains - Grain持久化 - grain持久化的目标

    grain持久化的目标 允许不同的grain类型,使用不同类型的存储提供程序(例如,一个使用Azure表,一个使用ADO.NET),或相同类型的存储提供程序但具有不同的配置(例如,两者都使用Azure ...

  8. Orleans 2.0 官方文档 —— 4.4 Grains - 定时器和提醒器(Reminder)

    定时器和提醒器(Reminder) Orleans运行时提供了两种机制,称为定时器和提醒器,使开发人员能够指定grain的周期性行为. 计时器 定时器说明 定时器用于创建不需要跨越多个激活(grain ...

  9. Orleans 2.0 官方文档 —— 5.2 集群和客户端 - silo的生命周期

    silo的生命周期 概述 Orleans silo使用可观察的生命周期(参见Orleans Lifecycle),来有序地启动和关闭Orleans系统以及应用程序层组件. 阶段 Orleans Sil ...

最新文章

  1. mysql在线模拟器_力荐一款在线SQL模拟器
  2. C#可选参数、命名参数、参数数组
  3. java 一些常用的代码(转载)
  4. Hyperopt 入门指南
  5. Ubuntu设置宽带连接DSL
  6. 模拟器上安装不能被卸载的apk
  7. MongoDB日志文件过大
  8. 【Vue2.0】—mixin混入 (十五)
  9. 老单位领导直属领导有恩,新公司薪水给的高,怎么选?
  10. uniapp中获取元素页面信息的方法
  11. vivoy67Android7升级包,vivoy67刷机包
  12. 开发微信H5视频秀项目遇到的坑
  13. [基于Python的微信公众号后台开发:1]配置对接阿里云服务器
  14. EMOS邮件系统安装(光盘安装版)
  15. 计算机主机拆解图,电脑的主机结构是怎样的 电脑主机结构图【图文】
  16. 自然科学期刊能发表计算机论文吗,福建交通科技杂志发表论文能评职称吗
  17. win禁用shift切换输入法
  18. 如何搭建一个可以搜题的微信公众号?完整教程
  19. 通过STM32CubeMX实现LED闪烁——基于HAL库
  20. 狂神说Spring笔记(全网最全)

热门文章

  1. 策略迭代算法求解MDP实现 policy iteration algorithm (MDP之三)
  2. Learning FileMaker 学习FileMaker Lynda课程中文字幕
  3. Go学习之 GoLand-IDE安装并实现HelloWorld(附学生免费注册流程)【win10】
  4. vmware虚拟机打开ios镜像及vmdk镜像的方式
  5. 【2023考研】双非二本非科班一战上岸杭电经验帖
  6. 教你使用CAD如何绘制梅花鹿
  7. 【2021最新版】Redis面试题总结(50道题含答案解析)
  8. 计算机考试打字满分,计算机中考打字要打多少是满分?
  9. Maven项目配置Tomcat
  10. Windows XP系统下全新安装windows 7的方法