繁体   English   中英

了解微服务架构

[英]Understanding Microservice Architecture

由于我正在努力理解微服务架构模式的某些工作,因此遇到了以下问题:

人们总是说微服务通常有自己的数据库。 但这是否意味着它总是必须位于同一服务器或容器上(例如,拥有一个运行MongoDB和我的JAR的docker容器)? 还是这还意味着在MongoDB位于其他位置(例如两个容器)的同时,我的JAR在一台服务器上运行?

如果第一个是正确的( 一个容器中的JAR 数据库),那么在对应用程序进行一些更改之后以及在重新部署我的JAR之后,如何防止MongoDB的数据重置(因为现在正在运行一个新的容器),我该如何防止)?

非常感谢:-)

替代意见:

  • 在现实生活中的99%的情况下,您必须有一个运行数据库和应用程序的容器,应该将它们分开,因为一个(db)保持状态,而另一个(app)应该是无状态的。
  • 您不需要用于微服务的单独数据库,通常,单独的架构已绰绰有余(例如,您不想为每个微服务部署单独的Exadata :)。 重要的是,只有此微服务才能读取和写入并修改给定的表,其他人只能通过微服务公开的接口在这些表上进行操作。

首先,每个微服务都应该有自己的数据库。

其次,没有必要也不建议将微服务及其数据库放在同一容器中。

通常,单个微服务将具有用于扩展的多个部署,并且它们都连接到应为差异的单个数据库实例。 容器,如果使用NoSql DB之类的东西,它就是数据库集群。

是的,每个微服务都应该有自己的数据库,如果任何其他微服务需要另一个微服务拥有的数据,那么它们将使用微服务公开的API来进行处理。 不,完全不必将微服务及其数据库托管在同一服务器上。 例如-微服务可以托管在内部,其数据库可以存在于AWS DynamoDB或RDS之类的云中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM