Миграция на микросервисы - mysql - PullRequest
0 голосов
/ 14 мая 2018

Компания, с которой я работаю, изучает переход на архитектуру микросервис / kubernetes, но преодолевает пару препятствий в исследовании, поэтому я решил поставить их здесь.

С типичной монолитной базой данных,множество запросов объединяются из других источников / таблиц, что обычно считается другой обязанностью микросервисов (например, Клиенты -> Заказы).

Вопрос, который у меня сейчас возникает, с микросервисами, что считается лучшей практикой?

Я нашел несколько предложенных подходов:

1) Присоединиться к коду,По сути работает несколько запросов.Например: const user = UserService.getUserById(1); const order = OrderService.getForUser(user);

Мне нравится этот подход, и я могу четко видеть, откуда поступают данные, что требуется и т. д. Однако возникает проблема дополнительной задержки.Где, как и прежде, я мог присоединиться к этому запросу и иметь только одну поездку в базу данных.Теперь у меня есть 2 (или более, в зависимости от требуемых данных) запросов к БД.

2) Присоединиться к внешней службе.Создание отдельного сервиса, который обрабатывает запросы.- Это похоже на наличие внутреннего API, от которого зависит каждый сервис, и выглядит как плохая практика в качестве единственной точки отказа.Может быть, я вижу это неправильно.

3) Присоединяйтесь к MySQL.Имейте все данные в той же базе данных и запросите как прежде.Это дает преимущество одиночной поездки в mysql, однако нарушает микросервисный подход и устраняет возможность иметь базу данных / схему для каждой службы.


Лично я считаю, что вариант 1 является наиболее универсальным, но яМне любопытно узнать о дополнительной задержке нескольких поездок в оба конца и о том, как вы, ребята, справились с этим.Или, возможно, есть другое решение, которого я не вижу.

1 Ответ

0 голосов
/ 14 мая 2018

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

Микросервисы - это все варианты, выборочные: масштабируемость, устойчивость / антихрупкость, развертывание и т. Д. Вы не можете сделать всю систему устойчивой , но вы можете сделать некоторые из них (важные биты).

Я бы сосредоточился на моделировании моделей предметной области / граничных контекстов, попробуйте получить Single Правильный принцип ответственности, который, как мы надеемся, поможет вам избежать репликации функций, зависимостей Death Star.

Очень базовая архитектура µService

Чтение:

Строительство микросервисов

Домен-управляемый дизайн: борьба со сложностями в основе программного обеспечения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...