ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] ## 原理 通过主节点(Master)向从节点(Slave)同步数据,主节点处理写操作,从节点同步数据并分担读请求,实现读写分离和高可用。 ## 过程 1. 全量同步 - 从节点主动向主节点发出SYNC指令,主节点生成RDB快照并发送给从节点。从节点收到RDB快照并写入RDB文件,再加载RDB文件。 2. 增量同步 - 完成全量复制后,主从服务器之间会保持一个TCP连接,主节点将后续写命令实时写入复制流,从节点异步执行这些命令,保持数据最终一致。 ## 可用性 当主节点故障时,需手工选择准备升主的从节点,将其他从节点的主节点指向新的主节点,配置客户端将写操作指向新的主节点 ## 缓存雪崩 **原因** 缓存节点宕机或大量缓存数据集中过期,导致数据库请求激增 **解决方案** 1. 缓存过期时间随机化:为缓存设置随机的过期时间,避免大量缓存同时过期导致的流量峰值。可以在原有的过期时间基础上增加一个随机范围,从而使缓存过期时间分散开来。 1. 缓存永不过期:对于一些热点数据,可以设置缓存为永不过期,定期通过后台程序进行更新。 1. 分布式锁:使用互斥锁机制,在缓存失效的瞬间,只有一个线程能够查询数据库并更新缓存,其余线程等待锁释放后再读取缓存。 1. 采用多级缓存策略:在本地缓存(如Caffeine)和分布式缓存(Redis)之间再加一层缓存,从而减少对分布式缓存和数据库的直接访问。