Memcached集群实现及原理介绍
一、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集群实现及原理介绍的更多相关文章
- Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- Nginx+Tomcat+MemCached 集群配置手册
系统实施文档 Nginx+Tomcat+MemCached 集群配置手册 目 录 第1章 概述 1.1 目标 互联网的快速发展带来了互联网系统的高负载和高可用性, 这要求我们在设计系统架 ...
- Memcached 集群架构与memcached-session-manager
Memcached 集群架构方面的问题_知识库_博客园https://kb.cnblogs.com/page/69074/ memcached-session-manager配置 - 学习中间件调优管 ...
- Magent搭建Memcached集群
原文地址:http://ultrasql.blog.51cto.com/9591438/1636374 Memcached集群介绍 由于Memcached服务器与服务器之间没有任何通讯,并且不进行任何 ...
- 转载:【Oracle 集群】RAC知识图文详细教程(二)--Oracle 集群概念及原理
文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...
- 【转】Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
阅读目录 目录 Oracle集群概念和原理 RAC概述 RAC 集成集群件管理 RAC 的体系结构 RAC 的结构组成和机制 RAC 后台进程 RAC 共享存储 RAC 数据库和单实例数据库的区别 ...
- Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解
当网站访问量达到一定时,如何做Memcached集群,又如何高可用,是接下来要讨论的问题. 有这么一段文字来描述“Memcached集群” Memcached如何处理容错的? 不处理!:) 在memc ...
- CentOS6.3编译安装Memcached集群分布式缓存代理Magent-0.6出错汇总
参考文章:Memcached集群/分布式/高可用 及 Magent缓存代理搭建过程 详解,搭建Magent,在编译的过程中会出现很多错误: #编译安装安装magent到 /usr/local/mage ...
- memcached集群和一致性哈希算法
场景 由于memcached集群各节点之间都是独立的,互不通信,集群的负载均衡是基于客户端来实现的,因此需要客户端用户设计实现负载均衡算法. 取模算法 N个节点,从0->N-1编号,key对N ...
随机推荐
- 使用druid连接池的超时回收机制排查连接泄露
起因:系统连接池满了 Exception wait millis 60012, active 2000, maxActive 2000, creating 0 加配置排查: <!-- 超过时间限 ...
- java实现大视频上传
javaweb上传文件 上传文件的jsp中的部分 上传文件同样可以使用form表单向后端发请求,也可以使用 ajax向后端发请求 1.通过form表单向后端发送请求 <form id=" ...
- P2037 电话号码
题目描述 一串由长长的数字组成的电话号码通常很难记忆.为了方便记忆,有种方法是用单词来方便记忆.例如用“Three Tens”来记忆电话3-10-10-10. 电话号码的标准形式是七位数字,中间用连字 ...
- 炸掉的fft,改天再调
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> ...
- centos 7 启动docker失败。
刚安装docker-io,在启动的时候报如下错误: Error starting daemon: SELinux is not supported with the overlay2 graph dr ...
- 4)抽象方法不能为private,final或者static,为什么?
抽象方法的最实质的意 义在于被未来的子类覆盖实现掉.它自己是个空方法.private的实质意义在于本类其他方法调用它.你自己是个空方法,别人调用你有什么用?所以 abstract和private在一起 ...
- meshing-做类似ICEM的Y型剖分
原视频下载地址:https://yunpan.cn/cqjeKkrhwwN3x 访问密码 c724
- ML_Review_PCA(Ch4)
Note sth about PCA(Principal Component Analysis) ML6月20日就要考试了,准备日更博客,来记录复习一下这次ML课所学习的一些方法. 博客是在参考老 ...
- redis配置文件讲解
#redis.conf # Redis configuration file example. # ./redis-server /path/to/redis.conf ############### ...
- leetcode 62. Unique Paths 、63. Unique Paths II
62. Unique Paths class Solution { public: int uniquePaths(int m, int n) { || n <= ) ; vector<v ...