【问题标题】:How to share mongoose models with multiple microservices如何与多个微服务共享猫鼬模型
【发布时间】:2018-11-16 23:45:24
【问题描述】:

我有一个看起来像这样的用户模型:

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 公开数据库服务还是应该在每个服务器中手动创建模型并以这种方式使用它,还是有其他方法可以做到这一点?

【问题讨论】:

    标签: node.js express mongoose microservices


    【解决方案1】:

    在微服务之间共享模式是很危险的,因为它们可能会变得非常耦合,或者至少不会那样。微服务之间使用数据是正常的,但是模型不应该完全导入另一个微服务中。相反,相关的微服务应该使用一个子集,即远程模型的本地表示。为此,您应该使用Anti-corruption layer。此 ACL 将接收远程模型作为输入,并生成该模型的本地、不可变/只读表示作为输出。 ACL 位于微服务的外部边界,即进行远程调用的位置。

    此外,在微服务之间共享 *schema.js 文件会迫使您在所有其他微服务中使用 JavaScript/NodeJS,这是不好的。每个微服务都应该使用最适合它的任何编程语言。

    我是否应该通过 http 公开数据库服务

    数据库对拥有的微服务是私有的。它不应该暴露。

    【讨论】:

      猜你喜欢
      • 2020-07-18
      • 2019-08-19
      • 2016-04-30
      • 1970-01-01
      • 2018-10-07
      • 2019-11-19
      • 2012-09-19
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多