負載平衡
負載平衡大致上是 Orleans 執行階段的其中一個要素。 Orleans 執行階段會嘗試讓所有項目保持平衡,因為平衡可讓資源使用方式最大化,且能避免作用區進而提升效能,以及有助於提升彈性。 Orleans 中的負載平衡適用於多個位置。 以下是執行階段執行平衡所在位置的非詳盡清單:
- 預設動作項目放置策略是隨機的,新的啟用會隨機放置於定址接收器。 這會導致平衡的位置,並防止大部分情節的作用區。
- 更進階的 ActivationCountBasedPlacement 會嘗試讓所有定址接收器上的啟用數目相等,這會導致更平均地分散跨定址接收器的啟用。 對於彈性而言,這特別重要。
- 粒紋目錄服務建置於分散式雜湊表之上,原本就已平衡。 目錄服務會將粒紋對應至啟用,每個定址接收器都會擁有全域對應資料表的一部分,且此資料表會以平衡的方式在所有定址接收器之間進行全域分割。 我們會針對其使用一致的雜湊與虛擬貯體。
- 用戶端會以平衡的方式連線至所有閘道並分散其要求。
- 提醒服務是分散式分割執行階段服務。 指派哪一個定址接收器負責透過一致的雜湊來平衡所有定址接收器的提醒,就像在粒紋目錄中一樣。
- 定址接收器內的效能關鍵元件會進行分割,且其中的工作會在本機平衡。 如此一來,定址接收器執行階段就可以完全利用所有可用的 CPU 核心,而不會造成定址接收器的瓶頸。 這適用於所有本機資源:將工作配置給執行緒、通訊端、分派責任、佇列等等。
- QueueBalancerBase 會平衡從叢集中跨定址接收器的持續性佇列提取事件的責任。
平衡不一定表示遺失位置。 工作可以平衡,但仍維持良好的位置。 例如,當平衡表示分區化/資料分割時,您可以分割特定邏輯工作的責任,同時仍維持每個分割區內的位置。 這適用於本機和分散式平衡。