Memcached服务端以及Memcached API部署

Memcached简介:
    Memcached是一套开源的高性能分布式内存对象缓存系统,它将所有数据都存储在内存中,因为在内存中会维护一章巨大的hash表,所以支持任意存储类型的数据。Memcached是典型的C/S架构,因此需要安装Memcached服务端与Memcached API客户端。
存储方式与数据过期方式:
    数据存储方式:
        Slab Allocation
        Slab Allocation即按组分配内存一个Slab,相当于一个大小为1MB的页,然后在1MB的空间里根据数据划分大小相同的Chunk,该方法可以有效的解决内存碎片问题,但可能会对内存空间有所浪费。
    数据过期方式:
        LRU,Laxzy Expiration
        LRU是指追加的数据空间不足时,会根据LRU的情况淘汰最近最少使用的记录。Laxzy Expiration即惰性过期,是指使用get时查看记录时间,从而检查记录是否已经过期。
Memcached缓存机制:
    缓存是指常驻在内存的数据,能够快速进行读取。
    当程序写入缓存数据请求时,Memcached的API接口将Key输入路由算法模块路由到集群中一台服务器,之后由API接口与服务器进行通信,完成一次分布式缓存写入。
Memcached分布式:
    Memcached分布式部署主要依赖于Memcached的客户端来实现,多个Memcached服务器是独立的。分布式数据如何存储是由路由算法所决定的。
    当数据到达客户端程序时,客户端的算法就是依据路由算法来决定保存的Memcached服务器。读取数据时,客户端依旧保存数据时的路由算法选中和存储数据时相同的服务器来读取数据
Memcached路由算法:
    (1.)求余数hash算法
        求余数hash算法先用key做hash运算得到一个整数,再去做hash算法,根据余数进行路由。这种算法适合大多数数据请求,但是不适合用在动态变化的环境中,比如有大量机器添加或者删除时,会导致大量对象的存储位置失效。
    (2.)一致性hash算法
        一致性hash算法适合在动态变化的环境中使用。原理是按照hash算法把对应的key通过一定的hash算法处理后,映射形成一个首尾相接的闭合循环,然后通过使用与对象存储一样的hash算法将机器映射到环中,按顺时针方向将所有对象存储到离自己最近的机器中。
本案例使用两台centos7.3系统完成,一台Memcached服务器,另一台是基于LAMP架构进行Memcached扩展的Memcached API客户端,可以根据企业需求进行架构调整,环境如下:

实验环境:
    操作系统        IP              角色             软件
    centos7.3   192.168.1.101    Memcached          libevent-1.4.12-stable.tar.gz、memcached-1.4.31.tar.gz
    centos7.3   192.168.1.105   Memcached-API       memcached-2.2.0.tgz
Memcached部署:
    1.关闭防火墙和selinux,配置本地hosts文件和yum源以及epel源
    Memcached(服务端)部署:
    2.安装libevent:
        Libevent是一款跨平台的事件处理接口的封装,可以兼容多个操作系统的事件访问,Memcached的安装依赖于libevent,因此需要先完成libevent的安装
        事先将软件包上传至服务器
        [root@memcached ~]# tar xf libevent-1.4.14b-stable.tar.gz
        [root@memcached ~]# yum install gcc gcc-c++ -y      # 解决依赖关系
        [root@memcached ~]# cd libevent-1.4.14b-stable/
        [root@memcached libevent-1.4.14b-stable]# ./configure --prefix=/usr/local/libevent && make && make install
    3.安装Memcached,编译安装需要制定libevent位置
        [root@memcached ~]# cd
        [root@memcached ~]# tar xf memcached-1.4.31.tar.gz
        [root@memcached ~]# cd memcached-1.4.31/
        [root@memcached memcached-1.4.31]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent
        [root@memcached libevent-1.4.14b-stable]# make -j 4 && make install
    4.设置Memcached服务脚本
        [root@memcached libevent-1.4.14b-stable]# cd /usr/local/memcached/
        [root@memcached memcached]# vim start_memcached.sh
        #!/bin/bash
        CMD="/usr/local/memcached/bin/memcached"
        start(){
            $CMD -d -m 128 -u root
        }
        stop(){
            killall memcached;
        }

        ACTION=$1
        case $ACTION in
        'start')
            start
            ;;
        'stop')
            stop
            ;;
        'restart')
            stop
            start
            ;;
        *)
            echo "Usage:{start|stop|restart}"
        esac
        注释:
            -d:以守护进程的方式运行memcached服务
            -m:为Memcached分配128M的内存
            -u:指定运行的用户是root
    5.设置脚本权限,并启动Memcached服务
        [root@memcached memcached]# chmod 755 /usr/local/memcached/start_memcached.sh
        [root@memcached ~]# /usr/local/memcached/start_memcached.sh start
    6.服务启动后监听TCP的11211端口   
        [root@memcached ~]# netstat -antp | grep memcached
        tcp      0    0 0.0.0.0:11211      0.0.0.0:*     LISTEN      13194/memcached     
        tcp6     0    0 :::11211           :::*          LISTEN      13194/memcached
    Memcached-API(客户端)部署:
    7.客户端部署LAMP环境:
        安装apache:
            yum install httpd httpd-devel -y
        启动httpd服务并设置为开机自启动:
            systemctl start httpd
            systemctl enable httpd
        查看端口监听情况:
            netstat -anpt | grep httpd
        客户端访问测试:
            http://192.168.1.105
        安装mariadb数据库:
            yum install mariadb mariadb-devel mariadb-server mariadb-libs
        启动mariadb服务并设置为开机自启动:
            systemctl start mariadb
        数据库安全设置
            mysql_secure_installation
        登录数据库测试:
            mysql -uroot -p
        安装php:
            yum install php php-devel
            vim /etc/php.ini
        将php和mysql作关联:
            yum install php-mysql -y
        安装常用的php模块:
            yum install -y php-gd php-ldap php-odbc php-pear php-xml php-xmlrpc php-mbstring php-snmp php-soap curl curl-devel php-bcmath
        创建php测试页面:
            cat > /var/www/html/info.php << EOF
            <?php
                phpinfo();
            ?>
            EOF
        重启httpd服务:
            systemctl restart httpd
        客户端测试php:
            http://192.168.1.105/info.php
        客户端安装Memcached的PHP扩展功能
            安装autoconf软件包:
                yum install autoconf -y
            解压:
                tar xf memcache-2.2.0.tgz
            进入目录
                cd memcache-2.2.0/
            增加为PHP模块后再对memcache进行配置编译
                /usr/bin/phpize
            配置:
                ./configure --enable-memcache --with-php-config=/usr/bin/php-config
            编译及安装:
                make && make install
        编辑php.ini
            vim /etc/php.ini
            # 732行,新增以下命令:
                extension_dir = "/usr/lib64/php/modules/"
            # 864行,新增以下命令
                extension = memcache.so
        编写测试页面,测试memcached工作是否正常:
            vim /var/www/html/index.php
                <?php
                $memcache = new Memcache();
                $memcache->connect('192.168.1.105',11211);
                $memcache->set('key','Memcache test Successfull!',0,60);
                $result = $memcache->get('key');
                unset($memcache);
                echo $result;
                ?>
        重启httpd服务:
            systemctl restart httpd
        客户端进行访问测试是否成功:
            http://192.168.1.105/index.php

原文链接: https://www.cnblogs.com/Vampire-MIn/p/13307376.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    Memcached服务端以及Memcached API部署

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/366753

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 下午4:56
下一篇 2023年3月2日 下午4:57

相关推荐