当前位置: 首页 > news >正文

网站搜索排名优化怎么做医疗网站建设比较好的

网站搜索排名优化怎么做,医疗网站建设比较好的,wordpress 同分类文章,智慧城市网站建设小阿轩yx-高性能内存对象缓存 案例分析 案例概述 Memcached 是一款开源的高性能分布式内存对象缓存系统用于很多网站提高访问速度#xff0c;尤其是需要频繁访问数据的大型网站是典型的 C/S 架构#xff0c;需要构建 Memcached 服务器端与 Memcached API 客户端用 C 语言…小阿轩yx-高性能内存对象缓存 案例分析 案例概述 Memcached 是一款开源的高性能分布式内存对象缓存系统用于很多网站提高访问速度尤其是需要频繁访问数据的大型网站是典型的 C/S 架构需要构建 Memcached 服务器端与 Memcached API 客户端用 C 语言编写的Memcached API 客户端可用任何语言来编写如 PHP、Python、Perl等 案例前置知识点 数据存储方式与数据过期方式 Memcached 具有独特的数据存储方式和数据过期方式 数据存储方式Slab Allocation 按组分配内存 数据过期方的两种方式 LRULaxzy Expiration LRU 指追加的数据空间不足时会根据 LRU 的情况淘汰最近最少使用的记录可以有效解决内存碎片问题但也可能会使内存空间产生浪费 Laxzy Expiration 即懒惰过期指使用 get 时查看记录时间从而检查记录是否已经过期 Memcached 缓存机制 缓存是常驻在内存的数据能够快速进行读取是一款非常出色的缓存软件 Memcached 分布式 部署主要依赖于 Memcached 的客户端来实现多个 Memcached 服务器是独立的数据如何存储是由路由器算法所决定 Memcached 路由算法 求余数 hash 算法 先用 key 做 hash 运算得到一个整数再做 hash 算法根据余数进行路由适合大多数据需求不适合在动态变化环境中比如大量机器添加或删除会导致大量的对象存储位置失效 一致性 hash 算法 适合在动态变化的环境中使用 原理 按照 hash 算法把对应的 key 通过一定的 hash 算法处理后映射形成一个首尾相接闭合循环然后通过使用与对象存储一样的 hash算法将机器也映射到环中顺时针方向计算将所有对象存储到离自己最近的机器中 案例环境 使用三台 CentOS 7.9 系统完成两台是 Memcached 服务器另一台是基于 LAMP 架构进行 Memcached 扩展的 Memcached API 客户端 主机操作系统主机名/IP地址主要软件及版本服务器CentOS7.9 Memcache1/192.168.10.101 libevent-2.1.8-stable.tar.gzmemcached-1.5.1.tar.gzmemcached-1.2.8-repcached-2.2.tar.gz 服务器CentOS7.9 Memcache2/192.168.10.102 libevent-2.1.8-stable.tar.gzmemcached-1.2.8-repcached-2.2.tar.gz 客户端CentOS7.9 Memcached-API/192.168.10.103 httpd-2.4.25.tar.gzphp-5.5.38.tar.gzlibmemcached-1.0.18.tar.gzmemcached-2.2.0.tgz 案例拓扑 案例需求 安装部署 Memcached 服务安装 Memcached API 客户端实现 Memcached 主主复制高可用 案例实现思路 首先安装 Memcached 服务器 及Memcached APl客户端利用 Keepalived 构建 Memcached 高可用服务器架构测试并验证 Keepalived 高可用所带来的稳定性 案例一 单 memcached 节点缓存系统 设置各节点的主机名 主机 192.168.10.101 [rootlocalhost ~]# hostnamectl set-hostname memcache1 [rootlocalhost ~]# bash 主机 192.168.10.102 [rootlocalhost ~]# hostnamectl set-hostname memcache2 [rootlocalhost ~]# bash 主机 192.168.10.103 [rootlocalhost ~]# hostnamectl set-hostname memcached-API [rootlocalhost ~]# bash 安装 Memcached 服务器 修改两台主机名 [rootlocalhost ~]# hostnamectl set-hostname memcache1 [rootlocalhost ~]# bash [rootlocalhost ~]# hostnamectl set-hostname memcache2 [rootlocalhost ~]# bash 首先关闭防火墙、内核机制 [rootmemcache1 ~]# systemctl stop firewalld [rootmemcache1 ~]# setenforce 0 安装 Libevent 上传 libevent 包至服务器 解压 [rootmemcache1 ~]# tar zxvf libevent-2.1.8-stable.tar.gz 进入 libevent [rootmemcache1 ~]# cd libevent-2.1.8-stable 安装 gcc* 环境 [rootmemcache1 libevent ~]# yum -y install gcc* 配置路径前缀 [rootmemcache1 libevent-2.1.8-stable]# ./configure --prefix/usr/local/libevent make install 执行 [rootmemcache1 libevent-2.1.8-stable]# make make install Libevent 是用 C 语言编写轻量级开源高性能事件通知库已经被广泛应用。作为底层的网络库如memcached、Vomit、Nylon、Netchat等 亮点 事件驱动高性能轻量级专注于网络没有 ACE 那么臃肿庞大源代码相当精炼、易读跨平台支持 Windows、Linux、*BSD、Mac Os支持多种 I/O 多路复用技术epoll、poll、dev/poll、select、kqueue等支持 I/O 定时器和信号事件注册事件优先级 安装 Memcached 上传 memcached-1.5.1.tar.gz 至服务器 解压 [rootmemcache1 ~]# tar zxvf memcached-1.5.1.tar.gz 进入 [rootmemcache1 ~]# cd memcached-1.5.1 配置路径 [rootmemcache1 memcached-1.5.1]# ./configure --prefix/usr/local/memcached --with-libevent/usr/local/libevent//退出 [rootmemcache1 memcached-1.5.1]# cd 上传 memcached.service 脚本至服务器 下载 psmisc [rootmemcache1 ~]# yum -y install psmisc psmisc 提供了 killall 命令 添加执行权 [rootmemcache1 ~]# chmod x memcached_service.sh 启动服务 [rootmemcache1 ~]# ./memcached_service.sh start 查看进程 [rootmemcache1 ~]# netstat -anpt | grep memcached tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 20564/memcached tcp6 0 0 :::11211 :::* LISTEN 20564/memcached Memcached API 客户端 先安装 gcc* [rootmemcached-api]# yum -y install gcc* 设置好 yum 源 [rootmemcached-api ~]# rm -rf /etc/yum.repos.d/* curl -o /etc/yum.repos.d/CentOS-Base.repo ftp://192.168.2.149/repo/CentOS-Base.repo curl -o /etc/yum.repos.d/epel.repo ftp://192.168.2.149/repo/epel.repo [rootmemcached-api ~]# yum clean all 安装 httpd、php [rootmemcached-api ~]# yum -y install httpd mariadb mariadb-server php php-devel php-mysql 启动服务 [rootmemcached-api ~]# systemctl start mariadb 数据库设置密码 [rootmemcached-api ~]# mysqladmin -uroot password pwd123 启动 httpd [rootmemcached-api ~]# systemctl start httpd 关闭防火墙、内核机制 [rootmemcached-api ~]# systemctl stop firewalld [rootmemcached-api ~]# setenforce 0 切换目录 [rootmemcached-api ~]# cd /var/www/html 编写测试文件 [rootmemcache-api html]# vim test1.php ?php phpinfo(); ? 浏览器访问 192.168.10.103/test1.php 退出当前目录 上传 libmemcached-1.0.18.tar.gz 至服务器 解压 [rootmemcached-api ~]# tar zxvf libmemcached-1.0.18.tar.gz 进入 [rootmemcached-api ~]# cd libmemcached-1.0.18 配置安装路径 [rootmemcached-api libmemcached-1.0.18]# ./configure --prefix/usr/local/libmemcached --with-memcached/usr/local/memcached make install 执行 rootmemcached-api libmemcached-1.0.18]# make make install 退出当前目录 上传 memcached-2.2.0.tgz 至服务器 解压 [rootmemcached-api ~]# tar zxvf memcached-2.2.0.tgz 进入 [rootmemcached-api ~]# cd memcached-2.2.0 利用 phpize 生产脚本 [rootmemcached-api memcached-2.2.0]# phpize 安装 zlib [rootmemcached-api memcached-2.2.0]# yum -y install zlib 指定配置脚本位置 [rootmemcached-api memcached-2.2.0]#./configure --with-php-config/usr/bin/php-config --with-libmemcached-dir/usr/local/libmemcached/ --disable-memcachedsasl --with-zlib-dir make install 执行 [rootmemcached-api memcached-2.2.0]# make make install 退出当前目录 修改配置文件 [rootmemcached-api ~]# vim /etc/php.ini //添加下面内容 extensionmemcached.so 重启 httpd [rootmemcached-api ~]# systemctl restart httpd 浏览器刷新网站查看 切换目录 [rootmemcached-api ~]# cd /var/www/html/ 上传 test2.php代码至服务器 刷新网站测试 Memcached 数据库操作与管理 安装 telnet 软件包 [rootmemcachel ~]# yum -y install telnet 连接 [rootmemcachel ~]# telnet 127.0.0.1 11211 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is ^]. get key VALUE key 3932160 25 Memcache test successful! END quit rootmemcachel ~]# telnet 127.0.0.1 11211 //添加一条键值数据 add username 0 0 8 zhangsan STORED 表示键值名为 username 标记位表示自定义信息为 0 过期时间为 0永不过期单位为秒 字节数为 8  zhangsan 为值这里需要注意输入长度为8 字节与设定值符合 //查询键值数据 get username VALUE username 0 8 zhangsan END gets username VALUE username 0 8 2 zhangsan END get 后跟键名。如果检查最近是否更新可以使用 gets最后一位显示的是更新因子每更新一次更新因子数会加一 //更新一条键值数据 set username 0 0 4 lisi STORED get username VALUE username 0 4 everything END gets username VALUE username 0 4 4 lisi END //清除一条缓存数据 delete username DELETED get username END //检查后更新 check and set add username 0 0 8 zhangsan STOREDgets username VALUE username 0 8 7 zhangsan END //注意因为更新因子和gets得到的不一致这个语句的更新会失败 cas username 0 0 8 1 lodging EXISTS cas username 0 0 8 7 zhangsai STORED gets username VALUE username 0 7 8 lodging END cas命令的最后一个数字是更新因子如果gets获取到的更新因子和cas命令提供的更新因子一致则更新改数据否则不会更新会提示exists cas命令的第三个数字是要更新的数据的字节数和接下来输入进去的字符串的字节数要一致否则会报错 //追加数据 //后追加 8 字节 append username 0 0 8 zhangsan STORED get username VALUE username 0 14 lodgingzhangsan END //清除所有缓存数据 flush_all OK //查看服务器统计信息 stats //返回所有键值对统计信息 stats items //返回指定存储空间的键值对 stats cachedump 1 0 //显示各个 slab 的信息包括 chunk 的大小、数目、使用情况等 stats slabs //输出所有 item 的大小和个数 stats sizes //清空统计数据 stats reset //退出 quit 案例二 Memcached 实现主主复制和高可用的方式 Memcached 主主复制架构 支持多个 Memcached 之间相互复制双向复制主备都是可读可写的 可以解决 Memcached 的容灾问题 此步骤在两台memcache服务器上都执行 192.168.10.101192.168.10.102 修改主机名 [rootlocalhost ~]# hostnamectl set-hostname memcache1 [rootlocalhost ~]# bash [rootlocalhost ~]# hostnamectl set-hostname memcache2 [rootlocalhost ~]# bash 这里开启会话同步 首先关闭防火墙、内核机制 [rootmemcache1 ~]# systemctl stop firewalld [rootmemcache1 ~]# setenforce 0 安装 gcc* 环境 [rootmemcache1 ~]# yum -y install gcc* 上传 libevent-2.1.8-stable.tar.gz 至服务器 解压 [rootmemcache1 ~]# tar zxvf libevent-2.1.8-stable.tar.gz 进入 [rootmemcache1 ~]# cd libevent-2.1.8-stable 配置文件路径 [rootmemcache1 libevent-2.1.8-stable]# ./configure --prefix/usr/local/libevent make install 执行 [rootmemcache1 libevent-2.1.8-stable]# make make install 上传 memcached-1.2.8-repcached-2.2.tar.gz 解压 [rootmemcache1 ~]# tar zxvf memcached-1.2.8-repcached-2.2.tar.gz 进入 [rootmemcache1 ~]# cd memcached-1.2.8-repcached-2.2 配置文件路径 [rootMemcached1 memcached-1.2.8-repcached-2.2]# ./configure --prefix/usr/local/memcached_replication --enable-replication --with-libevent/usr/local/libevent 修改源代码配置文件 [rootmemcache1 memcached-1.2.8-repcached-2.2]# vim memcached.c //找到如下几行在55行--60行 /* FreeBSD 4.x doesnt have IOV_MAX exposed. */ #ifndef IOV_MAX #if defined(__FreeBSD__) || defined(__APPLE__) # define IOV_MAX 1024 #endif #endif//修改成如下所示删掉上面红色的两行 /* FreeBSD 4.x doesnt have IOV_MAX exposed. */ #ifndef IOV_MAX # define IOV_MAX 1024 #endif make install 执行 [rootmemcache1 memcached-1.2.8-repcached-2.2]# make make install 函数路径链接 [rootmemcache1 ~]# ln -s /usr/local/libevent/lib/libevent-2.1.so.6 /usr/lib64/ 这里取消会话同步 启动服务 [rootMemcached1 ~]# /usr/local/memcached_replication/bin/memcached -d -u root -m 128 -x 192.168.10.101 两台服务器查看进程 [rootmemcache1 ~]# netstat -antp |grep memcached tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 52646memcached tcp 0 0 192.168.10.101:11212 192.168.10.102:38298 ESTABLISHED 52646memcached tcp6 0 0 :::11211 :::* LISTEN 52646memcached [rootmemcache2 ~]# netstat -antp |grep memcached tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 29976memcached tcp 0 0 192.168.10.102:38298 192.168.10.101:11212 ESTABLISHED 29976memcached tcp6 0 0 :::11211 :::* LISTEN 29976memcached 使用 telnet 进行简单验证复制功能 安装 telnet [rootmemcache1 ~]# yum -y install telnet 在 Memcached1 上插入一条具有特点的键值 [rootmemcache1 ~]# telnet 192.168.10.102 11211 //自定义信息永不过期8个字节 set username 0 0 8 12345678 STORED get username VALUE username 0 8 12345678 END quit 在 Memcached2 上进行查看刚刚插入的键值 安装 telnet [rootmemcache1 ~]# yum -y install telnet [rootmemcache2 ~]# telnet 192.168.10.102 11211 get username VALUE username 0 8 12345678 END gets username //1代表更新因子 VALUE username 0 8 1 12345678 END //自定义信息永不过期8个字节更新因子要与gets得到的一致 cas username 0 0 8 1 zhangsan STORED 这里同步会话 Memcached 主主复制Keepalived 高可用架构 安装配置 keepalived两台主机都安装 [rootmemcache1 ~]# yum -y install keepalived 修改主 keepalived 配置文件 [rootmemcache1 ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_01vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0 }//定义要执行的脚本 vrrp_script check_down { //脚本路径和名称 script /etc/keepalived/memcached.sh //间隔1秒执行一次 interval 1 }vrrp_instance VI_1 {//master角色不能设置nopreempt所以此处要设置为BACKUPstate BACKUPinterface ens33virtual_router_id 51//从主机的优先级要小于此数字priority 100 advert_int 1 //添加此语句关闭了抢占功能从主机不需要 nopreemptauthentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.100 }//调用前面的脚本 track_script {check_down } } vrrp_strict严格遵守VRRP协议,禁止以下状况 无VIP地址 配置了单播邻居 在VRRP版本2中有IPv6地址开启动此项会自动开启iptables防火墙规则建议关闭此项配置 编写脚本文件 [rootmemcached1 keepalived]# vim /etc/keepalived/memcached.sh #!/bin/bash if [ $(ps -C memcached --no-header | wc -l) -eq 0 ]; thensystemctl stop keepalived fi 添加执行权限 [rootmemcached1 keepalived]# chmod x /etc/keepalived/memcached.sh 配置从 keepalived 文件 [rootmemcache2 ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs {notification_email {acassenfirewall.locfailoverfirewall.locsysadminfirewall.loc}notification_email_from Alexandre.Cassenfirewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_02vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0 }//定义要执行的脚本 vrrp_script check_down { //脚本路径和名称 script /etc/keepalived/memcached.sh //间隔1秒执行一次 interval 1 }vrrp_instance VI_1 {state BACKUP interface ens33virtual_router_id 51//从主机的优先级要小于此数字priority 99 advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.10.100 }//调用前面的脚本 track_script {check_down } } 编写脚本文件 [rootmemcached2 keepalived]# vim /etc/keepalived/memcached.sh #!/bin/bash if [ $(ps -C memcached --no-header | wc -l) -eq 0 ]; thensystemctl stop keepalived fi 添加执行权限 [rootmemcached2 keepalived]# chmod x /etc/keepalived/memcached.sh vrrp_strict 严格遵守VRRP协vim议 这将禁止VIPs unicast peers (虚拟IP单播对等体)这样会使得这个VIP无法进行单播通信 两台服务器关闭 NetworkManager [rootmemcachel keepalived]# systemctl stop NetworkManager 测试验证 两台服务器上启动 keepalived [rootMemcached1 ~]# systemctl start keepalived [rootmemcached2 ~]# systemctl start keepalived 主服务器查看 VIP [rootmemcachel keepalived]# ip a 2:ens33: BROADCAST,MULTICAST,UP,LOWER UP mtu 1500 gdisc pfifo fast stateoup default glen 1000inet 192.168.10.100/32 scope global ens33 在客户端修改缓存服务器地址 切换目录 [rootmemcached-api ~]# cd /var/www/html [rootmemcached-api html]# vim /usr/local/httpd/htdocs/test2.php ?php $memcache new Memcached(); $memcache-addServer(192.168.10.100, 11211); $memcache-set(key, Memcache test01 successful!, 0, 60); $result $memcache-get(key); unset($memcache); echo $result; ? 浏览器刷新测试 pkill memcached 检查当前主机的memceched进程和keepalived进程 关闭memcached后该主机的keepalived也会被脚本关闭于是VIP就漂移到了另一台主机待此主机修好后把memcached和keepalived开启由于设置了不抢占VIP不会抢占回来但是把第二台主机的memcached关闭后第二台主机的keepalived也会关闭于是VIP就漂移回了第一台主机。完成故障的转移 小阿轩yx-高性能内存对象缓存
http://www.hkea.cn/news/14390297/

