【问题标题】:Which part of Orleans is actually distributed?奥尔良的哪个部分实际上是分布的?
【发布时间】:2021-08-17 17:39:42
【问题描述】:

文档中有几个令人困惑的点,让我很难理解奥尔良集群中的确切分布是如何发生的。因此,问题。

问题 #1

Orleans 声称具有内置的distribution 功能,可以跨多个服务器分发。在我看来,Orleans 本身可以充当负载平衡器,并且可以自动扩展。因此,如果我将 Orleans 应用程序部署到多个服务器,那么服务发现和负载管理应该会自动发生,对吗?

在这种情况下,为什么有些文档和文章建议使用其他 tools,例如 Ocelot 或 Consul,作为 Orleans 集群的单一入口点?

问题 #2

我想在多个服务器(如 Redis 或 Apache Ignite)上使用简单但分布式的内存存储,我想知道是否可以使用简单的颗粒作为这种数据存储?

假设,一个grain 将存储一系列餐厅,而另一些grain 将跟踪所选餐厅的最后1000 名访客。我可以将这 2 个grain 作为单例集合仅激活一次,向每个集合添加或删除记录,然后将这 2 个grain 用作集群中所有节点均匀可用的内存存储?另外,如果答案是肯定的,我是否需要为这些集合添加锁,或者每个颗粒始终存在于单个线程中?

【问题讨论】:

    标签: orleans


    【解决方案1】:
    1. 服务发现和负载管理确实是自动发生的。 领事不是强要求。唯一的外部要求是成员资格表提供程序 - Orleans Clustering 内部使用的东西。奥尔良已经内置了许多内置的成员资格表提供程序。例如,Azure 表存储。您只需要配置 Orleans 以使用它,当然还有 Azure 存储帐户。 Consul 是 Membership 表提供者的另一种选择,而且还有更多。

    另一个没有内置的东西是基础架构扩展。如果您的服务需求增加,则需要要求基础设施提供商(Cloud Provider)添加更多服务器。添加服务器后,Orleans 还将自动调整新服务器之间的工作负载和负载平衡。但是确定需要更多服务器并添加它们并不是 Orleans 自己完成的(可能有一些外部贡献的工具可以做到这一点。也许 K8 可以配置为做到这一点?我对此并不完全确定)。

    1. 是的,您可以使用这 2 个颗粒作为内存存储,就像您写的一样。不,您不需要使用锁。所有grain都是单线程的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 2017-12-27
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      相关资源
      最近更新 更多