缓存优化过程当中的一些思考

最近一段时间在作双十一的优化,对于缓存的使用和改造渐渐有了一些思考,记录一下缓存

  • 缓存的使用、选择
    * 读简单,写复杂的业务最好放在写入端
    * 读复杂,写简单的业务逻辑放在读取端
    * 根据业务的类型,选择是使用集中式缓存仍是分布式的
    * key-value的规则
    * 基础的cache须要关注的事:替换策略等等。。。
  • 缓存致使的数据不一致,补偿措施
    * 对于集中式的缓存作补偿是比较容易的
    * 对于分布式的相对来讲比较麻烦,方案待考虑,TMD tair是怎么搞得,有同步机制补偿吗?感受不太对啊,TODO
  • 缓存并发写入的问题
    * 缓存也是有状态的序列化对象,必定要注意并发的问题,md上次统一调度的是否确认审核就出现了这个状况,too young too simple并发

  • 大促期间的控制
    * 失效时间
    * 预热数据量
    * 预热校验
    * 预热流程:好比说预热会不会致使下游服务击穿,是否会存在批量DB操做或者引起DB性能问题
    * 预热的并发数量控制
    * 批量预热等分布式

  • cache重建性能

  • 大批量缓存同时失效可能会致使缓存击穿率升高
    1. 缓存失效时间加一个随机数,避免同时失效
    2. 考虑是否须要失效后在作一下加载?看状况决定是否有必要,我感受大促不必
    3. 非关键链路应用加流控

并且具体的的缓存实现方式也颇有意思,看Guava的cache实现,使用了FutureTask的形式,这个设计四高一优化

相关文章
相关标签/搜索