由于我正在努力理解某些工作的微服务架构模式,因此我遇到了以下问题:
总是说微服务通常有自己的数据库。但这是否意味着它必须始终位于同一服务器或容器上(例如,运行MongoDB和我的JAR的一个 docker容器)?或者这也意味着我的JAR在一台服务器上运行而我的MongoDB位于其他地方(例如两个容器)?
如果第一个是正确的(JAR 和数据库在一个容器中),我怎样才能在对我的应用程序进行一些更改后以及在我的新部署之后阻止它JAR我的MongoDB数据被重置(因为现在正在运行一个全新的容器)?
非常感谢: - )
答案 0 :(得分:2)
替代意见:
答案 1 :(得分:2)
首先,每个微服务应该有自己的数据库。
其次,没有必要也不建议将微服务及其数据库放在同一个容器中。
通常,单个微服务将具有多个用于扩展的部署,并且它们都连接到应该是差异的单个数据库实例。容器和如果使用像NoSql DB这样的东西它的数据库集群。
答案 2 :(得分:1)
是的,每个微服务应该有自己的数据库,如果任何其他微服务需要另一个微服务拥有的数据,那么他们使用微服务公开的API来做。 不,根本不需要让微服务及其数据库托管在同一台服务器上。例如 - 微服务可以在本地托管,其数据库可以像AWS DynamoDB或RDS一样存在于云中。