Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Балансировка нагрузки, в широком смысле, является одним из основных компонентов Orleans среды выполнения. Среда Orleans выполнения пытается сохранить все сбалансировано, так как балансировка ресурсов максимально повышает использование ресурсов, избегает хот-точек, приводит к повышению производительности и помогает с эластичностью. Балансировка нагрузки используется в Orleans в нескольких местах. Ниже приведен неполный список, где среда выполнения выполняет балансировку:
- Стратегия размещения актеров по умолчанию случайна; новые активации размещаются случайным образом в различных силосах. Это приводит к сбалансированному размещению и предотвращает горячие точки для большинства сценариев.
- Более расширенная ActivationCountBasedPlacement стратегия пытается сравнять количество активаций на всех силосах, что приводит к более равномерному распределению между силосами. Это особенно важно для эластичности.
- Служба каталогов зерна строится на основе распределенной хэш-таблицы, которая изначально сбалансирована. Служба каталогов сопоставляет зерна с активациями. Каждый силос владеет частью глобальной таблицы сопоставлений, и эта таблица глобально разделена в сбалансированном виде для всех силосов с использованием согласованного хеширования с виртуальными корзинами.
- Клиенты подключаются ко всем шлюзам и распределяют свои запросы между ними в сбалансированном режиме.
- Служба напоминаний — это распределенная, секционированная служба среды выполнения. Назначение того, какой силос отвечает за обслуживание каждого напоминания, распределяется между всеми силосами с помощью согласованного хэширования, как и директория grain.
- Критически важные для производительности компоненты в хранилище разделяются на секции, а работа среди них равномерно распределяется на местном уровне. Это позволяет среде выполнения silo полностью использовать все доступные ядра ЦП и избегать узких мест в silo. Это относится ко всем локальным ресурсам: распределение работы потокам, сокетам, обязанностей по диспетчеризации, очередям и т. д.
- Элемент QueueBalancerBase распределяет ответственность за извлечение событий из очередей постоянного хранения в кластере.
Балансировка не обязательно означает потерю локальности. Вы можете достичь баланса при сохранении хорошей локальности. Например, если балансировка подразумевает шардинг или разделение, можно разделить ответственность за определённую логическую задачу, сохраняя локальность в каждой части. Это относится как к локальной, так и к распределенной балансировке.