Как поделиться моделями мангуста с несколькими микросервисами - PullRequest
0 голосов
/ 07 июня 2018

У меня есть модель User, которая выглядит следующим образом:

import mongoose from 'mongoose';

const UserSchema = new mongoose.Schema({
    name: String,
    email: {
        type: String,
        required: true,
        unique: true,
    },
    password: {
        type: String,
        required: true,
    },
});

export default mongoose.model('User', UserSchema);

Я пытаюсь поделиться этой моделью с несколькими микросервисами, но как мне поделиться этим?Должен ли я сделать службу базы данных доступной через http или мне нужно вручную создавать модели на каждом сервере и использовать ее таким образом, или есть ли другой способ сделать то же самое?

1 Ответ

0 голосов
/ 08 июня 2018

Распространять схемы между микросервисами опасно, потому что они могут стать очень связанными или, по крайней мере, не такими.Это нормально, что микросервисы используют данные друг от друга, но модели не должны полностью импортироваться в другой микросервис.Вместо этого зависимые микросервисы должны использовать подмножество, локальное представление удаленной модели.Для этого вы должны использовать Антикоррупционный слой .Этот ACL получит в качестве входных данных удаленные модели и создаст в качестве выходных данных локальное неизменное / только для чтения представление этой модели.ACL находится на внешней границе микросервиса, то есть там, где выполняются удаленные вызовы.

Кроме того, совместное использование файлов *schema.js между микросервисами заставит вас использовать JavaScript / NodeJS во всех других микросервисах, чтонехорошо.Каждый микросервис должен использовать любой язык программирования, который лучше всего подходит для него.

Если я сделаю службу базы данных доступной через http

База данных является частной для собственника микросервиса.Это не должно быть выставлено.

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