Вот мои текущие выводы по этому вопросу, являются ли они правильными или нет недостатка?В чем причина разграничения баз данных на микросервисах?
Существуют две основные принципы microservices:
- сильное сцепление -> связанные код gouped вместе, например, класс делает на хорошо определенную работу, это сильное/hingh-сцепление.
- развязывающая муфта -> соединительные элементы в системе, так что эти компоненты зависят друг от друга как можно меньше. Связывание относится к степени прямого знания того, что один элемент имеет другой. Поэтому изменение одной службы не должно требовать изменения к другому.
С общей базой данных (как в неразделенной архитектуре) эти принципы не охватываются. Это обусловлено следующими фактами:
- Существует фиксированная связь между пользователями и конкретного выбора технологии , а также фактической реализации базы данных.
- Логика Businiess/application может распространяться среди нескольких пользователей.
- Общая информация, которая должна быть отредактирована, может привести к изменению поведения в разных местах: .
- Из-за более монолитной архитектуры, которая идет с общими базами , сбой может повлиять на многие серверы, так как все они связаны вместе, даже сбой в системе может произойти из-за кулачества .
Чтобы избежать вышеупомянутых проблем: развязанные базы данных могут использоваться с микросервисами вместо общих баз данных. Поэтому каждый микросервис должен иметь свою собственную базу данных. Это также облегчит масштабирование системы, обеспечит гораздо большую доступность системы, поскольку «только» тот, действительно выполненный сервис, потерпит неудачу.
ОБНОВЛЕНИЕ: Другим преимуществом микросервисов было бы то, что он может улучшить гибкость и скорость разработки. Поскольку правильно разложенные микросервисы могут разрабатываться и развертываться отдельно и параллельно с другими службами.
Вы в целом правы, хотя я бы не согласился (или не понял) ваши первые два утверждения. С моими двумя последними утверждениями я согласен. –
@Tom Redfern: Я имел в виду, что вы не можете использовать разные базы данных, если у вас есть одна общая монолитная архитектура. Я думал об этом, так как видел службы, которые получают данные от MonoDB, который, в свою очередь, был синхронизирован с SoR (System of Record), поэтому MongoDB обеспечивал только высокоскоростной кеш, и опасность dataloss была очень низкой, поскольку она могла легко перестроить. Это была только одна услуга, другая служба, связанная с кластерами баз данных, где infact критически важна для dataloss. Это было бы невозможно с фиксированной связью между БД и потребителем – MBushveld
@MBushveld Я думаю, что ваше наблюдение верное. Важно сосредоточиться на базовой проблеме - связи на уровне данных и владении данными в качестве основных драйверов, чтобы убедиться, что право собственности DATA не используется, если в вашем развертывании имеет смысл разместить все данные на одном сервере базы данных это совершенно верно, так что вы не нарушаете изоляцию владения данными ... –