Подтвердить что ты не робот

Микросервисы: источник данных на экземпляр или на микросервис?

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

Ответ 3

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