Масштабируемость услуг Wolkenkit - PullRequest
0 голосов
/ 13 января 2019

Воспользовавшись другой платформой CQRS / ES, я тоже взглянул на Wolkenkit. Это похоже на хорошую среду, в которой могут отсутствовать некоторые расширенные функции, но модель CQRS / ES использует простые, но умные API.

Справочная информация: я прочитал документацию, но еще не изучал ее на практике.

Один момент, на который документация не ответила, хотя, ИМХО, важен вопрос о том, как по своей архитектуре Wolkenkit реализует горизонтальное масштабирование, что означает добавление дополнительных экземпляров сервисов (особенно по разным номерам для записи и чтения) , Похоже, это должно быть возможно, но это (ИМХО) не объяснил, как и почему.

CQRS / ES имеет несколько потенциальных точек синхронизации / сериализации в тех случаях, когда порядок команд (возможно обработанный оптимистической блокировкой) или даже более важный порядок событий для отдельного агрегатного экземпляра должен быть гарантированным (например, сторона чтения не может быть правильно построена, если события имеют неправильный порядок).

Я не вижу ответа на этот вопрос в документации, и я бы предположил, что использование RabbitMQ само по себе не решает эту проблему.

Была ли она решена явно (с помощью специального элемента инфраструктуры?) Или есть некоторые (не упомянутые) ограничения, которые (не) решают это неявно? Простая ссылка на документацию - это хорошо, если я что-то пропустил

1 Ответ

0 голосов
/ 14 января 2019

Говоря о масштабировании, есть две вещи, которые вы в первую очередь хотите масштабировать: брокер (отвечающий за модель чтения) и ядро ​​(отвечающее за модель записи).

Что касается ядра, мы сейчас обрабатываем несколько команд параллельно, если они предназначены для разных агрегатов. Несколько команд, предназначенных для одного и того же агрегата, сериализуются с использованием marble-run . Если запущено несколько ядер, в настоящее время у нас нет механизма для надежного масштабирования, но это указано в нашей дорожной карте . Обратите внимание, что для этого существует также проблема , и помощь и / или спонсорство весьма приветствуются по этой теме (тем не менее, мы все равно решим ее рано или поздно).

Относительно брокера они независимы друг от друга, поэтому их можно масштабировать без лишних слов, поскольку между ними нет никаких зависимостей.

В данный момент CLI не поддерживает масштабирование ядра или брокера, вам нужно сделать это вручную, но это снова изменится, как только будет решена вышеупомянутая проблема.

Отказ от ответственности: я являюсь одним из основных разработчиков wolkenkit , поэтому, пожалуйста, примите мой ответ с недоверием.

...