微服务数据管理:从集中式到分布式的转变
1. 引言
在大多数业务场景中,服务逻辑通常构建在持久层之上,数据库常被用作持久层,作为特定服务的记录系统。微服务作为自主实体,应能控制其操作的数据层,这意味着微服务不能依赖其他实体拥有或共享的数据层。因此,在构建自主服务时,每个微服务都需要一个独立的持久层。本文将探讨将基于集中式或共享数据库的企业应用程序转换为基于分布式数据库的微服务的常用模式和最佳实践。
2. 单体应用与共享数据库
2.1 集中式共享数据库的优势
在基于单体应用和服务的企业架构中,多个应用和服务通常共享一个或几个集中式数据库。例如,零售系统的所有服务共享一个集中式数据库(Retail DB),通过该数据库集中管理与产品、客户、订单、支付等相关的所有信息。
集中式共享数据库使应用程序更易于组合多个表的数据并形成不同的业务表示。强大的查询语言(如 SQL)天生支持共享数据和构建不同数据组合所需的所有功能。例如,使用 SQL 可以在各种复杂条件下连接多个表,创建不同实体的复合视图。
在处理共享业务实体时,以事务方式实现它们之间的业务交互非常重要。事务是一个原子工作单元,要么成功要么失败。事务的关键特性被称为 ACID,即原子性(对数据的所有更改都作为一个单一操作执行)、一致性(事务开始和结束时数据处于一致状态)、隔离性(事务的中间状态对其他事务不可见)和持久性(事务成功完成后,对数据的更改会持久化,即使在系统故障的情况下也不会撤销)。集中式数据库使跨多个实体的 ACID 事务变得非常容易,在关系数据库中,每个 SQL 语句都必须在事务的范围内执行,因此建模涉及多个表的复杂事务场景相当简单,大多数关系数据库管理
超级会员免费看
订阅专栏 解锁全文
23

被折叠的 条评论
为什么被折叠?



