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 ...
随机推荐
- kalilinux MSF数据库的连接
需要自动连接数据库.如下设置.
- 爬虫(四):BeautifulSoup库的使用
一:beautifulsoup简介 beautifulsoup是一个非常强大的工具,爬虫利器. beautifulSoup “美味的汤,绿色的浓汤” 一个灵活又方便的网页解析库,处理高效,支持多种解析 ...
- .Net类库 压缩文件 与 Ionic.Zip 批量压缩不同目录文件与解压 文件
using System; using System.IO; using System.IO.Compression; using System.Linq; using System.Text; us ...
- Java基础系列 - JAVA集合ArrayList,Vector,HashMap,HashTable等使用
package com.test4; import java.util.*; /** * JAVA集合ArrayList,Vector,HashMap,HashTable等使用 */ public c ...
- wx.navigateTo的url不生效的问题
比如我要要从index页面跳转到logs. 在跳转的时候应该用switchTab,而不是wx.navigateTo 看api这句话 https://developers.weixin.qq.com/m ...
- 研途APP——项目需求分析
研途APP--项目需求分析 1.作业描述 项目 内容 课程 软件工程实践 作业链接 团队作业第二次-需求规格说明书 团队名称 8rookies 作业目标 作业正文 研途APP--项目需求分析 其他参考 ...
- Flutter移动电商实战 --(44)详细页_首屏自定义Widget编写
把详细页的图片.标题.编号和价格形成一个单独的widget去引用 详情页的顶部单独封装个插件 在pages下面新建detials_page的文件件并在里面新建页面details_top_area.da ...
- MATLAB中图像的基本操作
MATLAB中图像的基本操作 1.读取.显示图片 MATLAB中提供了immread()与imshow()函数读取和显示图片.其中读取函数imread()原型: imread: A = imread( ...
- python 混入类MixIn
写在前面 能把一件事情说的那么清楚明白,感谢廖雪峰的官方网站. 1.为什么要用混入类?(小白入门) 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能. step1: 回忆一下 ...
- 【转载】 迁移学习(Transfer learning),多任务学习(Multitask learning)和端到端学习(End-to-end deep learning)
--------------------- 作者:bestrivern 来源:CSDN 原文:https://blog.csdn.net/bestrivern/article/details/8700 ...