企业介绍微网站怎么做的,电商运营方案计划书,网络营销自学网站,erp沙盘模拟memcached 高性能内存对象缓存 memcache是一款开源的高性能分布式内存对象缓存系统#xff0c;常用于做大型动态web服务器的中间件缓存。 mamcached做web服务的中间缓存示意图 当web服务器接收到请求需要处理动态页面元素时#xff0c;通常要去数据库调用数据#xff0c;但… memcached 高性能内存对象缓存 memcache是一款开源的高性能分布式内存对象缓存系统常用于做大型动态web服务器的中间件缓存。 mamcached做web服务的中间缓存示意图 当web服务器接收到请求需要处理动态页面元素时通常要去数据库调用数据但是通过memcached-api接口程序不去直接访问数据库而去访问mamcached再由memcached去访问数据库获取数据获得到数据后自己缓存一分在发送给web服务器一份下次再进行通向的访问就不需要访问数据库从而实现降低数据库的io压力。 memcached的存储数据方式 slab allocation 按组分配每次先分配一个slab大小相当于一个1M在1M的这个大小内划分出等大小的chunk该方法有效的解决了内存碎片问题但也会因为不满足chunk的大小而造成空间浪费。 slab 按。。。分片 chunk 块 memcached的数据过期方式随着数据越来越多内存不足的情况下会清理一些数据。依据过期条件 LRU最近最少使用的记录会被清理 laxzy expiration惰性过期用get查看记录时间从而决定是否过期。 memcached分布式缓存架构 每个memcached独立存在数据分配根据路由算法选择存储的memcached。读取数据时根据保存时的路由算法选择相同的服务器来读取数据将memcached做一个互相复制可以确保能读取到数据。路由算法由api接口指定 路由算法 求余数hash算法 将key做hash运算得到一个整数再进行哈希算法根据余数进行路由这种方法简单但只适合数据更改不太频繁的场景下节点的变动也会有影响。 一致性hash算法 该算法适合动态环境原理是按照hash算法把对应的key通过hash运算后映射成一个首尾相闭合的循坏再把节点服务器也通过这种方法也映射到环中顺时针计算将对象存储到离自己最近的机器中。 memcached部署 单节点的memcached部署 一台做memcached服务器一台做lamp应用程序测试宿主机用来访问验证。 安装过程 准备前奏 处理内核安全机制与防火墙 安装gcc 源码安装memcached 安装依赖工具 libevent libevent是一款基于C语言编写的轻量级的开源的高性能事件通知库常用于构建高性能网络服务器对高并发有很好的抗压能力。可移植性强。 本案例以libevent-2.18源码包为例 拉取到源码包后进行解压编译安装 只需要在配置时指定安装路径其他一切照常即可。 ./configure --prefix/usr/local/libevent 本案例以memcached-1.5.1为例 在配置时指定配置参数 ./configure \ --prefix/usr/local/memcached \ --with-libevent/usr/local/libevent 一个安装路径一个指定libevent的安装路径。 编译与编译安装照常 可以编写memcached的服务控制脚本 #!/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 sleep 2 start;; *) echo Usage:{start|stop|restart} esac 测时前检查psmisc安装包是否安装否则killall命令无法使用 赋予该脚本执行权就可以利用该脚本进行控制 进行启动验证查看是否监听了11211端口 部署memcached api客户端 搭建web网站快速部署 需要利用网络资源 yum -y install httpd mariadb mariadb-server php php-devel php-mysql 之后启动相关服务 httpd mariadb 设置数据库密码 mysqladmin -u root password pwd123 编写php测试网页检查php能否正常工作 源码安装libmemcached 该软件提供了api的接口以libmemcached1.0.18为例。 配置参数 ./configure \ --prefix/usr/local/libmemcached \ --with-memcached/usr/local/memcached 第二条指定了memcached扩展的位置 源码包安装memcached扩展 本案例以memcached2.2.0为例 安装安装编译环境 zlib zlib-devel 解压进入cd目录 memcached源码包本身不带配置项需要借用php工具生成对应的配置文件 /usr/bin/phpize 该目录为yum方式安装的php工具的路径如果是源码包安装通常会在/usr/local下的php安装目录中。 该命令需要autoconf软件包的支持会在当前目录下生成对应的配置脚本. 生成配置文件后就可以进行配置了 ./configure --with-php-config/usr/bin/php-config --with-libmemcached-dir/usr/local/libmemcached --disable-memcached-sasl --with-zlib-dir --with-php-config/usr/bin/php-config 指定php配置文件的路径 --with-libmemcached-dir/usr/local/libmemcached 指定libmemcached的位置 --disable-memcached-sasl 禁用sasl认证机制 1.SASL全称Simple Authentication and Security Layer是一种用来扩充C/S模式验证能力的机制。简单来说SASL是一个胶合(glue)库通过这个库把应用层与形式多样的认证系统整合在一起。这有点类似于 PAM但是后者是认证方式决定什么人可以访问什么服务而SASL是认证过程侧重于信任建立过程这个过程可以调用PAM来建立信任关系。在这里Memcached就是上面提到的应用层具体的认证交给SASL库SASL会根据相应的认证机制来完成验证功能。 --with-zlib-dir 指定压缩函数库的位置yum装的不需要指定路径可以为空。 配置后进行编译安装如果php是7的版本编译安装会报错。 配置php让其支持memcached组件 yum安装的的配置文件位置/etc/php.ini 添加一行语句重启httpd即可 extensionmemcached.so 如果是源码包安装的需要额外指定路径 extension_dir /usr/local/php5/lib/php/extensions/no-debug-zts-20121212/ 重启httpd之后通过phpinfo可以查看是否开启了memcached的扩展模块。 测试memcached-API功能 在web服务器网页文档目录下编写测试文档 ?php $memcache new Memcached(); $memcache-addServer(192.168.10.101, 11211); $memcache-set(key, Memcache test successful!, 0, 60); $result $memcache-get(key); unset($memcache); echo $result; ? 最后访问时出现Memcache test successful!表示api接口成功。 memcached作为非关系型数据库的基础操作 memcached本身没提供入口工具需要用telnet进行访问需要下载。 添加键值对 add 键名 0 0 8 值 出现STORED表示存储成功 第一个0表示标记位 例如压缩或加密通常为0 第二个0表示过期时间为0表示永不过期单位m 8表示值的字符长度注意必须一样少/多都不行。 回车后输入值 查看键值对 get 键名 查看键名的更新因子 gets 键名 通常最后一位数字表示更新因子 更新键值 set 键名 0 0 8 清除一条键值对 delete 键名 键名重新复制 cas 键名 0 0 8 更新因子数 追加数据 append 键名 0 0 追加字节数 清除所有数据 flush_all 查看状态信息 总结单节点部署服务器与应用程序各自需要的软件包 服务器 libevent memcached1.5.1 应用程序 除了本身必备的lamp以外 libmemcached 安装memcached扩展 2.2.0 memcached主主复制与高可用 memcached支持多个memcached之间相互复制已解决memcached的容灾问题。 memcached提供了专门用于高可用配置的软件八包。本案例以memcached-1.2.8-repcached-2.2.tar.gz为例。 实验过程 处理内核安全机制与防火墙 两台主机构建高可用环境 实验步骤基本一样因此可以同步执行 安装libevent 安装编译环境及服务控制脚本所需软件包 光盘的仓库安装gcc* psmisc 解压后配置项 指定安装路径即可 ./configure --prefix/usr/local/libevent 编译安装 make make install 安装memcached-1.2.8-repcached-2.2.tar.gz 解压后配置项 ./configure \ --prefix/usr/local/memcached_replication \ --enable-replication \ --with-libevent/usr/local/libevent --enable-replication一定要启用否则无法进行主主复制操作。 --with-libevent指定事件通知函数库 在进行编译前需要修改源代码 memcached.c 在55~60行去掉 #if defined(__FreeBSD__) || defined(__APPLE__) #endif 之后进行编译安装 ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/ memcached的启动需要在该命令行下寻找函数 启动memcached /usr/local/memcached_replication/bin/memcached -d -u root -m 128 -x 192.168.10.102 -d 以守护进程的方式允许 -u 指定运行用户 -x 指定复制对端服务器的地址如果在编译中没有启用复制功能则会在报错没有该选项。 -m 最大内存使用量默认64M 该位置需要修改为对方的IP 之后再两台服务器上查看是否开启服务进程与联系对端的进程。 利用telnet再一台主机上创建在另一台主机上查询以验证复制功能。 memcached的高可用 准备前奏 关闭NetworkManager 不关闭会让vip无法漂移 安装keepalived 修改配置文件 router_id LVS_01 两台主机不同用于区分。 #vrrp_strict 注释掉严格模式否则无法实现单播通信 vrrp_script check_down { ##定义要执行的脚本 script /etc/keepalived/memcached.sh ##脚本路径和名称 interval 1 ##间隔1秒执行一次 } 添加脚本单元不单对整机进行检查还要对服务进行检查。 #!/bin/bash # if [ $(ps -C memcached --no-header | wc -l) -eq 0 ]; then systemctl restart keepalived fi state BACKUP interface ens33 确定承载网卡 virtual_router_id 51 保证两台服务器用同一个id priority 100 注意主服务器与从服务器的优先级 nopreempt 根据性能优劣来选择是否关闭抢占功能 virtual_ipaddress { 192.168.10.100 } 设定vip track_script { check_down } 调用脚本 之后进行验证测试 需要修改访问测试页面的缓存服务器地址如果搭建dns服务器则修改域名对应IP即可。 关闭memcached进行高可用检测 总结双节点部署memcached需要的软件包 memcached-1.2.8-repcached-2.2.tar.gzmemcached分布式高可用专用版软件包 实现高可用的keepalived
全文复制到xmind中即可形成条理性笔记。