关于如何使用内存擦车的

也学人家来一次标题党,其实就是如何使用memcached,对不起,我使用的是中英文混合翻译法。这里讨论的问题不是针对memcached,实际上是通用的缓存策略。

 

前两天,公司技术部群里,大家针对如何使用cache服务器进行了一次热烈的讨论。事情起因是因为对一组cache服务器的维护导致了前台应用的报警。大家讨论很热烈,经过多次发散和收敛,大致的观点有几种:

*cache应该是可有可无的,cache的存在只是为了提高应用的性能的

*cache有时候相当重要,必要的时候,我们需要为cache做mirror copy,fail over,互相同步保证一致性等等,来提高其可用性,而且还有产品规划了上述功能

*有时候应该对cache做warm up,在cache服务器起来的时候,应该做一些数据的初始化,前提当然是实现通过统计能识别出哪些数据是热点,需要warm up的

*在有的应用场景,cache非常重要,比如说数据库复杂sql的结果缓存,这时候实际上cache挂掉的时候,后端的数据库是顶不住的

*有的观点比较实在,强化我们的cache客户端,做更多的容错策略,来保证可用性

*领导的意见很简单,重视这个问题,制定使用的指导方针,推广下去

 

从上面的讨论来看,很多问题其实都很有代表性。以下是我的一些看法:

 

*正如大师(公司里的一大牛)说的,首先要明确这个“神”:

  一是应用要在cache失效的时候能正常工作(至少功能正常,不能挂掉,最多性能稍差),

  二是cache不要存在单点,或者说单点的失败不会导致整个应用失败。

  大师的观点非常精炼,完全可以作为cache使用的指导方针列出来,没什么好评论的。

 

*如何提高cache服务的可用性?

这个争论的很多。有的说要复制、要一致性保证,服务器要2N的策略,我觉得这是盲目的夸大了cache的重要性,在目前阶段,cache不应该成为系统的关键点,只是为了提高性能的一个手段而已。

 

还有一种改进策略,2N太浪费,而且也不是能绝对保证可用性,可以使用N+n(n<<N)来替代,只要做好容错策略,可用性完全可以很好的保证,在有的场景下,比如N比较大,比如说10,使用N+0都可以,因为就算一台挂掉了,后端服务也只需要承受10%的压力而已。

 

很明显,从措辞上来看,我就是赞同第二中观点的。

 

*领导就是领导

领导看问题的角度就是不一样,讨论这么多,还是要落到实处,明显站的高一点,这是很需要学习的一种思维方式。

 

#end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值