Orleans 配置方式时序图

Orleans配置方式时序解析

UseOrleansClient 配置流程

应用程序HostBuilderOrleansClientGenericHostExtensionsClientBuilderDefaultClientServicesIClusterClientHost.CreateDefaultBuilder(args).UseOrleansClient(clientBuilder => ...)UseOrleansClient(configureDelegate)检查 HasOrleansSiloBuilder设置 HasOrleansClientBuilder = "true"ConfigureServices((ctx, services) => ...)AddOrleansClient(services, configuration)new ClientBuilder(services, config)AddDefaultServices(this)注册 IClusterClient注册 ClientMessageCenter注册 ConnectionManager注册序列化服务返回配置好的 Host.Build()创建 IClusterClient 实例客户端连接到 Orleans 集群只能调用 Grain 方法应用程序HostBuilderOrleansClientGenericHostExtensionsClientBuilderDefaultClientServicesIClusterClient

UseOrleans 配置流程

应用程序HostBuilderOrleansSiloGenericHostExtensionsSiloBuilderDefaultSiloServicesSiloIClusterClientHost.CreateDefaultBuilder(args).UseOrleans(siloBuilder => ...)UseOrleans(configureDelegate)检查 HasOrleansClientBuilder设置 HasOrleansSiloBuilder = "true"ConfigureServices((context, services) => ...)AddOrleansCore(services, configuration)new SiloBuilder(services, config)AddDefaultServices(this)注册所有客户端服务注册 Silo 实例注册 Catalog注册 LocalGrainDirectory注册 MessageCenter注册 MembershipService注册存储提供程序注册流提供程序返回配置好的 Host.Build()创建 Silo 实例创建内置 IClusterClientSilo 作为集群节点运行可以承载和执行 Grain内置客户端用于内部通信应用程序HostBuilderOrleansSiloGenericHostExtensionsSiloBuilderDefaultSiloServicesSiloIClusterClient

配置互斥性检查流程

应用程序HostBuilderOrleansClientGenericHostExtensionsOrleansSiloGenericHostExtensionsOrleansConfigurationException尝试同时配置客户端和 Silo.UseOrleansClient(...)UseOrleansClient()设置 HasOrleansClientBuilder = "true".UseOrleans(...)UseOrleans()检查 HasOrleansClientBuilder抛出 GetOrleansClientAddedException()"Do not call both UseOrleansClient with UseOrleans...".UseOrleans(...)UseOrleans()设置 HasOrleansSiloBuilder = "true".UseOrleansClient(...)UseOrleansClient()检查 HasOrleansSiloBuilder抛出 GetOrleansSiloAddedException()"Do not call both UseOrleansClient with UseOrleans..."alt[先配置 UseOrleansClient][先配置 UseOrleans]应用程序HostBuilderOrleansClientGenericHostExtensionsOrleansSiloGenericHostExtensionsOrleansConfigurationException

UseLocalhostClustering 配置差异

IClientBuilder/ISiloBuilderClientLocalhostConfigSiloLocalhostConfigEndpointOptionsClusterOptionsUseLocalhostClustering(gatewayPort, serviceId, clusterId)UseLocalhostClustering(gatewayPorts[], serviceId, clusterId)UseStaticClustering(gatewayEndpoints[])配置静态集群连接仅配置网关端口设置服务ID和集群IDUseLocalhostClustering(siloPort, gatewayPort, primarySiloEndpoint, serviceId, clusterId)Configure<EndpointOptions>()设置 AdvertisedIPAddress = Loopback设置 SiloPort设置 GatewayPortUseDevelopmentClustering()Configure<ClusterOptions>()设置 ServiceId设置 ClusterId配置完整的 Silo 端点配置开发集群设置主 Silo 端点alt[客户端配置 (IClientBuilder)][Silo 配置 (ISiloBuilder)]IClientBuilder/ISiloBuilderClientLocalhostConfigSiloLocalhostConfigEndpointOptionsClusterOptions

运行时启动流程对比

应用程序HostIClusterClientSiloOrleans 集群host.StartAsync()启动客户端连接到集群网关返回可用 Silo 列表客户端就绪启动完成轻量级启动仅建立连接快速就绪host.StartAsync()启动 Silo初始化运行时组件启动消息中心启动目录服务启动成员服务加入集群确认成员身份启动 Grain 目录启动存储提供程序启动流提供程序Silo 就绪启动完成重量级启动完整运行时初始化较慢但功能完整alt[客户端启动流程][Silo 启动流程]应用程序HostIClusterClientSiloOrleans 集群

服务注册差异对比

UseOrleansClient
UseOrleans
HostBuilder
配置类型
ClientBuilder
SiloBuilder
DefaultClientServices
DefaultSiloServices
客户端服务
Silo 服务
IClusterClient
ClientMessageCenter
ConnectionManager
序列化服务
日志服务
所有客户端服务
Silo 实例
Catalog
LocalGrainDirectory
MessageCenter
MembershipService
存储提供程序
流提供程序

这些时序图清晰地展示了两种配置方式在初始化、服务注册、运行时行为等方面的差异,帮助开发者更好地理解何时使用哪种配置方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloworddm

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值