序言

    敌方还有三十秒抵达战场。。。


    我方水晶正在被***。。。

闲扯缓存

    缓存有各种各样的构建方式,缓存也有各种各样的组建,缓存也有各种各样的规则,而这些的本质原因在于。。。为什么要使用缓存?


    你没用过,你怎么知道有什么问题???这句话一出,是挑战,也是机遇,相当有趣。。。


    为什么要用缓存?互联网时代,看看各大应用,微博,微信,今日傻子,都是读多写少的应用,根据八二法则,可能百分之八十的人都是刷刷刷,不会产生内容,而百分之二十的人才会去写入内容,所谓的UGC内容。。。


    持久化应用,都是使用mysql,而对于读请求的压力的分担,可以采用各种各样的方式,可以拆库,可以拆表。。。当性能还是不能满足的时候,那么就可以构建缓存系统,来分担读请求的压力。。。提高性能,从缓存开始。


    缓存的组件有很多种,例如memcache,例如redis,构建缓存系统也有各种各样的方式,可以使用redis的主从,可以使用redis的sentinel模式,也可以使用redis的cluster架构,也可以自主开发ha模块。。。


    运维的关注点在于,如何构建缓存系统,如何将缓存系统做成高可用,高性能,高扩展,而这些。。都有成熟的案例可以使用。。。每样都有其适应的场景。


    运维的观点是:我给你一个缓存,你爱怎么用怎么用,你跑什么业务,你存什么样的数据我不关心。。。我只保证可靠,可用,性能。。。


    我就是我,不一样的花火。。。啊呸,不能给出合理策略的组件都是耍流氓,所以,偶尔站在开发的角度来看看这个问题。。。


    开发的观点:我有一个缓存系统,我使用什么客户端?jedis?我需要缓存什么样的数据?sql的执行结果?我怎么缓存?我的缓存的key是什么样的?数据一致性怎么解决?缓存怎么刷新?缓存系统崩塌了怎么办?业务降级?缓存雪崩怎么处理?缓存穿透怎么处理?缓存热点怎么处理?缓存的监控怎么做?缓存的预热怎么做?缓存的持久化机制怎么玩。。。。


    o,no。。。。到处都是问题。。。。那么采取什么样的策略来解决这些问题?


    我不但给你一个缓存系统,而且我需要建议你怎么来使用这个缓存系统。。。


    不想关注业务,是因为懒。。。


    那么是什么逼迫你必须去关注业务呢?那一句话就是,你没用过,你怎么知道会碰到什么问题。。。demo?benchmark?也是有很多途径。。。


    而最主要的原因在于:别人一个团队做的事,而我需要一个人解决。。。别人分为各种自动化开发小组,别人分为云平台小组,别人分为中间件小组,别人分为数据库小组。。。。而我能怎么样,想一个人打一个团咯。。。


    我一直很疑惑为什么要看源码,看源码的价值在哪里。。。而昨天,我发现了看源码还是有部分价值的,当你碰到无法解决的问题,当你碰到那些傻逼无法用baidu解决的问题的时候,就需要看源码了。。。不看,你根本不知道内部实现的机制。。。以讹传讹了解一下。。。。


    嘴角的鬼魅一笑,你懂我也懂,其实还是很有意思的,这。。。是一种挑战,也是一种机遇。。。还是相当有趣好玩的。。。


    一万种缓存方案,为何选中哪一种?基于什么样的考虑。。。还是因为确认了眼神,是对的人???


    怎么解决缓存穿透?预算好了TPS,为何还出现了缓存穿透让数据库不堪重负?是因为缓存数据的问题?缓存的数据key和value过大导致了网络拥堵?还是因为缓存热点在一台缓存服务器上导致缓存集群没有发挥作用分担压力?


    其实,所有最有趣的东西是一个整个的流程。。。我有一个缓存,我要怎么使用他?我要怎么构建他?我需要采取哪些策略来规避问题。。。我需要采取哪些方法来保障。。。


    换一个角度,从运维的角度,只关注缓存系统的构建,保障,从开发的角度,只关注如何来使用缓存系统,从架构的角度,需要看到如何构建高性能,高可用,高扩展,安全等方方面面的问题。。。。我眼瞎,我不懂,我没用过,所以我就不知道了么???


    测试性能?写一个demo并发就好了,好像也不是很难,并不需要说专业的来进行测试。。。

    测试性能?也有各种方法来进行测试,可以从不同的粒度和纬度来进行测试,例如key对应的value值的大小。。。例如打造key的规则


    缓存系统,可以共用,也可以单独使用,可以standalone,也可以cluster,各种各样的模式。。。哪一种最好?并没有最好的,只能有最合适的。。。从当前的环境出发,用能掌控的那种是最好的。


结论

   1  接受挑战是一件很好玩的事情,她能打破你的思维盲点。


    2  能被挑战也是一件很有乐趣的事情,因为只有被挑战,才能感觉到难度,才会有兴趣


    3  得到就珍惜,得不到呢?也要珍惜。。。


    4  拆散是一种状态,合并也是一种状态。。。将缓存系统隔离出去,是一件好玩的事儿,将缓存系统纳入一个更大系统中,是一件更有挑战并好玩的事儿


    5  给你一个redis,你能怎么玩?搭建一个主从?搭建一个HA?搭建一个cluster?测试读写性能?缓存一些数据demo?后台线程同步保存缓存一致性?延伸到nginx的缓存?延伸到CDN的缓存?。。。你的思维有多发散。。这个世界就有多大。。。风的思维了解一下。。。


    6 挑战。。。能激发极大的乐趣。。。。我喜欢

    

    打字机陈慧琳 - Watch Me


    Watch me。。。Watch me。。。Watch me。。。这个歌名配上这个标题,完美。。。

   

    缓存,不可能的。。。这一辈子都不可能用上。。。我就不缓存,我就要打穿数据库,看看数据库宕机与否。。。哈哈


©著作权归作者所有:来自51CTO博客作者mb5fdb131956bf3的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 如何做好一件事
  2. Win10系统怎么添加LOOPBACK环回接口呀?
  3. linux系统中普通用户获取root权限
  4. 第十周作业
  5. 如何让学到的运维知识系统化?
  6. Mac系统上查看端口占用和释放端口教程
  7. 第14章 0301-实战会话控制技术,(项目实战:主页登录、用户注册 + 整
  8. 第13章 0225-PDO操作数据库技术,学习心得、笔记(员工管理系统(mysql
  9. 更新上一个员工管理系统并为其加上登录验证功能

随机推荐

  1. Android: QQ UI 设计
  2. android studio查看genymotion模拟器上文
  3. Android Framework---styles.xml
  4. adb下载
  5. Android可拖动的ImageView
  6. Android实现主动连接蓝牙耳机
  7. Android改变Spinner弹出框的位置
  8. android的service
  9. Android自动化测试之MonkeyRunner之Monke
  10. [Android][HTC]HTC Android Reboot Comma