Orleans 2.0官方文档(闫辉的个人翻译)——1 介绍

介绍

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的生命周期管理工作,于应用程序代码是透明的,并将其从分布式资源管理的复杂任务中解放出来。应用程序逻辑可以用它可用的整个“地址空间”来编写,而不需要硬件资源来同时将所有的粒度保存在内存中,概念上类似于虚拟内存在操作系统中的工作方式。此外,grains的虚拟性质允许Orleans以对应用程序逻辑最透明的方式处理服务器故障,这是因为一旦检测到故障,在发生故障的服务器上执行的grains 将自动在集群中的其他服务器上重新实例化。

虚拟Actor

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

Orleans的起源

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

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

猜你喜欢

转载自blog.csdn.net/uddiqpl/article/details/85816702