相关文章:

  • 网站制作窍门商铺装修
  • 常州网站建设招聘邵阳市今天新闻
  • iis如何做网站管理器低价网站建设顺德
  • 河北省网络科技网站百度竞价排名是什么
  • 天津企业网络建站网络规划设计师大纲
  • 建立门户网站荣昌集团网站建设
  • 杭州网页模板建站wordpress页面显示文章列表
  • 网站开发国内外现状研究php空间放多个网站
  • 做茶叶网站的素材seo优化排名易下拉技巧
  • 物流系统规划课程建设网站连云港市网站建设
  • 佛山网站建设科技公司网站的360快照怎么做
  • cps网站建设网站未备案做经营被罚款
  • 建设银行征信中心个人信用查询官方网站深圳泰安建设公司怎么样
  • 网站申请支付宝接口wordpress 多标签
  • 小工厂怎么做网站flash网站开发教程
  • 网页网站建设的ppt模板下载免费影视网站建设
  • 网站程序和空间区别合肥网站维护
  • 做商城网站要哪些流程图网站做快照怎么做
  • 电子商务网站开发报价网页美工设计教案
  • 美食网站建设的功能中国宁波网天一论坛
  • 南昌自助建站php商场网站开发经验
  • 九讯鹿网站建设企业营销策划案例分析
  • 西安博威建设工程有限公司招聘网站兼职设计师平台
  • 前端网站建设和维护做旅游网站毕业设计
  • 手机 网站 尺寸电脑网络连接不上怎么解决
  • 简约大气的网站商城网站开发项目文档
  • 哪些网站的活动策划做的好卖鞋做哪个网站好
  • 长宁青岛网站建设商城网站建设企业
  • 做网站主机要选好培训机构招生方案模板
  • 做网站网页需要学些什么白银市建设局网站首页