zoukankan      html  css  js  c++  java
  • Memcached集群实现及原理介绍

    一、Memcached集群介绍

    1.自身通过算法保证数据唯一性
    2.集群形式对用户和Memcached都是透明的
    3.Memcached的集群是通过客户端实现的
    4.Memcached服务端相互不认识

    二、代码实现

    我们开启两个Memcached,端口号分别为2222和6666

    bin/memcached -d -u root -l 192.168.84.128 -p 2222 -c 128 -m 100 -P myPid
    telnet 192.168.84.128 2222

    bin/memcached -d -u root -l 192.168.84.128 -p 6666 -c 128 -m 100 -P myPid
    telnet 192.168.84.128 6666

    定义MemcachedClient,注意:中间用空格隔开

    // 连接配置
            MemcachedClientBuilder memcachedClientBuilder =
                    new XMemcachedClientBuilder(AddrUtil.getAddresses("192.168.84.128:2222 192.168.84.128:6666"));

    演示集群操作:

    @Test
        public void cluTest() throws  Exception{
            MemcachedClient memcachedClient = ConnectonHelper.getClient();
            memcachedClient.set("k1",0,"Hello zhangsan!!!");
            String k1Value = memcachedClient.get("k1");
            System.out.println("k1Value="+k1Value);
    
            memcachedClient.set("k2",0,"Hello lisi!!!");
            String k2Value = memcachedClient.get("k2");
            System.out.println("k2Value="+k2Value);
        }

    k1和k2已经保存成功,但是具体存在那个memcached上,是由客户端内部的Hash算法计算的

    下面分别连接两个memcached查看数据存储

    端口为2222的memcached:

    端口为6666的memcached:

    三、Memcached常见分布式算法

    1.余数Hash

    • 将传入的key转换为Hash值
    • 获取服务器数量列表
    • 取余:Hash值%服务器数量
    • 通过余数来选择具体存放/查询的服务器

    优缺点:简便易理解、增加/减少节点会造成灾难

    2.一致性Hash

    • 将服务器列表+虚拟节点分布在0-2的32次方的一个圆上
    • 将传入的key转换为Hash值
    • 获取服务器数量列表
    • 取余:Hash值%服务器数量
    • 通过余数来选择具体存放/查询的服务器
    • 如果余数命中虚拟节点,则会顺时针寻找真实Memcached服务

    四、补充

    Memcached的两段Hash:

    • 客户端通过Hash算法寻找存储/查询节点
    • 进入Memcached以后,通过Hash算法,寻找具体的Chunk
  • 相关阅读:
    登录验证servlet实现
    IOS开发(68)之捕获点击划屏手势
    jquery实现漂浮在网页右侧的qq在线客服插件
    深切缅怀“5.12”特大地震遇难同胞
    PHP实现微信申请退款流程实例源码
    empty和isset的区别
    ThinkPHP中实现微信支付(jsapi支付)流程
    php中正则表达式详解
    PHP与RBAC设计思路讲解与源码
    一起谈.NET技术,VS2010实践RUP4+1架构模型 狼人:
  • 原文地址:https://www.cnblogs.com/chenzheng8975/p/9415371.html
Copyright © 2011-2022 走看看