上海网页制作设计/南昌seo报价
-
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即可
-
extension=memcached.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.gz,memcached分布式高可用专用版软件包
-
实现高可用的keepalived
-
-
-
-
全文复制到xmind中即可形成条理性笔记。
相关文章:

memcached 高性能内存对象缓存
memcached 高性能内存对象缓存 memcache是一款开源的高性能分布式内存对象缓存系统,常用于做大型动态web服务器的中间件缓存。 mamcached做web服务的中间缓存示意图 当web服务器接收到请求需要处理动态页面元素时,通常要去数据库调用数据,但…...

C语言 分割链表
题目来源: 代码部分,参考官方题解的写法: // 思路: 就是把原始链表,拆分为2部分,最后再拼接一下。struct ListNode* partition(struct ListNode* head, int x) {struct ListNode* small malloc(sizeof(struct ListNode));struct ListNode*…...
spring ioc的原理
1、控制反转(IOC):对象的创建控制权由程序自身转移到外部(容器) 2、依赖注入(DI):所谓依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。 Spring 中的 IoC 的实现原理就是工厂模式加反射机制。 参考资料…...

npm安装依赖包报错,npm ERR! code ENOTFOUND
一、报错现象: npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning ETIMEDOUT: request to https://registry.npmjs.org/vue failed, reason: connect ETIMEDOUT 104.16.23.35:443 npm WARN registry Using stale data…...

【iOS】——内存对齐
内存对齐是什么 内存对齐指的是数据在内存中的布局方式,它确保每个数据类型的起始地址能够满足该类型对齐的要求。这是因为现代处理器在访问内存时,如果数据的起始地址能够对齐到一定的边界,那么访问速度会更快。这种对齐通常是基于数据类型…...

网络安全-网络安全及其防护措施10
46.软件定义网络(SDN) 软件定义网络(SDN)的概念和特点 软件定义网络(SDN)是一种新兴的网络架构,通过将网络的控制平面(Control Plane)和数据转发平面(Data …...

Pytorch基础应用
1.数据加载 1.1 读取文本文件 方法一:使用 open() 函数和 read() 方法 # 打开文件并读取全部内容 file_path example.txt # 替换为你的文件路径 with open(file_path, r) as file:content file.read()print(content)方法二:逐行读取文件内容 # 逐…...

Axure 教程 | 设置文本框背景透明
在AXURE软件中,部件样式可以编辑,但有时却无法满足所有个性化原型的需求。例如文本框部件,可以设置是否隐藏边框,但即使隐藏边框之后,文本框还会有白色的背景。 当界面需要一个无背景色的输入框时,对于完…...

【BUG】已解决:NOAUTH Authentication required
已解决:NOAUTH Authentication required 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武汉城市开发者社区主理人…...

全国产服务器主板:搭载飞腾FT2000+/64处理器的高性能加固服务器
近期很多朋友咨询全国产化的服务器主板。搭载的是飞腾FT-2000/64的全国产化服务器主板。他的主要特点是:①丰富的PCIe、千兆以太网、SATA接口,可用作数据处理、存储、通信服务器;②板载独立显示芯片,对外HDMI/VGA/L…...

OPC UA边缘计算耦合器BL205工业通信的最佳解决方案
OPC UA耦合器BL205是钡铼技术基于下一代工业互联网技术推出的分布式、可插拔、结构紧凑、可编程的IO系统,可直接接入SCADA、MES、MOM、ERP等IT系统,无缝链接OT与IT层,是工业互联网、工业4.0、智能制造、数字化转型解决方案中IO系统最佳方案。…...

【已解决】Django连接MySQL启动报错Did you install mysqlclient?
在终端执行python manage.py makemigrations报错问题汇总 错误1:已安装mysqlclient,提示Did you install mysqlclient? 当你看到这样的错误信息,表明Django尝试加载MySQLdb模块但未找到,因为MySQLdb已被mysqlclient替代。 【解…...

ubuntu gcc g++版本切换
要将 GCC 和 G 的版本从 12.4 降低到 9,你可以按照以下步骤操作: 安装 GCC 和 G 9: sudo apt update sudo apt install gcc-9 g-9 使用 update-alternatives 设置优先级: sudo update-alternatives --install /usr/bin/gcc gcc…...

如何发一篇顶会论文? 涉及3D高斯,slam,自动驾驶,三维点云等等
SLAM&3DGS 1)SLAM/3DGS/三维点云/医疗图像/扩散模型/结构光/Transformer/CNN/Mamba/位姿估计 顶会论文指导 2)基于环境信息的定位,重建与场景理解 3)轻量级高保真Gaussian Splatting 4)基于大模型与GS的 6D pose e…...

Java面试八股之什么是Redis的缓存更新
什么是Redis的缓存更新 Redis的缓存更新是指当缓存中的数据发生变化时,需要将这些变化同步到缓存中以保持数据的一致性。缓存更新的目的是确保缓存中的数据始终是最新的,以便用户可以获取到最新的数据。 常见的缓存更新策略包括: 直接覆盖…...

