`
spartan1
  • 浏览: 365114 次
  • 性别: 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;

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

分享到:
评论

相关推荐

    C/C++ 一致性hash算法

    一致性哈希算法是一种分布式哈希(Distributed Hash Table, DHT)技术,它在处理大量数据分布到多个节点上时,能保持较好的均衡性和可扩展性。在C/C++编程中,一致性哈希通常用于构建分布式系统,如负载均衡、缓存...

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

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

    libmemcached

    2. **分布策略**:通过一致性哈希(Consistent Hashing)等算法,libmemcached 可以将数据智能地分发到多个 memcached 服务器,确保在添加或移除服务器时尽量减少数据迁移。 3. **内存管理**:libmemcached 能够...

    libmemcached-1.0.17.tar.gz

    libmemcached的设计目标是提供高效、灵活且易于使用的接口,支持Memcached服务器的多种功能,包括分布式哈希、一致性哈希、ketama一致性策略等。它还具有自动序列化和反序列化、连接池管理、智能缓存失效策略等功能...

    libmemcached-0.34.tar.gz

    1. **分布式哈希**:libmemcached使用一致性哈希算法,确保数据在多台Memcached服务器上的均匀分布。 2. **自动服务器发现**:当新的Memcached服务器加入或现有服务器下线时,libmemcached能自动识别并调整其连接。 ...

    windows下libmemcached

    在实际使用中,需要考虑并发性、数据一致性、错误处理等问题。 7. **编程接口**:`memcached.h`头文件包含了libmemcached的所有API,开发者可以通过这些接口与memcached服务器进行交互,如`memcached_server_list_...

    libmemcached VC9版本

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

    libmemcached-win-yshurik-win.rar

    《Windows环境下libmemcached的构建与应用》 libmemcached是一款高效的C语言库,专为在分布式内存存储系统中操作键值对而设计,最常用于与Memcached服务器交互。这个压缩包“libmemcached-win-yshurik-win.rar”...

    libmemcached-win32

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

    libmemcached使用、测试及修改用例

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

    libmemcached_chang

    当安装或更新memslap时,确保libmemcached库版本的正确性和兼容性至关重要。 **相关知识点:** 1. **Memcached**:Memcached是一个高性能、分布式内存对象缓存系统,用于减轻数据库负载,提高网站响应速度。它通过...

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

    **Windows版Libmemcached运行库及相关头文件** Libmemcached是一款高效的C语言库,用于与Memcached服务器进行交互。它提供了丰富的API,使得开发者能够轻松地在应用程序中集成Memcached的功能,实现数据缓存,提高...

    libmemcached0.43patch

    这个问题不仅影响了libmemcached的稳定性和可靠性,也可能对依赖该库的应用程序造成严重影响。挂起的bug通常意味着程序在执行过程中陷入无法响应的状态,这对任何实时性要求较高的服务都是不可接受的。 为了解决这...

    libmemcached-0.42.tar.gz

    此外,Memcached扩展支持更多的特性,如SASL(Simple Authentication and Security Layer)进行安全性增强,以及更丰富的数据类型。 **安装libmemcached** 在Linux系统中,安装libmemcached通常涉及以下步骤: 1. ...

    libmemcached-1.0.18.tar.gz

    libmemcached 支持多种协议,并提供了丰富的功能,如哈希算法、一致性哈希、ketama 路由策略等,使得开发人员能够方便地在应用中集成 Memcached。 【描述】中提到的是 LibGD 2.2.3 版本的发布。LibGD 是一个非常...

    linux版本下memcached+libmemcached

    Linux版本下的Memcached和Libmemcached是两种广泛用于提高应用程序性能的开源工具,特别是在处理大量数据缓存时。本文将详细介绍这两个组件以及如何...而内存映射作为一项操作系统技术,也为数据处理提供了更多可能性。

    libmemcached-0.23.tar.gz

    2. **分发策略**:libmemcached提供了一套高效的键值分布算法,如“一致性哈希”(Consistent Hashing),确保数据在Memcached集群中的均匀分布,即使在服务器增减时也能尽量减少数据迁移。 3. **连接管理**:...

    libmemcached && libmemcached-devel-1.0.16.zip

    libmemcached包含了丰富的功能,如分布式哈希、自动故障转移、一致性哈希策略等,这些特性使得它成为处理高并发和大数据量场景的理想选择。 而libmemcached-devel则是开发包,它包含头文件、库文件以及必要的开发...

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

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

Global site tag (gtag.js) - Google Analytics