您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
memcached-分布式之取模算法的缺陷
发布时间:2017-11-22 17:38:03编辑:雪饮阅读()
分布式取模算法原理:
memcache基于内存的数据存储,所以一旦服务器崩溃了。数据将会丢失。
一般用来存储非重要数据。但即使如此也要尽量保证数据的完整性。
做分布式部署可以提高数据的完整性,但如果部署的不合理则适得其反。
这也是接下来要讨论的命中率问题。
以8个memcache服务器部署为例。
当有多个memcache服务器时使用分布式取模算法进行存储时会先获取key的int值(int值的产生不在本次讨论中,有各种方法产生的,因需求而异)。
获取key的int值后与memcached服务器数量进行取余。
假定memcached服务器的下标从0开始,则8个服务器下标就是0-7。
将取余结果做为即将要用来存储本次key的memcached服务器的下标。
而当取key的时候也是同理。
那么问题来了,如果存储一个key时该key的int值是8,那么余数为0,此时将会存储到0下标的memcached服务器中。当其中一台服务器崩溃后,要取该key时该key与7取余则下标为1号的服务器。但原来存储时小于7的则仍旧可以,即0-6也就是说当一个服务器崩溃后只有7个可以命中。另外还有一个特殊的就是7x8=56.
即命中率为(n-1)/n*(n-1)
那么当服务器越多时命中率就会越低的。
关键字词:memcached,分布式,算法,缺陷