新华三H3CNE网络工程师认证—VLAN使用场景与原理
通过华三的技术原理与VLAN配置来学习,首先介绍VLAN,然后介绍VLAN的基本原理,最后介绍VLAN的基本配置。 一、传统以太网问题 在传统网络中,交换机的数量足够多就会出现问题,广播域变得很大,分割广播域需要…...

Linux-开机自动挂载(文件系统、交换空间)
准备磁盘 添加三块磁盘(两块SATA,一块NVMe) 查看设备: [rootlocalhost jian]# ll /dev/sd* [rootlocalhost jian]# ll /dev/nvme0n2 扩:查看当前主机上的所有块设备,通过如下指令实现: [root…...

[003-02-10].第10节:Docker环境下搭建Redis主从复制架构
我的博客大纲 我的后端学习大纲 我的Redis学习大纲 1.cluster(集群)模式-docker版 哈希槽分区进行亿级数据存储 1.1.面试题:1~2亿条数据需要缓存,请问如何设计这个存储案例 1.回答:单机单台100%不可能,肯…...

uni-app学习HBuilderX学习-微信开发者工具配置
HBuilderX官网:简介 - HBuilderX 文档 (dcloud.net.cn)https://hx.dcloud.net.cn/ uni-app官网: uni-app官网 (dcloud.net.cn)https://uniapp.dcloud.net.cn/quickstart-hx.htmlHBuilder下载安装:打开官网 uni-app项目的微信开发者工具配置…...

持续集成08--Jenkins邮箱发送构建信息及测试报告
前言 在持续集成(CI)和持续部署(CD)的自动化流程中,及时通知团队成员关于构建的成功或失败是至关重要的。Jenkins,作为强大的CI/CD工具,提供了多种通知机制,其中邮件通知是最常用且有…...

专题四:设计模式总览
前面三篇我们通过从一些零散的例子,和简单应用来模糊的感受了下设计模式在编程中的智慧,从现在开始正式进入设计模式介绍,本篇将从设计模式的7大原则、设计模式的三大类型、与23种设计模式的进行总结,和描述具体意义。 设计模式体…...

基于X86+FPGA+AI数字化医疗设备:全自动尿沉渣检测仪
助力数字医疗发展,信迈可提供全自动尿沉渣检测仪专用计算机 随着信息技术的不断进步,医疗也进入了一个全新的数字化时代。首先是医疗设备的数字化,大大丰富了医疗信息的内涵和容量,具有广阔的市场发展前景。 数字化医疗设备&…...

vue2导入elementui组件库
第一步安装 npm i element-ui -S 第二步在main.js中导入 第三步使用然后在运行项目...

Django定时任务框架django-apscheduler的使用
1.安装库 pip install django-apscheduler 2.添加 install_app django_apscheduler 3.在app下添加一个task.py文件,用来实现具体的定时任务 task.pydef my_scheduled_job():print("这个任务每3秒执行一次", time.time()) 4.在app下创建一个manag…...

知识库文档处理,word转markdown
前一篇我讲解了如何对接MiniMax实现FAQ,其实知识库不仅仅可以实现FAQ,还能实现帮助文档的查询,内部培训资料的查询等等,但是这些培训资料大部分是word版本的,并且有层级结构,比如标题1,标题1-1等…...

TF和TF-IDF区别和联系
TF(Term Frequency)和TF-IDF(Term Frequency-Inverse Document Frequency)都是用于文本挖掘和信息检索的统计方法,用于评估一个词在文档或文档集合中的重要性。 一.TF(Term Frequency) 1.定义…...

02线性表 - 链表
这里是只讲干货不讲废话的炽念,这个系列的文章是为了我自己以后复习数据结构而写,所以可能会用一种我自己能够听懂的方式来描述,不会像书本上那么枯燥和无聊,且全系列的代码均是可运行的代码,关键地方会给出注释^_^ 全…...

高性能、安全、低碳绿色的趋势下,锐捷网络发布三擎云办公解决方案 3.0
桌面虚拟化作为云时代的主流和热门技术,已经取得了广泛应用。随着生成式 AI 爆炸式发展,CSDN 看到,人工智能正在引发计算、开发、交互三大范式的全面升级,技术开发或将迎来一次全新的科技变革周期,因此 VDI 云桌面随之…...

python3 shutil排除特定或者模糊匹配文件或目录
import shutil import fnmatchdef ignore_files(dir, files):# 定义要忽略的模式ignore_patterns = [file2.txt, dir2, *复制*.py]ignore_list = []<...

Spire.PDF for .NET【文档操作】演示:如何在 C# 中切换 PDF 层的可见性
我们已经演示了如何使用 Spire.PDF在 C# 中向 PDF 文件添加多个图层以及在 PDF 中删除图层。我们还可以在 Spire.PDF 的帮助下在创建新页面图层时切换 PDF 图层的可见性。在本节中,我们将演示如何在 C# 中切换新 PDF 文档中图层的可见性。 Spire.PDF for .NET 是一…...