2016-08-09 9 views
1

Я занимаюсь разработкой набора микросервисов с возможностями распределенной обработки с помощью Akka.NET.Автомасштабирование: работать везде или по требованию?

Обычно они состоят из диспетчера и некоторых рабочих. Диспетчер по умолчанию назначает работу своему местному работнику, но когда [каким-то образом] определяет, что текущий хост перегружен, он назначает работу удаленным сотрудникам.

Скажем, у нас есть 10 хостов (VM) и 30 таких сервисов (семантически разные).

Вопрос в том, как правильно их масштабировать? Первым решением является запуск 3-сервисов на хост с возможностью автоматического масштабирования каждой услуги по требованию на других 9 машинах. И масштабирование, когда не нужно через некоторое время. Второе решение - запустить все 30 сервисов на всех 10 хостах.

ответ

2

На высоком уровне, необходимо учитывать отказоустойчивость, локализацию, восстановление общих распределенных вычислений, таких проблем, как CAP и т.д ..

Если у вас есть различные потребности масштабирования для различных услуг, я бы, вероятно, пойти на второй подход к их запуску на всех хостах. Это дает большую отказоустойчивость и кажется концептуально проще, чем автоматическое масштабирование. Однако это предполагает, что у вас есть аналогичные потребности для каждого типа услуг и означает, что все службы будут затронуты сбоем или сбоем хоста. Если у одной конкретной службы разные потребности (например, разные SLA, не функциональные требования, более мощная машина и т. Д.), Тогда есть больше аргументов для более специализированных развертываний для каждой службы.