日期:
来源:千锋大数据收集编辑:数据
我们在架构设计中,经常会使用到缓存,例如REDIS,或者MEMcached。那么问题来了,怎么保证缓存和数据库中数据的一致性呢, 最近看了一篇Facebook的论文,下面是一个比较好的方案。
缓存适用场景:
1.用户查询数据的操作远大于更新和插入数据。
2.系统读取数据来自不同的数据源,比如MYSQL,HDFS。在一个大型的分布式系统中,Memcached or REDIS是很好的工具,本架构利用Memcached来构造一个分布式的key-value数据库,可以支持每秒数十亿次的访问请求。
缓存和数据库的一致性策略:
A.查询数据:
系统处理流程是:
1.用户向服务器请求数据
2.服务器先查询本地cache,如果存在,返回。否则,查询数据库。
3.如果数据库存在,更新本地cache,返回。
B.更新和写数据:
系统处理流程是:
1.用户写请求到服务器。
2.系统执行SQL到数据库。 同时发送删除请求到本地cache。选择直接删除,而不是更新操作,主要是为了保证幂等性。