分布式缓存的25个优秀实践与线上案例.docx

想预览更多内容,点击预览全文

申明敬告:

本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己完全接受本站规则且自行承担所有风险,本站不退款、不进行额外附加服务;如果您已付费下载过本站文档,您可以点击这里二次下载

文档介绍

?

? ? ? ?

? ? ?

分布式缓存的25个优秀实践与线上案例

? ? ? ?

?

?

?

?

?

?

? ? ?

? ? ?

? ? ?

?

?

?

杨彪,蚂蚁金服技术专家,《分布式服务架构:原理、设计与实战》和《可伸缩服务架构:框架与中间件》作者。近10年互联网和游戏行业工作经验。

本文节选自即将出版的《可伸缩服务架构:框架与中间件》一书,作者:李艳鹏、杨彪、李海亮、贾博岩、刘淏。

本文主要介绍使用分布式缓存的优秀实践和线上案例。这些案例是笔者在多家互联网公司里积累并形成的优秀实践,能够帮助大家在生产实践中避免很多不必要的生产事故。

一、缓存设计的核心要素

我们在应用中决定使用缓存时,通常需要进行详细的设计,因为设计缓存架构看似简单,实则不然,里面蕴含了很多深奥的原理,如果使用不当,则会造成很多生产事故甚至是服务雪崩之类的严重问题。

笔者在做设计评审的过程中,总结了所有与缓存设计相关的设计点,这里列出来供大家参考。

1、容量规划

缓存内容的大小

缓存内容的数量

淘汰策略

缓存的数据结构

每秒的读峰值

每秒的写峰值

2、性能优化

线程模型

预热方法

缓存分片

冷热数据的比例

3、高可用

复制模型

失效转移

持久策略

缓存重建

4、缓存监控

缓存服务监控

缓存容量监控

缓存请求监控

缓存响应时间监控

5、注意事项

是否有可能发生缓存穿透

是否有大对象

是否使用缓存实现分布式锁

是否使用缓存支持的脚本(Lua)

是否避免了Race Condition

笔者在这里把这些设计点提供给读者,请读者在做缓存设计时把每一项作为一个思考的起点,思考我们在设计缓存时是否想到了这些点,以避免在设计的过程中因忽略某一项而导致严重的线上事故发生。

二、缓存设计的优秀实践

笔者在做设计评审的过程中,总结了一些开发人员在设计缓存系统时的优秀实践,如下所述:

优秀实践1

缓存系统主要消耗的是服务

最近下载