услуги zeromq и доступ к данным - PullRequest
2 голосов
/ 26 марта 2011

В настоящее время я экспериментирую с zeromq и создаю распределенную сервис-ориентированную архитектуру.Каждым службам необходимо манипулировать данными из общей базы данных.

Как лучше всего поступить:

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

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

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

1 Ответ

3 голосов
/ 27 марта 2011

Поскольку вы идете по пути «сделать все правильно», создавая распределенную сервис-ориентированную систему с загрузкой zeromq, я бы сказал, что вы должны пройти весь путь и поставить сервис перед базой данных.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...