Архитектура микросервисов с node-express

Я планирую использовать микросервисную архитектуру в своем проекте с node-express, и этот термин для меня новый.

Я исследовал это и узнал, что каждый независимый модуль можно рассматривать как микросервис с отдельной базой данных, в настоящее время мой проект имеет одну и ту же базу данных для всего модуля, как показано ниже:

Текущая архитектура:

Архитектура микросервисов с node-express

Все модули (студент, школа, факультеты) используют одну и ту же базу данных, и нам всегда нужны данные таблицы одного модуля в другом модуле.

Архитектура микросервисов:Архитектура микросервисов с node-express

Теперь проблема начинается так, что у нас должна быть отдельная БД, разве мы не можем сделать три виртуальных разных БД в одной БД?

Хорошо, если я создам три отдельные БД, поэтому я могу сопоставить одну микросервисную БД с другой микрослужбой для выборки и вставки данных, и скорость выполнения все равно будет увеличена (поскольку я читал, что выполнение отдельных мс с БД повышает скорость выполнения) по сравнению с текущим сценарием где я делюсь одной и той же БД и извлекаю данные из таблиц во всех модулях?

У меня также есть один вопрос: большие продукты, такие как OLA, Netflix, Twitter, как они справляются с микросервисами, если у них разные БД, и когда они хотят сопоставить одну БД микросервиса с другим микросервисом?

Пожалуйста, помогите мне.

Я думаю, что нет необходимости иметь разные базы данных для всех этих модулей, а лучше иметь каждый свой собственный REST API, который взаимодействует с одной и той же базой данных.

Mulperi 19.06.2019 08:05

Вы хотите сказать, что я должен отделять только микросервисы, но у них должна быть одна БД, верно? если это так, то мы не следуем концепции микросервисов, тогда

Vishal Solanki 19.06.2019 08:13

См. этот ответ: stackoverflow.com/a/45421864/7970942

Mulperi 19.06.2019 08:17

спасибо, у меня появилась идея, теперь вы можете опубликовать этот ответ, который мне помог

Vishal Solanki 19.06.2019 08:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
4
1 208
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Микросервисы, также известные как архитектура микросервисов, представляют собой архитектурный стиль, который структурирует приложение как набор сервисов, которые

Высокая ремонтопригодность и возможность тестирования Слабо связанный Независимо развертываемый Организовано вокруг бизнес-возможностей. Архитектура микросервисов обеспечивает непрерывную доставку/развертывание больших и сложных приложений. Это также позволяет организации развивать свой технологический стек.

Из приведенного выше объяснения инфраструктура предназначена для создания в разных разделах, чтобы, когда часть всей архитектуры необходимо масштабировать, это можно было сделать независимо. Нам не нужно мешать другим службам. Также, если служба не работает все приложение не падает. Из вашего примера, если вы создаете виртуальную базу данных в той же базе данных, и если база данных выйдет из строя, все приложение будет отключено. Принимая во внимание, что если вы развертываете базы данных отдельно, если школьная база данных выходит из строя, другая база данных будет работать с работающими службами. А также сервисы не должны использовать базы данных других сервисов.

вы сказали services should not use databases from other services, но в моем случае, если я сделаю три отдельных модуля с отдельной БД, мне также потребуется взаимосвязь БД, потому что мой текущий проект зависит от разных таблиц разных сервисов.

Vishal Solanki 19.06.2019 07:51

если ваши службы зависят от других баз данных из разных служб, микросервисная архитектура не достигается. Попробуйте как-то разделить сервисы. Если это невозможно, то в собственном сервисе. Сервисы — это бизнес-логика, которая может быть полностью разделена и взаимодействовать друг с другом через общий язык, такой как json, очень редко.

Fiore 19.06.2019 08:18
Ответ принят как подходящий

Я думаю, что нет необходимости иметь разные базы данных для всех этих модулей, а лучше иметь каждый свой собственный REST API, который взаимодействует с одной и той же базой данных.

См. этот ответ: stackoverflow.com/a/45421864/7970942

Надеюсь, это поможет! :)

Другие вопросы по теме