我有一个我正在研究的套件,它有一些微服务工作。 我使用Docker来设置环境,效果很好。
我的项目组件如下:
正如您可能猜到的,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
任何输入都会有所帮助。
感谢。
答案 0 :(得分:1)
当然可以。 您需要做的是将公共文件放入卷中,并与两个节点容器共享此卷。
您应该设置一个数据卷,在其中放置您要共享的所有文件。有关此here或其他任何地方的更多信息,请使用Google搜索。 欢呼声。
答案 1 :(得分:1)
常见的意见如下:两个微服务不应共享相同的数据模型。有几篇关于它的文章以及与此主题相关的一些问题。
How to deal with shared models in micro service architectures
但是我觉得有些情况下你需要它并且可以接受。即使一切都是内部的,信任也是一种奢侈,因此必须考虑安全性和一致性。在启动任何进程之前,必须对任何传入对象进行规范化,验证和检查。这两个服务应该以相同的方式处理数据。
我用于API和共享模型的管理服务的解决方案: 我创建了3个存储库,一个用于API,一个用于Admin,第三个用于models目录。模型应该存在于两个存储库中,因此我将其添加为git子模块。无论何时在模式上更改某些内容,都应该单独提交,但我认为这是管理更改而不重复代码的最佳解决方案。