• Magent实现Memcached集群


    Magent 是一款开源的 Memcached 代理服务器软件,使用它可以搭建高可用性的集群应用的 Memcached 服务 ,备份 Memcached 数据,尽管 Memcached 服务挂掉,前端也能获取到数据,客户端先连到 Magent 代理服务器 ,然后Magent 代理服务器 在可以连接多台 Memcached 服务器,然后可以进行数据的保存和备份数据。这样数据就不会丢失,保存了数据完整性。


    安装Magent
    1)下载安装
    cd /usr/local
    mkdir magent
    wget http://memagent.googlecode.com/files/magent-0.6.tar.gz
    tar -zxvf magent-0.6.tar.gz
    /sbin/ldconfig
    sed -i "s#LIBS = -levent#LIBS = -levent -lm#g" Makefile

    在ketama.h或magent.c开头添加
    #ifndef SSIZE_MAX
    #define SSIZE_MAX 32767
    #endif
    make
    复制 make 生成的/usr/local/下名为magent的文件到/usr/bin/
    cp magent /usr/bin/magent
    检查是否安装成功:
    ./magent -h


    代理Memcache
    magent -u root -n 51200 -l 192.168.1.90 -p 12000 -s 192.168.1.111:11211 -s 192.168.1.112:11212 -b 192.168.1.112:11211
    magent参数说明:
    -h 帮助说明
    -u 用户
    -g gid
    -p 启动端口, 默认11211. (0 to disable tcp support)
    -s 服务memcached地址,ip:port, set memcached server ip and port
    -b 备份memcached地址,ip:port, set backup memcached server ip and port
    -l 启动IP地址,ip, local bind ip address, default is 0.0.0.0
    -n 最大并发数number, set max connections, default is 4096
    -D 非后台运行don't go to background
    -k use ketama key allocation algorithm
    -f file, unix socket path to listen on. default is off
    -i number, set max keep alive connections for one memcached server, default is 20
    -v verbose


     
    如上一章,这次通过magent设值
    • 分别在11211、11212、11213端口启动3个Memcached进程,在12000端口开启magent代理程序;
    • 11211、11212端口为主Memcached,11213端口为备份Memcached;
    • 连接上12000的magent,根据哈希算法,值被写入11211或11212Memcached和备份11213端口的Memcached;
    • 当11211、11212端口的Memcached死掉,连接到12000端口的magent取数据,数据会从11213端口的Memcached取出;
    • 当11211、11212端口的Memcached重启复活,连接到12000端口,magent会从11211或11212端口的Memcached取数据,由于这两台Memcached重启后无数据,因此magent取得的将是空值,尽管11213端口的Memcached还有数据。

    缓存与DB的同步
    比较保险的做法是:查询的时候从缓存中取,add、updae、delete的时候同时操作缓存与DB。
    当然你也可以定时同步缓存与DB的数据,不同的业务应该有不同的选择。

  • 相关阅读:
    documentFragment文档碎片
    OpenResty之resty.limit.count 模块介绍
    vue前端分页多条件搜索
    element ui Tree树形控件获取未全选父节点和子节点id
    如何使 pdf 文件在浏览器里面直接下载而不是打开
    关于本博客
    圆锥曲线基础知识点
    NOI2021游记
    20210716模拟赛
    计数+动态规划
  • 原文地址:https://www.cnblogs.com/grimm/p/12543507.html
Copyright © 2020-2023  润新知