Memcache Hash算法值得探索的内容

集团内部很多团队都使用Memcache 来提高应用性能,最近的一次工作汇报中提及了Memcache Hash 算法需要研究来满足一些需求,同时提高Memcache 的利用效率。讨论了一下最后自己总结了这么几点是对Hash 算法需要着重考虑的。

问题:

1.       存储数据如何均匀分散。如何把数据尽可能的散开存储,这样对于Memcache的可扩展性才会有充分利用,试想如果算法每次都会把数据定向到某几台机器,那么就会导致集群机器之间利用率的不均衡,无法发挥出集群效应。

2.       增减机器减小对原有数据存取的影响。由于业务量的增长势必需要对后端的服务器有所扩容,但是增加或者减少机器如何尽可能小的影响已有的缓存数据,这点直接影响业务处理以及应用的效率。

3.       提高Memcache效率。Memcache在压力测试下也会暴露出对于网络资源的消耗问题,毕竟也是网络间的Socket数据交互。

解决的一些思路和方法:

1.       Consistent Hashing是一种比较好的解决思路。可以参看一下:http://tech.idv2.com/2008/07/24/memcached-004/ 其中主要两个亮点就是稀释节点以及环状分区段管理。稀释节点就是将原来的节点再复制几十倍,使得离散度更高,数据更加分散。环状分区段管理,就能够将数据分区管理,在加入和减少节点时对数据产生影响最低,最好的类比就是解放前的地下工作者单线联系,如果被捕不会涉及到所有的地下党同志。

2.       集群的机器使用Memcache最好结合本地Cache,这里我们自己写了一个本地的类似于Memcache有超时时间Cache,两者结合一起使用缓存信息,在压力测试下提高了20%左右的性能。这里和我们的系统也有关系,我们对于Memcache有比较大的依赖,虽然已经对于每一个请求处理都防止重复获取信息,将必要信息放在线程上下文中,但是在运行期间还是会有不少的请求。

存储到Memcache中的数据类型:

1. 一次写入多次读,很少更新。这种数据系统启动以后构建,在非命中情况下不采用从后备数据源中获取数据来填充Memcache。(也是提高效率,同时防止一些攻击性的请求)

2. 多次写入多次读取。这类数据往往是在运行期被构建,非命中下会从后备数据源中获取,或者是某一种计算结果的缓存。

对于第一类数据来说,增加机器需要重新构建,如果采用分区分段,那么只需要构建某一部分的数据,或者是移动数据。对于第二类数据,增加机器如果采用简单的Hash算法也问题不大,最多存储多份,命中率降低,但是如果采用分区,也可以降低命中率下降的情况。

       这里只是抛出问题,后续如何解决请各位看官各抒己见了。当然这里自己也会考虑这方面的实现和设计。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Memcache是一个快速、高效的分布式内存对象缓存系统,常用于提高网站性能和减轻数据库负载。要安装Memcache,需要进行以下步骤: 1. 下载安装包:首先需要下载Memcache的安装包。可以在官方网站上找到最新的稳定版本,并选择与操作系统和服务器兼容的安装包。 2. 解压安装包:下载完成后,将安装包解压到任意目录。解压后的文件夹中应该包含了安装所需的文件和脚本。 3. 安装依赖库:在安装Memcache之前,需要确保系统中已经安装了相应的依赖库。常见的依赖库有libevent和libevent-devel,可以通过包管理器安装,如yum或apt-get。 4. 编译和安装:进入解压后的Memcache文件夹,在命令行中执行编译和安装命令。通常是执行./configure,然后执行make和make install命令。这些命令会编译和安装Memcache到系统中。 5. 配置和启动:安装完成后,需要进行一些配置和启动操作。可以编辑配置文件,设置Memcache的监听地址、端口号和缓存大小等参数。然后,启动Memcache服务,可以通过执行memcached命令或使用脚本启动。 6. 测试和验证:安装完成并启动Memcache后,可以进行一些简单的测试和验证工作。可以使用telnet或memcached客户端工具连接到Memcache服务器,并进行一些数据操作,如set、get等。 总结: Memcache的安装包实际上是一个压缩文件,包含了安装所需的文件和脚本。安装Memcache之前,需要确保系统已经安装了相应的依赖库。安装过程包括解压安装包、安装依赖库、编译和安装、配置和启动、测试和验证等步骤。安装完成后,可以使用telnet或memcached客户端工具连接到Memcache服务器,并进行数据操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值