文档并没有清楚地解释。我认为PreferLocalPlacement是这样工作的:
当客户端(不在集群之外)向标记为PreferLocalPlacement的谷物发送请求时,它会选择它知道的随机筒仓服务器,并将请求发送到那里。
当筒仓服务器接收到请求时,它将确定是否已经激活了具有指定标识的谷物。如果没有,谷物就会在这个筒仓中自动激活。
因此,每个筒仓服务器可以在每个标识中最大限度地激活该谷物类型。
我做得对吗?提前感谢
发布于 2022-01-25 17:41:08
你的理解是密切的,但缺少一个关键的方面,如何发现和放置谷物激活。
关键是,新奥尔良的大多数就业服务商都依赖一个谷物目录。该目录存储当前在哪个服务器上激活谷物的映射。和位置一样,目录也是可配置的。默认情况下,它使用集群内目录,其中存储映射的责任在服务器之间共享。
新奥尔良将首先检查目录,以查看当前在集群中的某个位置是否激活了谷物,并且只有当当前在目录中没有有效条目时,它才会在PreferLocalPlacement中运行逻辑。
因此,您将在集群中激活您的谷物的一个实例,而不是每个服务器一个实例。如果没有当前活动的谷物实例,那么PreferLocalPlacement将始终选择当前的本地服务器(或请求首先访问的服务器),只要它是兼容的。
额外细节
“只要是兼容的”
集群可以有一个服务器组合,每个服务器都有一个不同的谷物程序集加载。因此,位置提供程序需要考虑给定的服务器是否与请求的谷物类型兼容,以及它是否具有被请求的接口的兼容版本。如果它不支持这个粒度,那么将选择一个随机兼容的服务器。有关更多信息,请参见关于异质簇的文档。
“大多数安置提供者依赖于一个谷物目录”
您可能会问哪些位置提供程序不依赖谷物目录。今天唯一的答案是[StatelessWorker]布局,因为[StatelessWorker]谷物可以有多个实例,也就是说,每个服务器都可以拥有任意给定[StatelessWorker]谷物的可配置数量的本地实例。
https://stackoverflow.com/questions/70844571
复制相似问题