资讯专栏INFORMATION COLUMN

php memcache 一致性hash入门

cocopeak / 1374人阅读

摘要:一致性分步简单理解将服务器节点和节点都按照函数部署。比如四台服务器,理想化可分布在点钟四个位置。然后根据的的值,找到离他最近的服务器节点,放入。具体参考牛人写的一致性类

一致性hash分步简单理解:
将服务器节点和key节点都按照Crc32函数部署。
简单排序到圆环上。比如四台服务器,理想化可分布在12 3 6 9点钟四个位置。
然后根据key的crc32的值,找到离他最近的服务器节点,放入。
希望各位前辈指教

_hash($key);
        $node=current($this->nodes);// 默认在第一个服务器节点

        //通过判断所存key的hash值,与存储的服务器节点的key做对比,返回对应服务器的value值
        foreach ($this->nodes as $key => $value) {
            if($point<=$key){
                $node=$value;
                break;
            }
        }
        return $node;
    }

    // 添加服务器节点
    public function addNode($node){
        $node_key=sprintf("%u",crc32($node));
        $this->nodes[$node_key]=$node;// 按照键的节点排序
        $this->sortNode();
    }

    public function printNodes(){
        var_dump($this->nodes);// 打印所有服务器节点列表
    }

    //将所有服务器安装顺序大小排序,方便存储和查找
    public function sortNode(){
        ksort($this->nodes,SORT_REGULAR);
    }
}

$c=new Consitent();
$c->addNode("a");
$c->addNode("b");
$c->addNode("c");
$c->printNodes();
echo $c->_hash("name");
echo $c->lookup("name");

缺点:无法均匀分部服务器节点(只做到了按顺序)
尤其是第一台服务器默认存储的情况下。需要引入虚拟节点,将当前节点方法N倍,这样再排序后,当前节点die掉后,可分摊减轻下一个节点遇到的压力。
具体参考github牛人写的php一致性hash类

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/61684.html

相关文章

  • php memcache 致性hash入门

    摘要:一致性分步简单理解将服务器节点和节点都按照函数部署。比如四台服务器,理想化可分布在点钟四个位置。然后根据的的值,找到离他最近的服务器节点,放入。具体参考牛人写的一致性类 一致性hash分步简单理解:将服务器节点和key节点都按照Crc32函数部署。简单排序到圆环上。比如四台服务器,理想化可分布在12 3 6 9点钟四个位置。然后根据key的crc32的值,找到离他最近的服务器节点,放入...

    Alliot 评论0 收藏0
  • PHP面试常考内容之Memcache和Redis(3)

    摘要:自己整理了一篇不同等级面试都问什么的文章,关注公众号琉忆编程库,回复等级,我发给你。 你好,是我琉忆。今天是周五了,再上一天班就周末了,提前祝大家周末愉快。嘿嘿。这篇文章是本周Memcache和Redis内存数据库常考的专题。本周一和周三更新的文章路径:PHP面试常考内容之Memcache和Redis(1)PHP面试常考内容之Memcache和Redis(2)本周(2019.2-18至...

    Lionad-Morotar 评论0 收藏0
  • PHP面试常考内容之Memcache和Redis(3)

    摘要:自己整理了一篇不同等级面试都问什么的文章,关注公众号琉忆编程库,回复等级,我发给你。 你好,是我琉忆。今天是周五了,再上一天班就周末了,提前祝大家周末愉快。嘿嘿。这篇文章是本周Memcache和Redis内存数据库常考的专题。本周一和周三更新的文章路径:PHP面试常考内容之Memcache和Redis(1)PHP面试常考内容之Memcache和Redis(2)本周(2019.2-18至...

    zhaochunqi 评论0 收藏0
  • 【NoSQL】memcached介绍

    摘要:简介是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态应用的速度提高可扩展性。当表格满了以后,接下来新增的资料会以机制替换掉。目前有模式和模式。 memcached简介 memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 mem...

    icattlecoder 评论0 收藏0
  • memcached分布式原理与实现

    摘要:哈希的结果应能够保证原有已分配的内容可以被映射到新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。平衡性平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。 memcached分布式原理与实现 标签(空格分隔): nosql 0x01 概况 1.1 什么是memcached memcached是一个分布式,开源的数据存储引擎。memcach...

    Ververica 评论0 收藏0

发表评论

0条评论

cocopeak

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<