本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
常见问题
本部分提供关于在微服务中启用数据持久性的常见问题解答。
作为现代化之旅的一部分,我何时可以对单体数据库进行现代化改造?
当您开始将单体应用程序分解为微服务时,便可以专注于对整体数据库进行现代化改造。请务必创建一项策略,将数据库拆分为多个与应用程序相匹配的小型数据库。
我能否为多项微服务保留一个原有的单体数据库?
为多项微服务保留一个共享的单体数据库会产生紧密耦合,这意味着您无法独立部署对微服务的更改,并且所有架构更改都必须在微服务之间进行协调。尽管您可以将关系数据存储作为单体数据库使用,但对于某些微服务来说,NoSQL 数据库可能是更好的选择。
在为微服务架构设计数据库时,我应该考虑哪些因素?
您应该根据与应用程序功能相一致的域来设计应用程序。请务必评估应用程序的功能,并决定其是否需要关系数据库架构。如果 NoSQL 数据库符合您的要求,您还应该考虑使用该数据库。
维护不同微服务间数据一致性的常见模式是什么?
最常见的模式是使用事件驱动架构
如何保持事务自动化?
在微服务架构中,一个事务由不同的微服务处理的多个本地事务组成。如果本地事务失败,则需要回滚此前完成的成功事务。您可以使用 Saga 模式 来避免这点。
我是否必须为每项微服务使用单独的数据库?
微服务架构的主要优点是松耦合。每项微服务的持久数据均必须保密,并且只能通过微服务的 API 进行访问。如果您的微服务共享同一个数据库,则必须仔细评估对数据架构的更改。
如果微服务的持久数据共享一个数据库,我该如何将其保密?
如果您的微服务共享关系数据库,请确保为每项微服务设置私有表。您还可以创建各项微服务专用的单独架构。