`
spartan1
  • 浏览: 361172 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

libmemcached的一致性hash算法

 
阅读更多

memcached的客户端用了一致性hash来定位每个服务器所在位置。

以libmemcached库为例,在memcached_server_by_key函数中,首先根据hashkit中指定的哈希算法从key中计算出一个哈希值来,然后根据如下算法,从所有的节点中找到一个离自己最近的节点:

如果哈希值在最后一个节点上,或在最后一个节点和倒数第二个节点之间的话,则返回第一个节点

否则返回哈希值后面里自己最近的一个节点。

代码:

      while (left < right)
      {
        middle= left + (right - left) / 2;
        if (middle->value < hash)
          left= middle + 1;
        else
          right= middle;
      }
      if (right == end)
        right= begin;
      return right->index;

 这个算法很奇怪,没有看懂,明天继续分析

分享到:
评论

相关推荐

    高运算性能,低碰撞率的hash算法MurmurHash算法.zip

    MurmurHash算法由Austin Appleby创建于2008年,现已应用到Hadoop、libstdc 、nginx、libmemcached,Redis,Memcached,Cassandra,HBase,Lucene等开源系统。2011年Appleby被Google雇佣,随后Google推出其变种的...

    libmemcached VC9版本

    libmemcached 库 求php_memcached.dll 库 嗯不是php_memcache.dll哈。 别搞错了。

    libmemcached-win32

    终于找到一个可以用vc2008编译的libmemcached了。因为给朋友弄个ASP的memcache客户端,所以需要win32平台的memcache client,之前找到一个完全针对win32平台,但测试后性能实在一般,还是去找libmemcached,费了很大...

    libmemcached使用、测试及修改用例

    内含: libmemcached c/c++ ...在网络上查找了很久,基于C/C++的使用例子很少且简单,也并不能支持dead server的自动隔离和自动重连(源码存在些许“瑕疵”),对源码的修改涉及很少,对库的可靠性等并没有什么影响。

    libmemcached

    limemcached包,可在windows下编译

    libmemcached-1.0.17.tar.gz

    php有两个版本的memcache扩展,这个是memcached的扩展,安装memcached扩展的时候需要一个类库,这个就是所需要的依赖类包libmemcached

    windows下libmemcached

    windows下通过vs2008编译的libmemcached,生成.lib,.dll等文件,找了好久,附带生成的动态库,吧.lib文件加载到工程中即可,注意程序中memcached.h文件的位置

    libmemcached-0.34.tar.gz

    在安装时试验了很多版本,如0.42,,051,0.53,1.1.2,1.0.14等都有安装问题,而此libmemcached-0.34是极好的。

    libmemcached-win-yshurik-win.rar

    windows 版本libmemcached源码及库文件,需要vs2015打开编译,低版本没试过 本人用Qt实现的,具体实现还是比较简单

    libmemcached0.43patch

    Fix libmemcached0.43会导致hang的bug

    php-memcached, 基于libmemcached库的memcached扩展.zip

    php-memcached, 基于libmemcached库的memcached扩展 插件生成状态 描述这是的扩展,使用libmemcached库连接到memcached服务器。是一种性能高。分布式内存对象缓存系统,一般用于在加速数据库负载的情况下加速动态web...

    hiredis与libmemcached的测试代码

    hiredis与libmemcached的测试代码

    linux版本下memcached+libmemcached

    在redhat5下测试过,可以使用的memcached,而且libmemcached也经过测试(c++版本的memcached api),还附赠一份代码

    windows 版本libmemcached运行库及相关头文件

    windows版本libmemcached库,可以直接在windows上运行,及相关头文件,将库放到相应目录下,同时包含相应头文件即可

    libmemcached-0.42.tar.gz

    php有两个版本的memcache扩展,这个是memcached的扩展,安装memcached扩展的时候需要一个类库,这个就是所需要的依赖类包libmemcached

    libmemcached && libmemcached-devel-1.0.16.zip

    libmemcached && libmemcached-devel-1.0.16.zip

    libmemcached_chang

    memaslap不能安装问题,修改过的代码

    libmemcached-1.0.18-17.el8.aarch64.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

Global site tag (gtag.js) - Google Analytics