Orlens入门概念(4)Orleans 服务进程Silo
Orleans 应用程序
正如前面的主题所述,典型的Orleans
应用程序由一组服务器进程(孤岛)组成,其中包含Grain
live和一组客户端进程(通常是web服务器),它们接收外部请求,将它们转换为Grain
方法调用并返回结果。因此,运行Orleans
应用程序需要做的第一件事就是启动一个群集Silo
。出于测试目的,群集可以由单个组成Silo
。为了实现可靠的生产部署,我们显然希望Silo
集群中有不止一个用于容错和扩展。
一旦群集运行,我们就可以启动一个或多个连接到群集的客户端进程,并向该群集发送请求Grain
。客户端连接到Silo
网关上的特殊TCP端点。默认情况下,Silo
集群中的每个客户端都启用了客户端网关。因此,客户可以Silo
并行连接所有设备,以获得更好的性能和弹性。
配置和启动Silo
A Silo
通过一个ClusterConfiguration
对象以编程方式进行配置。它可以被直接实例化和填充,从一个文件加载设置,或者为不同的部署环境使用几种可用的帮助器方法创建。对于本地测试,最简单的方法是使用ClusterConfiguration.LocalhostPrimarySilo()
助手方法。然后将配置对象传递给一个新的SiloHost
类实例,可以在此之后进行初始化和启动。
您可以创建一个空的控制台应用程序项目,以.NET Framework 4.6.1或更高版本为主机Silo
。将NuGet元软件包添加到项目中。Microsoft.
Orleans.Server
PM> 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();
配置和连接客户端
用于连接到群集Silo
并发送请求的客户端Grain
通过ClientConfiguration
对象和a 以编程方式进行配置ClientBuilder
。 ClientConfiguration
对象可以实例化并直接填充,可以从文件加载设置,也可以为不同的部署环境使用几种可用的帮助程序方法创建。对于本地测试,最简单的方法是使用ClientConfiguration.LocalhostSilo()
助手方法。然后将配置对象传递给一个新的ClientBuilder
类实例。
ClientBuilder
公开更多配置其他客户端功能的方法。之后调用Build
该ClientBuilder
对象的方法来获取IClusterClient
接口的实现。最后,我们调用Connect()
返回对象的方法来连接到集群。
您可以创建一个空的控制台应用程序项目,以.NET Framework 4.6.1或更高版本为目标,以运行客户端或重新使用您创建的托管应用程序项目Silo
。将NuGet元软件包添加到项目中。Microsoft.
Orleans.Client
PM> Install-Package Microsoft.Orleans.Client
以下是客户端如何连接到本地的示例Silo
:
var config = ClientConfiguration.LocalhostSilo();
var builder = new ClientBuilder().UseConfiguration(config).
var client = builder.Build();
await client.Connect();
生产配置
我们在这里使用的配置示例用于测试Silo
和客户端运行在同一台机器上localhost
。在生产中,Silo
客户端通常运行在不同的服务器上,并且配置有可靠的群集配置选项之一。您可以在“ 配置指南”和“ 群集管理”的描述中找到更多相关信息。
下一个
调试
Orlens入门概念(4)Orleans 服务进程Silo相关推荐
- C功底挑战Java菜鸟入门概念干货(一)
一.认识Java 1.Java 程序比较特殊,它必须先经过编译,然后再利用解释的方式来运行. 2.Byte-codes 最大的好处是--可越平台运行,可让"一次编写,处处运行"成 ...
- CCNA-第一篇-基础入门概念
** 基础入门概念 **前言 没有什么学习是简单的.任何东西,包括你打游戏(除非是弱智的单机游戏)搞IT,一个月熬熬夜 月薪过X-W的大有人在,早9晚5一个月3K,自己选择.所以看你怎么学,每个人都很 ...
- 大数据入门概念及应用场景
参考内容: [知乎]深入浅出大数据:到底什么是Hadoop? [知乎]五万字 | Hive知识体系保姆级教程 大数据入门概念及应用场景 一.入门概念 1.1 大数据的4V 1.2 大数据处理的最佳工 ...
- 一、 网络安全基础入门-概念名词
目录 网络安全学习(2022.10.23) 一.基础入门--概念名词 DNS 脚本语言 后门(2022.11.06) WEB WEB相关安全漏洞 演示案例 网络安全学习(2022.10.23) 一.基 ...
- python中pyplot是什么意思_pyplot 入门概念小结
pyplot 入门概念小结 知乎的markdown支持实在是太差了,我就不在这里一个一个代码显示样式了,详情看我在简书发的文章.也希望高手指点一下怎么在知乎里面用好Markdown.也可以移步我的微信 ...
- 对计算机文件概念的理解,入门概念之三: 什么是文件 - 电脑知识学习网
入门概念之三: 什么是文件 12-05 电脑知识学习网 来源: 网络 文件在我们在电脑学习中用得最多的一个词. 那什么是文件呢? 文件是如何保存在电脑中的? 文件有那些类型? 文件有那些属性? ...
- 大白话ElasticSearch入门概念,看不懂找我!
点击上方蓝色"胖滚猪学编程",选择"设为星标" 跟着胖滚猪学编程!好玩!有趣! 这是胖滚猪ES系列博文第三篇,大白话ElasticSearch入门概念. 阅读本 ...
- java web入门——概念理解、名词解释
引言:当你想入门java web后,一定会查阅到很多相关的名词:Servlet,HTML,Spring...等等之类的,但是对于他们之间的关系总是比较混乱的,这篇文章就是理清这些名词的关系. 什么是w ...
- 8002.ros2入门概念
2 ros2 入门基本概念 # 创客智造网站. https://www.ncnynl.com/archives/201801/2251.html 基本概念: ROS是一个用于在不同进程间匿名的发布.订 ...
最新文章
- python需要php吗-PHP会被Python取代吗?
- Oracle就业课第四课之子程序
- 洛谷 P2756 飞行员配对方案问题 (二分图/网络流,最佳匹配方案)
- 【UOJ188】 Sanrd【类min_25筛】
- 2011股市大方向随想
- python的ctypes模块详解数组_python ctypes结构数组
- java 用户名不为空_[Java教程]【关于JavaScript】常见表单用户名、密码不能为空
- 解决 github clone慢
- jQuery 学习-样式篇(六):jQuery 获取和设置表单元素的值
- Asp.Net SignalR 集群会遇到的问题
- 顺序查找、折半查找、索引查找
- 动手设计 CPU(一)—— 各类元件功能表
- 媲美Teamviewer的远程桌面软件推荐 总有一款适合你
- 改变学习方式,改变一生-陈光超强逻辑记忆法笔记
- SpringBoot 使用freemarker 处理文档,找不到文件位置(报错:basePackagePath=““ /* relatively to resourceLoaderClass pkg)
- Mongoose操作mongoDB的详细步骤
- 语句摘抄——第26周
- 为啥是SoA?(SoA化的挑战)
- 提升方法(Boosting)
- 切比雪夫不等式例题讲解_「高中数学」柯西不等式,最全解析,高考必备,搞定最后十分...
热门文章
- 韩国EN电源维修EnerStream20直流电源维修详解
- 学习资料|常用的一些CMD运行命令,整理的比较齐全
- linux 端口带宽,Linux中最简单的总带宽限制
- mim install mmdetection不成功的解决办法
- WPF中GDI+图形图像的绘制:(一)绘制文本——动态设置字体、大小、颜色
- mysql命令行操作大全
- 下载excel文件,360浏览器下载成了json文件,谷歌正常
- 英语总结系列(二十八):改变自己
- error: reference to ‘XXX’ is ambiguous
- MACOS10.15使用CrossOver安装Enterprise Achitect