Orleans怎么理解

发布时间:2022-01-05 17:07:50 作者:柒染
来源:亿速云 阅读:160

Orleans怎么理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一、介绍

Orleans是一个框架,提供了一个直接的方法来构建分布式高规模计算应用程序

默认可扩展 -》 Orleans处理构建分布式系统的复杂性,使您的应用程序能够扩展到数百台服务器
低延迟 -》 Orleans允许你在内存中保持你需要的状态,所以你的应用程序可以快速响应传入的请求。
简化的并发性 -》 Orleans允许你编写简单的单线程C#代码,处理异步消息在对象(Grains)之间传递的并发性。

在Orleans,Grains是应用程序代码的基石。Grains是实现一致性接口的.net类的实例。接口的异步方法用于指示Grains可以执行哪些操作

public interface IMyGrain : IGrainWithStringKey
{
    Task<string> SayHello(string name);
}

这个实现是在Orleans框架内执行的:

public class MyGrain : IMyGrain

{

    public Task<string> SayHello(string name)

    {

        return Task.FromResult($"Hello {name}");

    }

}

然后你可以通过获取一个代理对象(一个Grains参考)来调用grain,然后调用这些方法:

var grain = GrainClient.GrainFactory.GetGrain<IMyGrain>("grain1");await grain.SayHello("World");

二、背景

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

当今大多数高规模的属性都是作为无状态n层服务的组合而构建的,其中大部分应用程序逻辑位于中间层。

Orleans怎么理解

虽然该模型允许通过向中间层添加更多服务器来扩展,但由于大多数来自前端Web服务器的中间层请求需要来自存储的一个或多个读取,所以受到存储层的性能和可伸缩性的限制, 更新更加复杂,并且由于中间层服务器之间缺乏协调而容易发生并发问题和冲突。 通常需要无状态层中的缓存来获得可接受的性能,增加复杂性并引入缓存一致性问题。 无状态n层模型的另一个问题是,它不支持中间层公开的各个应用实体之间良好的水平通信,这使得难以实现复杂的业务逻辑,多个实体执行单独的操作,作为处理 请求。

二、Orleans 作为一个有状态的中间层

Orleans提供了一种构建有状态中间层的直观方式,其中各种业务逻辑实体显示为分布在一组服务器中的不同应用程序定义类型的独立全局可寻址.NET对象(grains)。

Orleans怎么理解

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需要工作时,Orleans在后台实例化(激活)grain,当它们闲置太久时,将它们从内存中移除(停用)以回收硬件资源。运行时的grain生命周期管理工作对应用程序代码是透明的,将其从分布式资源管理的复杂任务中解放出来。应用程序逻辑可以用所有可用的“地址空间”来编写,而无需使用硬件资源来将所有的grain同时存储在内存中,这在概念上类似于虚拟内存在操作系统中的工作方式。此外,grain的虚拟属性允许Orleans处理服务器故障,这主要是透明地处理应用程序逻辑,因为在故障被检测到的情况下,在故障服务器上执行的grain会自动在集群中的其他服务器上重新实例化。

Orleans怎么理解

 四、虚拟Actors

Orleans的实施是基于20世纪70年代以来的Actor 模型。然而,与Erlang或Akka等传统Actor 系统中的Actor 不同,Orleans grain是虚拟Actor 。最大的不同是,grain的物理实例被完全抽象出来,并由Orleans运行时自动管理。虚拟Actor 模型更适合于像云服务这样的大规模动态工作负载,并且是Orleans的主要创新。

五、Orleans的起源

Orleans创建于微软研究院,设计用于云计算。自2011年以来,它已被广泛地应用在云计算和前提由几个微软产品组,尤其是通过游戏工作室,如343产业和光环背后的联盟作为云服务平台和战争机器4 4/5,以及许多其他公司。

Orleans在2015年1月是开源的,吸引了许多开发人员,他们形成了一个最活跃的开源社区。净生态系统。在开发人员社区和微软的Orleans团队之间的积极协作中,每天都会增加和改进特性。微软的研究继续与Orleans团队合作,以带来新的主要特征,如地理分布、索引和分布式事务,这正在推动艺术的发展。对许多人来说,Orleans已经成为构建分布式系统和云服务的首选框架。网络开发者。

六、优点

Orleans的主要优点是:开发人员的生产力,即使是非专业的程序员;在默认情况下,透明的可伸缩性(轻松实现伸缩)。我们将在下面扩展这些优点。

1,开发人员生产力

Orleans编程模型通过提供以下关键抽象,保证和系统服务,提高了专家和非专业程序员的工作效率。

2,默认的透明可伸缩性

Orleans编程模型旨在指导程序员通过几个数量级来扩展他们的应用程序或服务。这是通过结合已被证明的最佳实践和模式来完成的,并提供了较低级别系统功能的有效实现。下面是一些关键的因素,它们支持可伸缩性和性能。 

关于Orleans怎么理解问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. 如何理解
  2. 如何理解zigbee

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

orleans

上一篇:SanicDB工具怎么用

下一篇:Connection.java的源码是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》