首页 > 其他分享 >Memcached集群实现及原理介绍

Memcached集群实现及原理介绍

时间:2023-03-02 13:05:29浏览次数:42  
标签:Hash Memcached 192.168 84.128 集群 服务器 原理 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



Memcached集群实现及原理介绍_服务器



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



telnet 192.168.84.128 6666



Memcached集群实现及原理介绍_memcached_02

定义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);
}



Memcached集群实现及原理介绍_客户端_03

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

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

端口为2222的memcached:

Memcached集群实现及原理介绍_客户端_04

端口为6666的memcached:

Memcached集群实现及原理介绍_memcached_05

三、Memcached常见分布式算法

1.余数Hash

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

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

2.一致性Hash

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

Memcached集群实现及原理介绍_memcached_06

 

四、补充

Memcached的两段Hash:

  • 客户端通过Hash算法寻找存储/查询节点
  • 进入Memcached以后,通过Hash算法,寻找具体的Chunk









标签:Hash,Memcached,192.168,84.128,集群,服务器,原理,memcached
From: https://blog.51cto.com/u_4427045/6095974

相关文章

  • Memcached stats命令及核心参数
    一、stats命令用来查看服务器的运行状态和内部数据,其中核心的参数有:1.缓存命中率相关参数:cmd_get:总查询次数get_hits:命中次数get_misses:未命中次数2.使用频率参数:curr_items......
  • Xmemcached与SpringBoot实际案例
    在本人的这篇文章《​​Xmemcached集群与SpringBoot整合​​》基础上,进行XMemcached与SpringBoot实际案例的结合。有以下这张表,将这张表的增删改查操作都添加到XMemcached中......
  • BOSHIDA 三河博电科技 AC/DC变换电源图及其工作原理
    BOSHIDA三河博电科技AC/DC变换电源图及其工作原理 1、逆变供电电源a.直流供电时,由直流供电电压经开关S1,隔离三极管VD1,保险丝FU2及由C2、C3、L1组成的π型滤波器后......
  • 自己动手从零写桌面操作系统GrapeOS系列教程——7.计算机组成与运行原理
    学习操作系统原理最好的方法是自己写一个简单的操作系统。在大学计算机课程中会学到一个叫冯·诺依曼结构的东西,很多同学当时学的也不是很清楚,也就是记住冯·诺依曼结......
  • MySQL Galera cluster 集群常用参数说明
    1、wsrep_local_state_uuid:与集群的wsrep_cluster_state_uuid一致root@[(none)]>showstatuslike'%wsrep_%_state_uuid%';+--------------------------+------------......
  • 网络原理5
    实验总结实验一配置实验环境对应拓扑图配置PC机IP和网关配置步骤SW1创建VLAN10、VLAN20,配置虚接口IP地址,开启Trunk和路由功能,添加路由表SW2创建VLAN10、VLAN20,把接口添加......
  • 【数据库原理及应用MySQL】第一章 数据系统的基本原理
    第一章        数据库系统的基本原理1.1.1数据库系统的应用不做详细介绍 1.1.2数据库系统的概念数据(data):是客观事物的符号标识,是可以被计算机识别,存储和加......
  • 基于matlab和simulink的小型无人机集群仿真演示平台
    1.算法描述        随着无人机作业自主性、智能化、多任务等方面要求的提高,无人机从单机作业发展到集群作业,对多机集群通信技术提出了更高的要求。采用多架无人机......
  • TDengine 3.0.2.5 查询再优化!揭秘索引文件的工作原理
    TDengine3.0虽然对底层做了大规模的优化重构,但是相对于数据文件的工作逻辑和2.0相比是整体保持不变的。本系列文章的主旨在于帮助用户深入理解产品,并且拥有基本的性能调......
  • Redis主从复制原理
    1.当从服务器连接上主服务器后,主服务器向从服务器发送进行数据同步消息2.主服务器接到从服务器发送的数据同步的消息,把主服务器数据持久化,复制rdb文件发送给从服务器,从服......