首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在节点js中使用租户和微服务

如何在节点js中使用租户和微服务
EN

Stack Overflow用户
提问于 2021-12-06 07:44:12
回答 1查看 143关注 0票数 0

我计划在MongoDB中使用节点js中的微服务来租用用户,我的首选是

带有express

  • mongobd

  • passport auth的
  • 节点js (对于每个微服务

之间的每个microservice)

  • communication )

我的问题是

如何使用多个DB connections?

  • how来使用像auth这样的通用中间件?

  • is MongoDB是multi-tenancy?

的优点。

EN

回答 1

Stack Overflow用户

发布于 2021-12-06 08:46:42

不完全确定你在找什么答案。

一种常见的方法是将微服务分离并独立部署到云上。通信是基于事件的,使用Apache、RabbitMQ或云特定工具(如AWS )。

就使用芒果或护照而言,没有什么能真正阻止每一个单独的微服务实现其中的任何一个。

至于多租户,我建议使用策略模式或多态,其中您的服务器维护到所有租户dbs的连接,一旦请求满足,就会选择其中一个连接来完成实际工作。

编辑以回答一些问题:任何服务都有利于多租户。实现多租户系统完全基于您的实现,而不是所涉及的服务。查看多态以实现nodejs中真正的多租户系统。

例如,假设在一个名为devprod的系统中有两个租户。可以为db连接创建一个基类,如下所示

代码语言:javascript
复制
class DbRoot {
  private connection;

  constructor(tenant) {
    this.setConnection(tenant);
  }

  private setConnection(tenant) {
    switch(tenant) {
      case Tenants.DEV:
        this.connection = 'https://dev.db.com';
        break;
      case Tenants.PROD:
        this.connection = 'https://prod.db.com';
        break;
      default:
        throw new Error('tenant not recognized');
     }
  }

之后,您可以使用这个基类来实现一个利用实际db实现的类。

代码语言:javascript
复制
  class DbClass extends DbRoot {
    constructor(tenant) {
      super(tenant);
    }

    public getUsers() {}
    public createUser() {}
    ...
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70242243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档