searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

高并发架构系列:数据库主从同步的 3 种方案

2024-12-20 09:09:39
0
0

在高并发架构中,数据库主从同步是提升系统性能和可扩展性的重要手段。以下是数据库主从同步的三种常见方案:

一、半同步复制

  1. 原理
    • 主库在执行完客户端提交的事务后,不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。
    • 事务在主库写完binlog后,需要从库返回一个已接受信号,主库才将结果返回给客户端。
  2. 优点
    • 相对于异步复制,提高了数据的安全性。
    • 利用数据库原生功能,实现相对简单。
  3. 缺点
    • 增加了主库的写请求时延,吞吐量会降低。
    • 最好在低延时的网络中使用,以避免因网络延迟造成的性能瓶颈。
  4. 实现方式
    • 以MySQL为例,从MySQL 5.5开始,MySQL以插件的形式支持半同步复制。

二、数据库中间件同步

  1. 原理
    • 所有的读写操作都通过数据库中间件进行路由。
    • 写请求路由到主库,读请求路由到从库。
    • 记录所有路由到写库的key,在主从同步时间窗口内,如果有读请求访问中间件,且可能从库还是旧数据,就把这个key上的读请求路由到主库。
    • 主从同步时间过完后,对应key的读请求继续路由到从库。
  2. 优点
    • 能保证数据的一致性。
  3. 缺点
    • 数据库中间件的成本较高。
    • 增加了系统的复杂性。
  4. 实现方式
    • 常见的数据库中间件有MySQL Router(官方MySQL Proxy的替代方案)、Atlas(基于MySQL Proxy)、MaxScale、MyCat等。

三、缓存记录写key同步

  1. 原理
    • 如果key要发生写操作,先记录在cache里,并设置“经验主从同步时间”的cache超时时间(如500ms)。
    • 修改主数据库。
    • 读流程先到缓存里查看,对应key有没有相关数据。
      • 有相关数据,说明缓存命中,这个key刚发生过写操作,此时需要将请求路由到主库读最新的数据。
      • 如果缓存没有命中,说明这个key上近期没有发生过写操作,此时将请求路由到从库,继续读写分离。
  2. 优点
    • 相对数据库中间件,成本较低。
    • 读写操作较为灵活。
  3. 缺点
    • 为了保证一致性,引入了cache组件,增加了系统的复杂性。
    • 读写数据库时都多了缓存操作,可能影响性能。
  4. 实现方式
    • 可以使用分布式缓存如Redis来实现。

总结

在高并发架构中,选择哪种数据库主从同步方案需要根据具体的业务场景、性能要求、成本预算等因素进行综合考虑。半同步复制适用于对数据安全性要求较高且网络延迟较低的场景;数据库中间件同步适用于需要保证数据一致性且预算充足的场景;缓存记录写key同步则适用于成本预算有限且对性能要求较高的场景。

0条评论
0 / 1000
每日知识小分享
742文章数
7粉丝数
每日知识小分享
742 文章 | 7 粉丝
原创

高并发架构系列:数据库主从同步的 3 种方案

2024-12-20 09:09:39
0
0

在高并发架构中,数据库主从同步是提升系统性能和可扩展性的重要手段。以下是数据库主从同步的三种常见方案:

一、半同步复制

  1. 原理
    • 主库在执行完客户端提交的事务后,不是立刻返回给客户端,而是等待至少一个从库接收到并写到relay log中才返回给客户端。
    • 事务在主库写完binlog后,需要从库返回一个已接受信号,主库才将结果返回给客户端。
  2. 优点
    • 相对于异步复制,提高了数据的安全性。
    • 利用数据库原生功能,实现相对简单。
  3. 缺点
    • 增加了主库的写请求时延,吞吐量会降低。
    • 最好在低延时的网络中使用,以避免因网络延迟造成的性能瓶颈。
  4. 实现方式
    • 以MySQL为例,从MySQL 5.5开始,MySQL以插件的形式支持半同步复制。

二、数据库中间件同步

  1. 原理
    • 所有的读写操作都通过数据库中间件进行路由。
    • 写请求路由到主库,读请求路由到从库。
    • 记录所有路由到写库的key,在主从同步时间窗口内,如果有读请求访问中间件,且可能从库还是旧数据,就把这个key上的读请求路由到主库。
    • 主从同步时间过完后,对应key的读请求继续路由到从库。
  2. 优点
    • 能保证数据的一致性。
  3. 缺点
    • 数据库中间件的成本较高。
    • 增加了系统的复杂性。
  4. 实现方式
    • 常见的数据库中间件有MySQL Router(官方MySQL Proxy的替代方案)、Atlas(基于MySQL Proxy)、MaxScale、MyCat等。

三、缓存记录写key同步

  1. 原理
    • 如果key要发生写操作,先记录在cache里,并设置“经验主从同步时间”的cache超时时间(如500ms)。
    • 修改主数据库。
    • 读流程先到缓存里查看,对应key有没有相关数据。
      • 有相关数据,说明缓存命中,这个key刚发生过写操作,此时需要将请求路由到主库读最新的数据。
      • 如果缓存没有命中,说明这个key上近期没有发生过写操作,此时将请求路由到从库,继续读写分离。
  2. 优点
    • 相对数据库中间件,成本较低。
    • 读写操作较为灵活。
  3. 缺点
    • 为了保证一致性,引入了cache组件,增加了系统的复杂性。
    • 读写数据库时都多了缓存操作,可能影响性能。
  4. 实现方式
    • 可以使用分布式缓存如Redis来实现。

总结

在高并发架构中,选择哪种数据库主从同步方案需要根据具体的业务场景、性能要求、成本预算等因素进行综合考虑。半同步复制适用于对数据安全性要求较高且网络延迟较低的场景;数据库中间件同步适用于需要保证数据一致性且预算充足的场景;缓存记录写key同步则适用于成本预算有限且对性能要求较高的场景。

文章来自个人专栏
云电脑知识
276 文章 | 2 订阅
0条评论
0 / 1000
请输入你的评论
0
0