Orleans 应用程序

典型的 Orleans 应用程序由服务器进程 (silo) 群集(grain 驻留在其中)和一组客户端进程(通常是 Web 服务器,它们接收外部请求,将请求转换为 grain 方法调用并返回结果)组成。 因此,要运行 Orleans 应用程序,首先需要启动 silo 群集。 对于测试,群集可以由一个 silo 组成。 要进行可靠的生产部署,需要在群集中包含多个 silo 以实现容错和缩放。

群集运行后,我们可以启动一个或多个连接到群集的客户端进程,并可以向 grain 发送请求。 客户端连接到 silo 上的特殊 TCP 终结点 - 网关。 默认情况下,群集中的每个 silo 都启用了客户端网关。 因此,客户端可以并行连接到所有 silo,以获得更好的性能和复原能力。

配置和启动 silo

通过 ClusterConfiguration 对象以编程方式配置 silo。 可以直接实例化和填充 silo,从文件加载其设置,或使用适用于不同部署环境的多种帮助器方法创建 silo。 对于本地测试,最简单的方法是使用 LocalhostPrimarySilo 帮助器方法。 然后将配置对象传递给 SiloHost 类的新实例,接着可以初始化和启动该实例。

可以创建一个面向 .NET Framework 4.6.1 或更高版本的空控制台应用程序项目用于托管 silo。 向项目添加 Microsoft.Orleans.Server NuGet 元包。

Install-Package Microsoft.Orleans.Server

下面是如何启动本地 silo 的示例:

var siloConfig = ClusterConfiguration.LocalhostPrimarySilo();
var silo = new SiloHost("Test Silo", siloConfig);
silo.InitializeOrleansSilo();
silo.StartOrleansSilo();

Console.WriteLine("Press Enter to close.");
// wait here
Console.ReadLine();

// shut the silo down after we are done.
silo.ShutdownOrleansSilo();

配置并连接到客户端

通过 ClientConfiguration 对象和 ClientBuilder 以编程方式配置用于连接到 silo 群集并向 grain 发送请求的客户端。 可以直接实例化和填充 ClientConfiguration 对象,从文件加载其设置,或使用适用于不同部署环境的多种帮助器方法创建该对象。 对于本地测试,最简单的方法是使用 LocalhostSilo 帮助器方法。 然后将配置对象传递给 ClientBuilder 类的新实例。

ClientBuilder 公开其他用于配置附加客户端功能的方法。 然后调用 ClientBuilder 对象的 ClientBuilder.Build() 方法以获取 IClusterClient 接口的实现。 最后,调用返回的对象上的 IClusterClient.Connect() 方法以连接到群集。

可以创建一个面向 .NET Framework 4.6.1 或更高版本的空控制台应用程序项目来运行客户端,或者重新使用你创建的用于托管 silo 的控制台应用程序项目。 向项目添加 Microsoft.Orleans.Client NuGet 元包。

Install-Package Microsoft.Orleans.Client

下面是客户端如何连接到本地 silo 的示例:

var config = ClientConfiguration.LocalhostSilo();
var builder = new ClientBuilder().UseConfiguration(config).
var client = builder.Build();
await client.Connect();

生产配置

此处使用的配置示例用于测试 localhost 所在的同一台计算机上运行的 silo 和客户端。 在生产环境中,silo 和客户端通常在不同的服务器上运行,并配置了可靠的群集配置选项之一。 可以在配置指南群集管理的介绍中找到更多相关信息。

后续步骤