分布式一致性

缓存与数据库一致

缓存与数据库出现不一致,往往是因为主从同步延迟导致的,一种解决方案是,在写主库时,待主从同步完成后,再清除缓存,可以避免由于延迟导致从库的脏数据载入缓存,但是这样会延长更新操作的时长,影响更新效率,从而影响系统吞吐量。可以借助binlog或其它方式来异步清除缓存,或者在主库有更新,清除缓存后,从主库读取数据。

主从一致

主从不一致是主从同步延迟造成的,利用缓存可以防止读脏数据的问题。即通过缓存记录主库更新事件,事件过期时间设定为主从同步延迟的时间,(事件key可以用库、表、主键拼装)。当有读请求时,先读缓存看是否有主库更新事件,如果有则读主库,否则读从库。

双主一致

双主分两种情况,一种是双主并行作业,另一种是其中一个主作为备份。对于第一种情况,不一致主要是两台主库同时插入记录容易出现自增主键冲突的问题,解决方案是上游生成id避免冲突。第二种情况,出现不一致是因为切换到备份库时可能有同步延迟,解决办法是,用内网dns监测,在同步完成后再进行切换。

session一致

session一致性问题是在WebServer水平扩展的分布式环境下,从不同webserver读取到的session是否一致的。最佳的解决方案是,在后端用数据库或缓存统一存储,即将session存储在后端的存储层(数据库或缓存)中,这样webserver无论重启还是扩容,都不会造成session丢失。

相关推荐
小坏讲微服务1 小时前
Spring Boot整合Redis注解,实战Redis注解使用
spring boot·redis·分布式·后端·spring cloud·微服务·mybatis
liudongyang1233 小时前
麒麟系统离线安装Rabbitmq
分布式·rabbitmq
冰芒芒7 小时前
Kafka-2 Kafka的特点
分布式·kafka
KYumii9 小时前
RabbitMQ快速上手
分布式·rabbitmq
快乐的流畅9 小时前
iChat:RabbitMQ封装
分布式·rabbitmq·ruby
xie_pin_an9 小时前
RabbitMQ 从入门到实战:核心特性、应用场景与高级用法全解析
分布式·rabbitmq
艾斯比的日常9 小时前
Kafka Partition 深度解析:原理、策略与实战优化
分布式·kafka
serendipity_hky11 小时前
【微服务 - easy视频 | day04】Seata解决分布式事务
java·spring boot·分布式·spring cloud·微服务·架构
回家路上绕了弯12 小时前
服务器大量请求超时?从网络到代码的全链路排查指南
分布式·后端
陈辛chenxin13 小时前
【大数据技术06】大数据技术
大数据·hadoop·分布式·python·信息可视化