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