在微服务之间共享代码

时间:2016-07-04 08:09:23

标签: node.js docker architecture

我有一个我正在研究的套件,它有一些微服务工作。 我使用Docker来设置环境,效果很好。

我的项目组件如下:

  • MongoDB的
  • 对数据库进行一些处理的Node.js工作者
  • 为用户提供服务的Node.js Rest API

正如您可能猜到的,2个Node.js服务器假设使用相同的数据库。 现在我已经在其中一个项目中定义了我的模型,但是我想知道在处理第二个项目时最好的做法是什么。 我真的很想避免复制粘贴我的代码,因为这意味着当我对Schema进行更改时,我必须保持它们都是最新的。 有没有一种很好的方法来分享它们之间的代码?

我的项目如下:

rest-api // My first Node.js application
    models
        MyFirstModel.js // This is identical to the one in the worker/models folder
        MySecondModel.js
    index.js
    package.json
    Dockerfile
worker // My second Node.js application
    models
        MyFirstModel.js
        MySecondModel.js
    index.js
    package.json
    Dockerfile
docker-compose.yml

任何输入都会有所帮助。

感谢。

2 个答案:

答案 0 :(得分:1)

当然可以。 您需要做的是将公共文件放入卷中,并与两个节点容器共享此卷。

您应该设置一个数据卷,在其中放置您要共享的所有文件。有关此here或其他任何地方的更多信息,请使用Google搜索。 欢呼声。

答案 1 :(得分:1)

常见的意见如下:两个微服务不应共享相同的数据模型。有几篇关于它的文章以及与此主题相关的一些问题。

How to deal with shared models in micro service architectures

但是我觉得有些情况下你需要它并且可以接受。即使一切都是内部的,信任也是一种奢侈,因此必须考虑安全性和一致性。在启动任何进程之前,必须对任何传入对象进行规范化,验证和检查。这两个服务应该以相同的方式处理数据。

我用于API和共享模型的管理服务的解决方案: 我创建了3个存储库,一个用于API,一个用于Admin,第三个用于models目录。模型应该存在于两个存储库中,因此我将其添加为git子模块。无论何时在模式上更改某些内容,都应该单独提交,但我认为这是管理更改而不重复代码的最佳解决方案。