Orleans MultiClient 多个Silo复合客户端
介绍
Orleans.MultiClient 是一个 Orleans 复合客户端,只需要简单配置就可以简单高效连接和请求 Orleans 服务。
Orleans.MultiClient 可以轻松连接多个不同服务的 Orleans 服务,在请求 Orleans 时会根据请求的接口自动寻找 Orleans 客户端,使用者无需关心底层的实现。
Orleans.MultiClient 的开源地址和 Demo 可以在 GitHub 源代码下载查看。
使用
从 NuGet 下载 Orleans.MultiClient 包。
dotnet add package Orleans.MultiClient
简单例子
如果有一个服务需要同时调用 A 和 B 两个 Orleans 服务,看一看 Orleans.MultiClient 是怎么更简单的调用 Orleans 服务的。
第一步:先引用 Orleans.MultiClient 包和 A、B 的接口,分别为 IHelloA、 IHelloB
第二步:需要把 Orleans.MultiClient 注入到 DI 容器 中,并且配置添加两个 Orleans Client。
提示:Orleans.MultiClient 暂时只支持 .NET Core 平台上面使用。
services.AddOrleansMultiClient(build =>
{
build.AddClient(opt =>
{
opt.ServiceId = "A";
opt.ClusterId = "AApp";
opt.SetServiceAssembly(typeof(IHelloA).Assembly);
opt.Configure = (b =>
{
b.UseLocalhostClustering();
});
});
build.AddClient(opt =>
{
opt.ServiceId = "B";
opt.ClusterId = "BApp";
opt.SetServiceAssembly(typeof(IHelloB).Assembly);
opt.Configure = (b =>
{
b.UseLocalhostClustering(gatewayPort: 30001);
});
});
});
第二步:开始调用对应的 Orleans 服务。
IOrleansClient 是 Orleans.MultiClient 的复合客户端,通过 IOrleansClient 调用 Orleans 服务。
// 调用 A 服务。
var serviceA = _serviceProvider.GetRequiredService<IOrleansClient>().GetGrain<IHelloA>(1);
var resultA = serviceA.SayHello("Hello World Success GrainA").GetAwaiter().GetResult();
// 调用 B 服务。
var serviceB = _serviceProvider.GetRequiredService<IOrleansClient>().GetGrain<IHelloB>(1);
var resultB = serviceB.SayHello("Hello World Success GrainB").GetAwaiter().GetResult();
简单吧,只要配置好客户端之后,在使用的过程中,无需管怎么连接 Orleans ,只要通过依赖注入得到 IOrleansClient 就可以轻松的请求 Orleans 服务。
配置
注入到 DI 容器
AddOrleansMultiClient :把 Orleans.MultiClient 注入到 DI 容器 中,使用时需要通过依赖注入得到 IOrleansClient 。
添加多个 Client
AddClient: 添加多个 Orleans 客户客户端,添加客户端时需要配置 Orleans 相关选项。 Orleans.MultiClient 提供了函数和 IConfiguration 两种方式进行配置。
使用 IConfiguration 进行配置时需要注意配置文件的内容必须是 IList<OrleansClientOptions> 类型的。
services.AddOrleansMultiClient(build =>
{
build.AddClient((OrleansClientOptions opt) =>{
...// OrleansClientOptions 配置
}
});
全局 Orleans 服务配置
Configure:如果所有的 Orleans 的连接配置是一样的情况下,可以配置全局的 Orleans 服务配置。
比如:如果所有的 Orleans Silo 都是通过 Consul 进行服务发现的,就可以配置一个全局配置。
services.AddOrleansMultiClient(build =>{
build.Configure(b =>{
b.UseConsulClustering(o =>{
o.Address = new Uri("https://127.0.0.1:8500");
});
});
}
OrleansClientOptions 配置
ServiceList:用于在IOrleansClient调用接口时和 Orleans 连接配置建立关联。ServiceList 的值时 Orleans Silo 接口的Assembly.FullName, 由于 Orleans Silo 可能有多个接口,所以 ServiceList 是一个数组集合。可以通过SetServiceAssembly方法来配置 ServiceList。ServiceId:Orleans Silo 的 ServiceId,在连接 Orleans 时需要。ClusterId:Orleans Silo 的 ClusterId,在连接 Orleans 时需要。Configure:Orleans 服务配置,如连接组件(Consul、Zookeeperr、等)。如果配置了全局 Orleans 服务配置这个选项可以不配置,但是这选项配置之后会覆盖上面的全局 Orleans 服务配置。
Orleans MultiClient 多个Silo复合客户端的更多相关文章
- Microsoft Orleans 之 入门指南
Microsoft Orleans 在.net用简单方法构建高并发.分布式的大型应用程序框架. 原文:http://dotnet.github.io/orleans/ 在线文档:http://dotn ...
- Microsoft Orleans构建高并发、分布式的大型应用程序框架
Microsoft Orleans 在.net用简单方法构建高并发.分布式的大型应用程序框架. 原文:http://dotnet.github.io/orleans/ 在线文档:http://dotn ...
- Orleans部署
一.配置指南 1,客户端配置 2,服务端配置 3,典型配置 4,配置.NET垃圾收集 5,SQL系统存储 二.监控 1,运行时监视 2,silo错误代码监测 3,客户端错误代码监测 三.解决部署问题 ...
- 【Orleans开胃菜系列2】连接Connect源码简易分析
[Orleans开胃菜系列2]连接Connect源码简易分析 /** * prism.js Github theme based on GitHub's theme. * @author Sam Cl ...
- Orleans安装
一.Nuget包Orleans NuGet软件包从v1.5.0开始在大多数情况下,您需要使用4个关键的NuGet包: 1,Microsoft Orleans Build-time Code Gener ...
- Microsoft Orleans 之 开发人员指南
开发一个Grain 在开发Grain之前请先阅读Grains 这篇文章 Grain 接口 Grains通过调用各自定义在接口中的方法相互作用,一个grain实现了事先定义好的一个或多个接口,grain ...
- Microsoft Orleans 之安装
先决条件 Orleans 是一个.net 类库集,为了使用它,你需要.net 4.5.1 或者更高版本,开发工具集需要visual studio 2015 或者更高版本或者其他支持的开发工具,不支持V ...
- Orleans 知多少 | 2. 核心概念一览
Orleans 术语解读 上面这张图中包含了Orleans中的几个核心概念: Grain Silo Orleans Cluster Orleans Client 从这张图,我们应该能理清他们之间的关系 ...
- Orleans 3.0 为我们带来了什么
原文:https://devblogs.microsoft.com/dotnet/orleans-3-0/ 作者:Reuben Bond,Orleans首席软件开发工程师 翻译:艾心 这是一篇来自Or ...
随机推荐
- CENTOS 配置好SVN服务环境后,其他服务器无法访问 Error: Can't connect to host '192.168.1.103': 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。
CENTOS 配置好SVN服务环境后,其他服务器无法访问 根据 下面的步骤配置好服务后,使用本机可以正常 连接到 SVN 服务, 但是使用局域网的其他服务器访问时出现下面的错误, Error: C ...
- Windows ---- mysql 5.7 配置安装
去官网下载mysql 下载地址 https://dev.mysql.com/downloads/mysql/ 根据自己操作系统位数选择相对应的版本 点击Download下载 下载下来后是一 ...
- IIS7日志中时间与系统时间不一致的原因
最近在分析web日志,发现IIS7日志中时间与系统时间不一致,即本该上班时间才产生的产并发访问日志,全部发生在凌晨至上班前. 本以为是系统时间设置错误,检查后一切正常.后查询资料,原来是这个原因: 日 ...
- ServiceStack.redis用法
using System; using System.Collections.Generic; using ServiceStack.Redis; namespace SysBuild { class ...
- Qt自定义插件编程小结
qt自定义组件开发步骤演示.以下所有步骤的前提是自己先编译Qtcreator源码,最好生成release版的QtCreator,否则自定义的插件嵌入QtCreator会失败!!!(这个网上教程很多) ...
- Greeplum 系列(二) 安装部署
Greeplum 系列(二) 安装部署 本章将介绍如何快速安装部署 Greenplum,以及 Greenplum 的一些常用命令及工具.本章不会涉及硬件选型.操作系统参数讲解.机器性能测试等高级内容, ...
- Smarty的条件判断语句
(1)基本句式{if $name eq "Fred"}Welcome Sir.{elseif $name eq "Wilma"}Welcome Ma'am.{e ...
- 查看ubuntu 14.04的网关和DNS
root@ubuntu:~# nm-tool NetworkManager Tool State: connected (global) - Device: eth0 [自动以太网] -------- ...
- Yii2 中国省市区三级联动
1.获取源码:https://github.com/chenkby/yii2-region 2.安装 添加到你的composer.json文件 "chenkby/yii2-region&qu ...
- 设计模式22:Strategy 策略模式(行为型模式)
Strategy 策略模式(行为型模式) 动机(Motivation) 在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂:而且有时候支持 ...