​​

14-63 剑和诗人37 - 分布式系统中的数据访问设计

在分布式系统中,跨服务和数据库提供统一、可靠的数据访问至关重要,但又极具挑战性。微服务和数据库的拓扑结构为分布、缓存、复制和同步带来了复杂性。

让我们探索有助于解决这些复杂性并简化构建强大、高性能分布式系统的常见数据访问模式。

14-63 剑和诗人37 - 分布式系统中的数据访问设计

概述

我们将通过示例介绍以下分布式数据访问模式:

  • 每个服务都有数据库
  • 共享数据库
  • 每个区域的数据库
  • CQRS 和事件源
  • Saga 模式
  • API 组成
  • 缓存
  • 物化视图
  • 复制
  • 联邦
  • 多语言持久性
  • 多数据中心复制

这些模式有助于构建数据库拓扑、有效缓存、同步更改、处理故障和扩展数据访问。

让我们更详细地了解每种模式。

每个服务都有数据库

每个服务数据库模式为每个微服务提供其自己的私有数据库。

例如,订单服务有自己的订单数据库。客户服务有自己的客户数据库。

好处:

  • 解耦——服务不依赖于共享模式或数据库
  • 所有权——明确所有权,因为每个服务都管理其数据库
  • 规模——数据库可以根据服务需求独立扩展
  • 简单性——避免数据库共享,使协调更简单

缺点:

  • 数据隔离——跨服务交易和查询执行起来更加困难
  • 一致性——如果同步不正确,服务之间的数据就会不一致
  • 开销——管理多个数据库的运营开销更高

用例:

  • 微服务采用的早期阶段
  • 不共享数据的简单 CRUD 服务
  • 服务团队希望完全控制数据

这种模式提供了一条解耦服务的快速途径,但通常会随着时间的推移而发展,以允许更好的数据共享。

共享数据库

通过共享数据库模式,服务可以共享对单个逻辑数据库的访问权限。

例如,多个服务通过不同的模式访问 Oracle 数据库中的同一个客户表。

好处:

  • 简单——避免数据库之间复杂的数据同步和访问
  • 一致性——与数据库事务的强一致性
  • 已建立— 利用经过验证的 RDBMS 特性,如事务、索引、授权

缺点:

  • 紧密耦合

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部