一、Memcached集群介绍

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

二、代码实现

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

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

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

定义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

Memcached集群实现及原理介绍的更多相关文章

  1. Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)

    ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...

  2. Nginx+Tomcat+MemCached 集群配置手册

    系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目    录 第1章   概述 1.1   目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...

  3. Memcached 集群架构与memcached-session-manager

    Memcached 集群架构方面的问题_知识库_博客园https://kb.cnblogs.com/page/69074/ memcached-session-manager配置 - 学习中间件调优管 ...

  4. Magent搭建Memcached集群

    原文地址:http://ultrasql.blog.51cto.com/9591438/1636374 Memcached集群介绍 由于Memcached服务器与服务器之间没有任何通讯,并且不进行任何 ...

  5. 转载:【Oracle 集群】RAC知识图文详细教程(二)--Oracle 集群概念及原理

    文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...

  6. 【转】Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)

      阅读目录 目录 Oracle集群概念和原理 RAC概述 RAC 集成集群件管理 RAC 的体系结构 RAC 的结构组成和机制 RAC 后台进程 RAC 共享存储 RAC 数据库和单实例数据库的区别 ...

  7. Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解

    当网站访问量达到一定时,如何做Memcached集群,又如何高可用,是接下来要讨论的问题. 有这么一段文字来描述“Memcached集群” Memcached如何处理容错的? 不处理!:) 在memc ...

  8. CentOS6.3编译安装Memcached集群分布式缓存代理Magent-0.6出错汇总

    参考文章:Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解,搭建Magent,在编译的过程中会出现很多错误: #编译安装安装magent到 /usr/local/mage ...

  9. memcached集群和一致性哈希算法

    场景 由于memcached集群各节点之间都是独立的,互不通信,集群的负载均衡是基于客户端来实现的,因此需要客户端用户设计实现负载均衡算法. 取模算法 N个节点,从0->N-1编号,key对N ...

随机推荐

  1. 002_simulink中显示模块中的名字

    (一)Display--->Hide Automatic Names(√去掉)

  2. 简单了解Web Workers API

    1. 为什么使用Web Workers API 通过使用该API,web应用程序可以独立于主线程,运行一个单独的线程来处理脚本. 可以在独立的线程中解决耗时较长的任务,避免主线程阻塞. 2. 应用 1 ...

  3. CSP 2019 退役记

    声明:博主不会时空穿越,也没有造成恐慌,不应禁赛三年 Day0 上午:打板子 Polya定理; exkmp; exbsgs; 乘法逆元; 矩阵快速幂; 扫描线; ST表; excrt; Dirichl ...

  4. nginx + keepalived双活配置

    一.安装nginx 我们这边默认安装的nginx的是1.12.2的版本,所以我们需要安装1.16.1版本的nginx的,才好,所以我们这边先更新yum源,步骤如下: 1.添加yum源: [root@s ...

  5. 数据结构实验之二叉树六:哈夫曼编码(SDUT 3345)

    题解:离散中的"最小生成树(最优树)". #include <bits/stdc++.h> using namespace std; void qusort(int l ...

  6. meshing-八分之一圆球

    ​原视频下载地址:https://yunpan.cn/cqwiFDCg6PbFj  访问密码 d1c8

  7. ICEM-圆锥的一种画法

    原视频下载地址:https://yunpan.cn/cqK53dKBnduM9  访问密码 42be ​

  8. 亚马逊AWS服务器CentOS/Linux系统Shell安装Nginx及配置自启动

    领了一个亚马逊的1年免费服务器,今天尝试安装 Nginx 服务器,使用原生的 Shell 方法. 为了方便以后查看,就把过程记录一下. 注意:亚马逊(AWS)服务器默认只能用 user-ec2 账户进 ...

  9. OpenJudge计算概论-数组逆序重放

    /*=============================================================== 数组逆序重放 总时间限制: 1000ms 内存限制: 65536kB ...

  10. MyBatis 插件之拦截器(Interceptor)

    参考 https://blog.csdn.net/weixin_39494923/article/details/91534658 //项目实际使用  就是在你进行数据库操作时,进行数据的第二次封装 ...