如何构建高性能web站点之:分布式缓存

有效的方法是取余运算,就像是打扑克时的发牌,让所有的数据项按照一个顺序在不同的缓存服务器上轮询,这样可以达到一个较好的均衡。
举个例子:
取余之前,我们要做一些准备工作,目的是让key变成整数,而且尽量唯一,比如这个key是:jessonlv-1986.htm
我们先对它进行md5运算,得到一个32字节的字符串比如是:e6e87fc57lkji1245lki1547iuhgt632,同时也是一个十六进制的长整数,为了计算开销,我们取这个字符串的前5个字节,然后将其转化为十进制数:比如945689,这个时候我们再将这个数字进行“模3”的运算。取余的结果就是我们服务器的编号,服务器的编号从0开始。
这里有个问题也许你一直在思考,那就是我们扩展缓存系统后,由于分区算法的改变,会涉及缓存数据需要从一台缓存服务器迁移到另一台缓存服务器的问题,如何迁移呢?事实上,根本不需要考虑迁移的问题,因为是缓存,它应该具备关键时刻牺牲自己的勇气,你必须明白缓存不是持久性存储,并且从引入分布式缓存时就得时刻提醒自己。
没错,当调整缓存区算法后,我们需要时间来等待缓存的重建和预热,但这往往并不影响站点的正常运转,前提是你要按照文章前面堵缓存和写缓存的设计理念来进行设计。。。

Tagged: , , , ,

Comments are closed.