分布式微服务数据的所有权是去中心化的:如何实现复杂事务和高效查询
2022-09-30 本文已影响0人
robot_test_boy
许多单体应用在修改应用状态时依靠事务来保证一致性和隔离性的。要实现这两点很简单:应用通常只和单个数据库交互,使用支持启动、提交和回滚这些事务操作的框架来实现强一致性保证。
在微服务应用中,就没有这么幸运了。每个独立服务只负责特定的功能。数据的所有权是去中心化的,每个数据源只有一个所有者。这种层面的解耦有助于实现服务自治,但同时也牺牲了某些之前所具备的安全性,从而使得应用层面数据的一致性成为问题。数据所有权的去中心化还使得数据的获取变得更加复杂。
之前只需要在数据库层面进行关联的查询操作,现在需要调用多个服务才能实现。在某些使用场景中,这还是能够接受的,但是当数据集特别大时,这种方案就会变得非常麻烦。
每个微服务的可用性同样会影响我们的应用设计。服务间的交互可能会失败,导致业务流程受阻,最终使整个系统处于不一致的状态。
如何实现跨多个服务的复杂事务呢?有没有高效的数据查询方法?先抛出问题,后续慢慢学习。
摘取自 摩根·布鲁斯和保罗·A.佩雷拉的《微服务实战》