Memcached分布式和集群简介

本文深入探讨Memcached的分布式原理及其实现方式,包括客户端分布式特性、数据一致性保障、常见分布式算法(如余数Hash算法和一致性Hash算法)及其优劣分析。此外,文章还介绍了Memcached集群的搭建方法,以及如何通过客户端实现集群形式,使得服务对用户和Memcached都是透明的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Memcached分布式示例

Memcached之间互不通信互不干扰,一切完全由XMemcached进行调用存储。
在这里插入图片描述

二、Memcached分布式原理

  1. Memcached的分布式很特殊:客户端分布式
  2. Memcached每一个服务器端都不相互通信
  3. Memcached客户端通过算法保证数据的唯一性

三、常见的分布式算法

余数Hash算法:

  • 过程
    1. 将传入的key转换为Hash值
    2. 获取服务器数量列表
    3. Hash值%服务器数量
    4. 通过余数来选择具体存放或查询的服务器
  • 优缺点
    1. 简便易理解
    2. 增加/减少节点,会造成服务端“灾难”

一致性Hash算法:
在这里插入图片描述

  • 注意:图中的大圈表示真实的节点(即真实存放数据的Memcached),小圈代表虚拟节点
  • 过程:
    1. 将服务器列表+虚拟节点分布在0-2的32次方的一个圆上
    2. 将传入的key转换为Hash值
    3. Hash值%服务器数量
    4. 通过余数来选择具体存放/查询的服务器
    5. 如果余数命中真实节点则直接存放,如果命中虚拟节点则顺指针寻找真实的Memcached服务存放
  • 优点:如图所示,当有新的服务器加入时,对其他的节点影响极小
  • 面试题(Memcached的两段式Hash)
    1. 客户端通过Hash算法寻找存储/查询节点
    2. 寻找到具体的Memcached后通过Hash算法寻找具体的Chunk

四、Memcached集群

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

搭建方法:

  • 在服务端开启多个Memcached进程
  • 代码中加入对应的IP地址和端口号即可:
    MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("192.168.1.27:5555 192.168.1.27:6666"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值