重要
Orleans v2 中已删除多群集支持。 以下文档与 Orleans v1 相关。
Orleans v1.3.0 添加了对将多个 Orleans 群集联合到充当单个服务的松散连接的 多群集 的支持。 多群集可以作为服务促进地理分布,从而更轻松地在全球多个数据中心运行应用程序。 还可以在单个数据中心内运行多群集,以获得更好的故障和性能隔离。
所有机制的设计都特别注意以下方面:
- 尽量减少群集之间的通信。
- 让每个群集自主运行,即使其他群集发生故障或无法访问也是如此。
配置和操作
我们将介绍如何配置和操作多集群。
通信:群集通过群集中使用的同一孤岛到孤岛连接进行通信。 若要交换状态和配置信息,群集使用八卦协议和八卦通道实现。
接收器配置:需要配置接收器,以便了解它们所属的群集(每个群集都由唯一字符串标识)。 此外,需要使用连接字符串来配置每个孤岛,以允许它在启动时连接到一个或多个 八卦通道 。
多群集配置注入:在运行时,服务作员可以指定和/或更改包含群集 ID 列表 的多群集配置,以指定哪些群集是当前多群集的一部分。 为此,可以在任一集群中调用管理粒。
多群集 grain
下面介绍了如何在应用程序级别使用多群集功能。
全局Single-Instance 粒度:可以指示群集何时以及如何协调特定粒度类的粒度目录。 这意味着 GlobalSingleInstanceAttribute 你想要与在单个全局群集中运行时 Orleans 相同的行为:将所有调用路由到单个粒度激活。 相反,OneInstancePerClusterAttribute 指示每个群集可以具有其独立激活。 如果不想在群集之间通信,则这是合适的。
日志视图粒度(不在 v1.3.0 中):一种特殊类型的粒度,它使用类似于事件溯源的新 API 来同步或保留粒度状态。 可以使用它自动有效地同步群集与存储之间的粒度状态。 由于其同步算法可以安全地与可重入的粒子一起使用,并且已针对复制和批处理进行了优化,因此当某个粒子在多个集群中被频繁访问和/或频繁写入存储时,它的性能可以优于标准粒子。 对日志视图粒度的支持尚不是主分支的一部分。 我们有一个预发行版,其中包含一些示例和geo-orleans
分支中的文档。 它目前正在由早期采用者在生产中进行评估。