Memcached分布式和集群简介

一、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"));
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nginx分布式集群是一种将多个nginx服务器组合在一起以提供高可用性和负载均衡的解决方案。它可以通过将请求分发到多个nginx节点来实现请求的负载均衡,从而提高系统的可扩展性和性能。 在搭建nginx分布式集群时,通常需要考虑以下几个方面: 1. 负载均衡机制:常见的负载均衡机制包括轮询、IP哈希、最少连接等。可以通过配置nginx的upstream模块来实现负载均衡,将请求分发到不同的后端服务器。 2. 后端服务器:nginx集群通常由多台后端服务器组成,这些服务器可以是物理服务器或虚拟机。每个后端服务器上都需要安装并配置nginx,并提供相同的服务。 3. 高可用性:为了实现高可用性,可以使用主备模式或活动-活动模式。在主备模式中,只有一个nginx节点处于活动状态,其余节点处于备份状态。在活动节点故障时,备份节点会接管请求处理。在活动-活动模式中,所有节点都处于活动状态,共享请求负载。 4. Session共享:在某些情况下,应用程序可能需要共享会话信息。可以使用共享存储或缓存来实现会话共享,例如使用Redis或Memcached。 5. 动态扩展:nginx分布式集群应该具备动态扩展能力,可以根据负载情况自动添加或删除节点,以适应流量的变化。 总的来说,搭建nginx分布式集群需要考虑负载均衡、高可用性、会话共享和动态扩展等方面,以满足高性能和可扩展性的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值