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



我试图理解微服务模式的布局。假设每个微服务都在自己的虚拟机上运行(举个例子),数据库如何适应这种架构?

每个服务是否依次连接到统一数据库以读写数据?

没有放之四海而皆准的解决方案。

一般原则是,每个微服务都应该根据正确的持久化架构应该是什么来为自己做出正确的决定。它可以连接到一个中央SQL数据库,或者它可以使用文件系统,或者它可以使用NoSQL数据存储,或者memcached,或者其他什么。(这就是为什么人们经常谈论微服务的最终一致性。)

你想这样做,以真正获得微服务的好处。

  1. 你希望每个微服务都可以独立发布,这样你就不会被任何东西阻塞。与集中式基础设施的强耦合降低了微服务的独立性。
  2. 持久性需求变化很大。如果您正在运行搜索微服务,则不需要典型SQL数据库的ACID语义。如果你在做支付,你需要ACID。如果您正在存储和处理图像,那么您可能只使用文件系统。等。

根据我处理mSOA的经验,最后总是涉及到数据仓库解决方案。如果每个微服务都有一个专用的DB(集群),这是很自然的选择。毕竟,企业应该能够使用该信息从你的领域。甚至Data Vault Modeling也很适合这里。

最新更新