缓存优化过程中的一些思考
2017-08-25 08:39
274 查看
最近一段时间在做双十一的优化,对于缓存的使用和改造渐渐有了一些思考,记录一下
缓存的使用、选择
读简单,写复杂的业务最好放在写入端
读复杂,写简单的业务逻辑放在读取端
根据业务的类型,选择是使用集中式缓存还是分布式的
key-value的规则
基础的cache需要关注的事:替换策略等等。。。
缓存导致的数据不一致,补偿措施
对于集中式的缓存做补偿是比较容易的
对于分布式的相对来说比较麻烦,方案待考虑,TMD tair是怎么搞得,有同步机制补偿吗?感觉不太对啊,TODO
缓存并发写入的问题
缓存也是有状态的序列化对象,一定要注意并发的问题,md上次统一调度的是否确认审核就出现了这个情况,too young too simple
大促期间的控制
失效时间
预热数据量
预热校验
预热流程:比如说预热会不会导致下游服务击穿,是否会存在批量DB操作或者引发DB性能问题
预热的并发数量控制
批量预热等
cache重建
大批量缓存同时失效可能会导致缓存击穿率升高
缓存失效时间加一个随机数,避免同时失效
考虑是否需要失效后在做一下加载?看情况决定是否有必要,我感觉大促没必要
非关键链路应用加流控
而且具体的的缓存实现方式也很有意思,看Guava的cache实现,使用了FutureTask的形式,这个设计四高一
缓存的使用、选择
读简单,写复杂的业务最好放在写入端
读复杂,写简单的业务逻辑放在读取端
根据业务的类型,选择是使用集中式缓存还是分布式的
key-value的规则
基础的cache需要关注的事:替换策略等等。。。
缓存导致的数据不一致,补偿措施
对于集中式的缓存做补偿是比较容易的
对于分布式的相对来说比较麻烦,方案待考虑,TMD tair是怎么搞得,有同步机制补偿吗?感觉不太对啊,TODO
缓存并发写入的问题
缓存也是有状态的序列化对象,一定要注意并发的问题,md上次统一调度的是否确认审核就出现了这个情况,too young too simple
大促期间的控制
失效时间
预热数据量
预热校验
预热流程:比如说预热会不会导致下游服务击穿,是否会存在批量DB操作或者引发DB性能问题
预热的并发数量控制
批量预热等
cache重建
大批量缓存同时失效可能会导致缓存击穿率升高
缓存失效时间加一个随机数,避免同时失效
考虑是否需要失效后在做一下加载?看情况决定是否有必要,我感觉大促没必要
非关键链路应用加流控
而且具体的的缓存实现方式也很有意思,看Guava的cache实现,使用了FutureTask的形式,这个设计四高一
相关文章推荐
- 项目过程中思考的一些优化点
- 对mysql的高并发优化配置的一些思考
- Android APP 性能优化的一些思考
- Codeigniter CI 框架的一些优化思考
- 关于改善管理过程的一些思考
- Android APP 性能优化的一些思考
- 对mysql的高并发优化配置的一些思考
- 关于面向过程编程的一些思考
- 写代码过程中一些优化的小技巧。
- Android APP 性能优化的一些思考
- 缓存设计的一些思考
- 缓存设计的一些思考
- 【原创】css3+jquery 实现横线跟随菜单-含详细优化过程和思考
- 优化复杂listview的一些思考
- 缓存设计的一些思考
- 缓存设计的一些思考
- 缓存设计的一些思考
- 《转》基于redis的缓存机制的思考和优化
- Hibernate使用过程中的一些优化措施