2016-04-26 4 views
2
  • Person
  • NativeCountry
  • SpokenLanguages ​​

Если бы запрос о MIcroservice зернистости. Попробуем объяснить мой запрос на примере.Микросервисы на таблицу БД?

Предположим, что у меня есть более 3 таблиц в базе данных, с отношением «Множество к одному» между Person -> NativeCountry table. От одного до многих отношений между людьми -> LanguagesSpoken в базе данных.

Приложение на лицевой стороне предполагает выполнение операции CRUD на лицевой стороне лица, а также возможность извлекать людей на основе nativecountry или voicelanguage.

Имеет ли смысл разработать 3 независимых микросервиса для каждого из объектов, а затем использовать Aggregator Microservice на верхнем уровне для создания комбинированных данных для UX-слоя или я должен подумать о том, чтобы объединить их для создания только одного микросервиса?

+0

Хотя этот вопрос действительно, его немного сложно ответить, не понимая бизнес-домена. Как правило, используйте один микросервис, если запрос состоит в том, чтобы запрашивать Person, NativeCountry и SpokenLanguages ​​вместе и никогда отдельно и отдельно от микросервисов, если есть более крупный домен, который требует от них независимого. Если вы можете добавить некоторые дополнительные сведения о конкретном домене и как некоторые другие службы могут их использовать, это может дать небольшое представление о более точном ответе. –

+0

Давайте скажем, что в пользовательском интерфейсе будет возможность добавить нового человека, который, как и следовало ожидать, будет иметь натовские языки и языки, на которые он ссылается. Однако для предварительного заполнения доступных разговорных языков при создании пользовательского интерфейса пользователя может потребоваться запросить доступные языки в БД и заполнить. В пользовательском интерфейсе также должен быть раздел поиска, где можно предоставить nativecountry или один из языков, используемых в качестве критериев поиска, чтобы иметь возможность искать людей, соответствующих этому. –

+1

Сам сервер базы данных является одним большим сервисом.Вы обертываете или разбиваете его на отдельные службы только в том, что их существование является хорошим. –

ответ

1

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

  • Поиск людей по родной стране
  • Поиск людей по языку
  • Добавить человека и с их родной страны и языки, на которых говорят
  • Список всех языков

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

Если вы разбиваете каждый из объектов, людей, язык и страну на разные микросервисы, услуги будут слишком малы и сложность будет возрастать, например. вам может потребоваться несколько запросов к нескольким службам для генерации одного ответа, в то время как, возможно, не потребуется. Что касается последней функции, которая не совсем вращается вокруг людей, я бы сказал, что ее слишком мало возможностей для микросервиса. Пока вам не понадобится, чтобы последняя функция была автономной службой, я бы посоветовал включить ее в «народную» микросервис.

Смежные вопросы