PreferLocalPlacement 如何在奥尔良运作
How does PreferLocalPlacement works in Orleans
doc没有解释清楚。我想 PreferLocalPlacement
是这样工作的:
当客户端(集群外)向标记为PreferLocalPlacement
的grain发送请求时,它选择一个它知道的随机筒仓服务器,并向那里发送请求.
筒仓服务器收到请求后,判断指定标识的grain是否已经激活。如果没有,谷物会在这个筒仓中自动激活。
因此,每个筒仓服务器每个身份最多可以激活 1 个这种谷物类型。
我做对了吗?
提前致谢
您的理解很接近,但遗漏了奥尔良如何发现和放置谷物激活的关键方面。
关键是奥尔良的大多数安置提供商都依赖于 grain 目录。该目录存储当前在哪个服务器上激活哪个grain 的映射。与放置一样,目录也是可配置的。它默认使用 in-cluster 目录,其中存储映射的责任由服务器共享。
Orleans会先检查目录,看看grain当前是否在集群某处被激活,当grain当前没有有效的时候,它只会运行PreferLocalPlacement
中的逻辑目录中的条目。
因此,您将在集群中激活一个 grain 实例,而不是每个服务器一个实例。如果您的谷物当前没有活动实例,那么 PreferLocalPlacement
将始终选择当前的本地服务器(或请求首先登陆的服务器),只要它兼容。
额外的细节
“只要能兼容”
集群可以混合使用服务器,每个服务器都加载了一组不同的 grain 程序集。因此,放置提供者需要考虑给定服务器是否 与请求的谷物类型兼容 以及它是否具有 compatible version of the interface which is being requested. If it does not support that grain, then a random compatible server will be chosen instead. For more information, see the documentation on Heterogeneous Clusters.
“大多数展示位置提供商都依赖于 grain 目录”
您可能会问哪些展示位置提供者不依赖于 grain 目录。今天唯一的答案是 [StatelessWorker]
放置,因为 [StatelessWorker]
grains 可以有多个实例,即每个服务器可以有任何给定 [StatelessWorker]
grain 的可配置数量的本地实例。
doc没有解释清楚。我想 PreferLocalPlacement
是这样工作的:
当客户端(集群外)向标记为PreferLocalPlacement
的grain发送请求时,它选择一个它知道的随机筒仓服务器,并向那里发送请求.
筒仓服务器收到请求后,判断指定标识的grain是否已经激活。如果没有,谷物会在这个筒仓中自动激活。
因此,每个筒仓服务器每个身份最多可以激活 1 个这种谷物类型。
我做对了吗? 提前致谢
您的理解很接近,但遗漏了奥尔良如何发现和放置谷物激活的关键方面。
关键是奥尔良的大多数安置提供商都依赖于 grain 目录。该目录存储当前在哪个服务器上激活哪个grain 的映射。与放置一样,目录也是可配置的。它默认使用 in-cluster 目录,其中存储映射的责任由服务器共享。
Orleans会先检查目录,看看grain当前是否在集群某处被激活,当grain当前没有有效的时候,它只会运行PreferLocalPlacement
中的逻辑目录中的条目。
因此,您将在集群中激活一个 grain 实例,而不是每个服务器一个实例。如果您的谷物当前没有活动实例,那么 PreferLocalPlacement
将始终选择当前的本地服务器(或请求首先登陆的服务器),只要它兼容。
额外的细节
“只要能兼容”
集群可以混合使用服务器,每个服务器都加载了一组不同的 grain 程序集。因此,放置提供者需要考虑给定服务器是否 与请求的谷物类型兼容 以及它是否具有 compatible version of the interface which is being requested. If it does not support that grain, then a random compatible server will be chosen instead. For more information, see the documentation on Heterogeneous Clusters.
“大多数展示位置提供商都依赖于 grain 目录”
您可能会问哪些展示位置提供者不依赖于 grain 目录。今天唯一的答案是 [StatelessWorker]
放置,因为 [StatelessWorker]
grains 可以有多个实例,即每个服务器可以有任何给定 [StatelessWorker]
grain 的可配置数量的本地实例。