2015-10-28 3 views
11

Архитектура здания микросервиса Я столкнулся с проблемой обмена данными между экземплярами одного и того же микросервиса.Микросервисы: источник данных для каждого экземпляра или на микросервис?

У меня есть микросервис, который массово использует его источник данных - каждый запрос службы вызывает запрос базы данных (обычно вставляемый). Эта услуга будет использоваться очень сильно, и я планирую скрыть несколько экземпляров за балансировкой нагрузки. И здесь возникает вопрос: будут ли эти экземпляры использовать базу данных ONE (будет ли база данных узким местом?) Или MULTIPLE (источник данных на один экземпляр)?

ответ

6

В моем опыте с архитектурой mSOA, я никогда не видел

MULTIPLE (источник данных каждого экземпляра)

, который будет использоваться. Даже если вы планируете загружать его в большой степени, наиболее распространенные БД по своей природе поддерживают многопоточный доступ. Обычно узким местом (или самой медленной частью) системы БД является диск. Нам пришлось масштабировать наши кластеры несколько раз (относительно дешево, если вы находитесь в облаке, но масштабируемость также может стать проблемой, так как потребуется больше потоков для управления и выполнения масштабированной системы БД). Имейте в виду, что в некоторых СУБД используется временная БД (tempdb), которая используется всеми БД в этом экземпляре для сортировки, хэширования, временных переменных и т. Д. Многопоточность и разделение этих файлов tempdb можно использовать для повышения пропускной способности tempdb , тем самым улучшая общую производительность сервера.

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

Я планирую скрыть несколько экземпляров позади балансировки нагрузки

Это хороший дизайн для вашего приложения серверов, поэтому использование БД кластера должны быть пригодны также. Стремясь к полному ответу, вы можете рассмотреть DWH, если у вас есть много услуг, и вы хотите иметь возможность проводить анализ данных и анализ со всех своих БД.

1

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

5

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

Я предлагаю вам заглянуть в базу данных NoSQL, если вы обеспокоены тем, что база данных является узким местом. Базы данных NoSQL предназначены для лучшего масштабирования для высокой пропускной способности и для обработки больших объемов данных. Конечно, недостатком является то, что они не обрабатывают сложные модели данных.