共用方式為


負載平衡

從廣泛的意義上說,負載平衡是運行時間的 Orleans 其中一個支柱。 Orleans 執行階段會嘗試保持一切平衡,因為平衡將資源使用量最大化、避免熱點、導致效能更好,並有助於彈性管理。 中的 Orleans 負載平衡適用於多個位置。 以下是運行時間執行平衡之非詳盡的清單:

  1. 預設演員放置策略是隨機的;新的實例會被隨機放置在硅叢之間。 這會產生平衡的佈局,並避免在大多數情況下出現熱點。
  2. 更進階的 ActivationCountBasedPlacement 策略會嘗試使所有筒倉上的啟動次數相等,從而在筒倉之間產生更平衡的分佈。 對於彈性而言,這特別重要。
  3. 顆粒目錄服務構建在分散式雜湊表之上,而該表具有天然平衡的特性。 目錄服務會將粒子映射至啟動實例。 每個尋址接收器都會擁有全域對應數據表的一部分,而且此數據表會使用與虛擬貯體一致的哈希,在所有尋址接收器之間以平衡的方式分割。
  4. 用戶端會連線到所有閘道,並以平衡的方式分散其要求。
  5. 提醒服務是一個分散式的分區運行時間服務。 指派哪個資料筒負責提供哪個提醒,會透過一致性哈希在所有資料筒之間達到平衡,這就像穀物目錄一樣。
  6. 筒倉內效能關鍵元件會進行分割,且其間的工作會在局部進行平衡。 這可讓 Silo 執行時充分利用所有可用的 CPU 核心,並避免 Silo 內部瓶頸。 這適用於所有本機資源:將工作配置給線程、套接字、分派責任、佇列等。
  7. 平衡 QueueBalancerBase 在叢集中的多個筒倉之間調配從持久性佇列中提取事件的責任。

平衡不一定表示失去在地性。 您可以在保持良好的本地性時達到平衡。 例如,當平衡牽涉到分區/分片時,您可以分配某一特定邏輯工作的責任,同時維持每個分區內的區域性。 這同時適用於本機和分散式負載平衡。