• memcached基础与配置详解


    一、memcached介绍

    Memcache 官网 http://memcached.org/

    (1)memcache本身没有像 redis 所具备的数据持久化功能,比如 RDB 和 AOF 都没有,但是可以通过做集群同步的方式,让各 memcache 服务器的数据进行同步,从而实现数据的一致性,即保证各 memcache的数据是一样的,即使有任何一台 memcache 发生故障,只要集群种有一台 memcache 可用就不会出现数据丢失,当其他 memcache 重新加入到集群的时候可以自动从有数据的 memcache 当中自动获取数据并提供服务。

    (2)Memcache借助了操作系统的 libevent 工具做高效的读写。 libevent 是个程序库,它将 Linux 的 epoll、BSD 类操作系统的 kqueue 等事件处理功能封装成统一的接口。即使对服务器的连接数增加,也能发挥高性能。memcached使用这个 libevent 库,因此能在 Linux、BSD、Solaris 等操作系统上发挥其高性能 。

    (3)Memcache 支持最大的内存存储对象为 1M 超过 1M 的 数据可以使用客户端压缩或拆分报包放到多个key中,比较大的数据在进行读取的时候需要消耗的时间比较长,memcache最适合保存用户的session实现 session共享Memcached 存储数据时 , Memcached 会去申请 1MB 的内存 , 把该块内存称为一个slab,也称为一个page。

    (4)memcached具有多种语言的客户端开发包,包括: Perl/PHP/JAVA/C/P ython/Ruby/C#/

     安装方式:yum安装和源码编译

      yum安装:

    yum  install memcached
    

     修改配置文件及启动memcached服务

    [root@cenots27~]#vim /etc/sysconfig/memcached
    PORT="11211"
    USER="memcached"
    MAXCONN="4069"  最大连接数
    CACHESIZE="1024" 最大缓存数1G
    OPTIONS=""
    
    [root@cenots27~]#systemctl start memcached
    

      查看memcached监听的端口,监听的是11211端口。

    memcached程序的常用选项:

    -m <num>:Use <num> MB memory max to use for object storage; the default is 64 megabytes.
    -c <num>:Use <num> max simultaneous connections; the default is 1024.
    -u <username>:以指定的用户身份来运行进程;
    -l <ip_addr>:监听的IP地址,默认为本机所有地址;
    -p <num>:监听的TCP端口, the default is port 11211.
    -U <num>:Listen on UDP port <num>, the default is port 11211, 0 is off.
    -M:内存耗尽时,不执行LRU清理缓存,而是拒绝存入新的缓存项,直到有多余的空间可用时为止;
    -f <factor>:增长因子;默认是1.25;
    -t <threads>:启动的用于响应用户请求的线程数;

    memcached集群 部署架构:

    基于 magent 的部署架构:

    该部署方式 依赖于 magent 实现 高可用, 应用端通过 负载 服务器连接到 magent ,然后 再由 magent代理用户应用请求到 memcached 处理,底层的 memcached 为 双主结构会自动同步数据, 本部署方式存在 magent 单点问题因此需要两个 magent 做高可用 。

    Repcached 实现原理

    在master 上可以通过 X 指定 replication port ,在 slave 上通过 x/ X 找到 master 并 connect 上去,事实上,如果同时指定了 x/ X repcached 一定会尝试连接,但如果连接失败,它就会用 X 参数来自己 listen (成为 master );如果 master 坏掉, slave 侦测到连接断了,它会自动 listen 而成为 master而如果 slave 坏掉, master 也会侦测到连接断,它就会重新 listen 等待新的 slave 加入。

    从这方案的技术实现来看,其实它是一个单master单slave的方案,但它的master/slave都是可读写的,而且可以相互同步,所以从功能上看,也可以认为它是双机master master方案。

    简化后 的部署架构:

    magent已经有很长 时间 没有更新, 因此 可以不再使用 magent ,直接通过负载均衡连接之 memcached任然 有两台 memcached 做高可用, memcache d 会自动同步数据保持数据一致性, 即使 一台 memcached故障也 不影响业务正常运行 故障的 memcached 修复上线后再自动从另外一台 同步 数据 即可 保持数据一致性。

    二、开始源码编译memcached

    环境准备:

    A主机:192.168.37.17

    B主机:192.168.37.27

    两个主机同时进行以下编译方式:

     下载包路径:

    wget  https://sourceforge.net/projects/repcached/files/repcached/2.2.1-1.2.8/memcached-1.2.8-repcached-2.2.1.tar.gz/download

    1、安装对应的依赖包

    [root@cenots27memcached-1.2.8-repcached-2.2.1]#yum install libevent libevent-devel -y
    

    2、解压安装包,并切换到此目录下开始编译

    [root@cenots27memcached-1.2.8-repcached-2.2.1]#cd /usr/local/src
    [root@cenots27memcached-1.2.8-repcached-2.2.1]#tar -xvf  memcached-1.2.8-repcached-2.2.1.tar.gz 
    [root@cenots27memcached-1.2.8-repcached-2.2.1]#cd memcached-1.2.8-repcached-2.2.1/
    [root@cenots27memcached-1.2.8-repcached-2.2.1]#./configure --prefix=/usr/local/repcached  --enable-replication

    3、make与make  install安装,此时就会报错

    解决方案:

    [root@cenots27memcached-1.2.8-repcached-2.2.1]#pwd
    /usr/local/src/memcached-1.2.8-repcached-2.2.1
    [root@cenots27memcached-1.2.8-repcached-2.2.1]#vim memcached.c
    

     删除以下几行

     添加下面几行

    #ifndef IOV_MAX
    #define IOV_MAX 1024
    #endif
    

     再执行一次make  && make install 就可以安装成功,此时源码编译完成。

    [root@cenots27memcached-1.2.8-repcached-2.2.1]#make && make install
    

     启动memcached 

     启动B主机的机器,其中-x后面跟的IP地址,是监听A主机的IP地址,-X监听的是一个端口号 

    [root@cenots27memcached-1.2.8-repcached-2.2.1]#/usr/local/repcached/bin/memcached  -d -m 2048 -p 11211 -u root -c 2048 -x 192.168.37.17 -X 16000
    

    查看启动状态:

    启动A源码编译的主机监听B主机IP地址

    [root@centos17memcached-1.2.8-repcached-2.2.1]#/usr/local/repcached/bin/memcached  -d -m 2048 -p 11211 -u root -c 2048 -x 192.168.37.27 -X 16000
    

    注意:双方都监听了对方的端口后,指定的-X端口16000就会消失,不会被看到 

    此时已经实现memcached高可用功能。

      





      

      

      

      

      

  • 相关阅读:
    P4097 [HEOI2013]Segment 李超线段树
    P3592 [POI2015]MYJ
    P3698 [CQOI2017]小Q的棋盘
    P4098 [HEOI2013]ALO 可持久化01Trie
    P2331 [SCOI2005]最大子矩阵
    P4099 [HEOI2013]SAO
    loj #6032. 「雅礼集训 2017 Day2」水箱 线段树优化DP转移
    CF765F Souvenirs 离线+线段树+主席树
    CF1097D Makoto and a Blackboard
    loj #6570. 毛毛虫计数
  • 原文地址:https://www.cnblogs.com/struggle-1216/p/12128266.html
Copyright © 2020-2023  润新知