Web services 微服务模式/体系结构中的数据库

Web services 微服务模式/体系结构中的数据库,web-services,rest,design-patterns,microservices,Web Services,Rest,Design Patterns,Microservices,我试图理解微服务模式的布局。考虑到每个微服务都将在其on-VM上运行(举例来说),数据库如何适应这种体系结构 每个服务是否会依次连接到整合数据库以读取/写入数据 感谢您在我处理mSOA的经验中提供的任何见解,它最终总能找到解决方案。如果每个微服务都有一个专用的DB(集群),那么这是一个自然的选择。毕竟,企业应该能够使用来自您的域的信息。即使在这里也很合适 没有一刀切的解决方案 一般原则是,每个微服务都应该根据正确的持久性体系结构为自己做出正确的决策。它可能连接到一个中央SQL数据库,或者它可能使

我试图理解微服务模式的布局。考虑到每个微服务都将在其on-VM上运行(举例来说),数据库如何适应这种体系结构

每个服务是否会依次连接到整合数据库以读取/写入数据


感谢您在我处理mSOA的经验中提供的任何见解,它最终总能找到解决方案。如果每个微服务都有一个专用的DB(集群),那么这是一个自然的选择。毕竟,企业应该能够使用来自您的域的信息。即使在这里也很合适

没有一刀切的解决方案

一般原则是,每个微服务都应该根据正确的持久性体系结构为自己做出正确的决策。它可能连接到一个中央SQL数据库,或者它可能使用一个文件系统,或者它可能使用NoSQL数据存储,或者memcached,或者其他任何东西。(这就是人们谈论很多微服务的原因。)

您希望通过这种方式真正获得微服务的好处

  • 您希望每个微服务都是可独立交付的,这样您就不会受到任何阻碍。与集中式基础架构的更强耦合降低了微服务的独立性
  • 持久性需求是高度可变的。如果运行的是搜索微服务,则不需要典型SQL数据库的ACID语义。如果你在付款,你需要酸。如果您正在存储和处理图像,您可以只使用文件系统。等等

  • 谢谢@rdl。我是在“整合数据库”时代长大的,人们总是告诉我,存储的中心形式才是最好的选择。使用微服务,我有效地将整合的数据库分解为X个不同的存储单元。某些SQL查询需要跨大量表进行联接。如果为每个服务使用独立的数据存储,这似乎是不可能的。想法?你需要注意每个微服务的边界,以及它的功能。(在域驱动设计中,您需要定义“有界上下文”。)您应该设计每个微服务,使其成为一个自包含的实体,而不需要跨不同的数据库进行连接。在有一个规范化数据存储的情况下,您也会得到很多非规范化,并且来自该数据存储的数据会被选择性地传播。