博客24周
1、搭建一个 LNMP 架构请写出它的底层原理,当用户访问的是静态资源、和动态资源这两种类型的资源是,其中各个 service 之间做了什么操作。请分别一 一写出
LNMP 架构中,L是liunx 操作系统,N是nginx,负责静态页面和调用外部程序解析动态页面。M是mysql 后台数据库。P 是php,独立的服务php-fpm,nginx 直接处理静态资源,动态资源调用php-fpm。
1、用户通过浏览器http request请求到服务器(Nginx) ,服务器响应并处理web请求,将静态资源(静态的图片,视频,css等)直接返回给用户并缓存在用户主机上。
2、Nginx服务器调用动态资源,PHP脚本调用fastCGI传输给php-fpm,然后php-fpm调用PHP解释器进程解析PHP脚本。
出现大流量高并发情况,PHP解析器也可以开启多进程处理高并发,将解析后的脚本返回给php-fpm,然后php-fpm再调给fast-cgi将脚本解析信息传送给nginx,
服务器再通过http response传送给用户浏览器。
3、浏览器再将服务器传送的信息进行解析与渲染,呈现给用户。
2、AOF 和 RDB 的两者之间的区别以及优缺点
redis持久化的两种模式:
备份策略不同, RDB以时间点方式备份,可以备份多个。出现问题恢复时只能恢复到某个时间点。AOF(AppendOnlyFIle)则是按操作顺序追加文件指定文件尾部。
AOF模式的优点:1、数据安全性高。采用fsync策略(fsync同步内存中redis所有修改的文件到存储设备),即使机器出现故障也只丢失1秒钟的数据。
2、该机制对日志写入操作采用append模式,即使机器出现宕机,也不会破坏日志文件中已经存在的内容。如果操作只写入一半 数据出现系统问题,
在redis下一次启动前,通过redis-check-aof工具来解决数据一致性问题。
3、当AOF体积过大时,后台自动重写AOF文件,重写过程安全。
4、拥有清晰,易于理解的日志文件记录所有的修改操作。可利用该文件完成数据重建。
RDB模式的优点:1、RDB以快照的方式保存了某时间点的数据,可以通过脚本执行redis指令bgsave(异步,非阻塞)或save(同步,阻塞)命令自定义时间点备份。
2、备份的大数据,恢复速度快
3、RDB可以最大化redis性能。父进程保存RDB文件只需fork出一个子进程。子进程就会处理保存工作。父进程无需执行任何磁盘I/O操作。
3、请问 Redis 持久化如何实现。
AOF模式配置文件如下:
appendonly yes
appendfilename "appendonly-${port}.aof"
appendfsync everysec
dir /bigdiskpath
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewirte-min-size 64mb
aof-load-truncated yes
RDB配置文件如下:
save 900 1
save 300 10
save 60 10000
dbfilename dump_6379.rdb
dir /data/redis/data/
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
4、通过脚本实现自动化 RDB 备份
cat redis_bak.sh
!#/bin/bash
ip='127.0.0.1'
passwd='123456'
redis-cli -h ${ip} -a ${passwd} save &> /dev/null
DATE=`date +%F-%T`
[ -e /backup/redis-back/ ] || mkdir -p /backup/redis-back/
mv /data/redis/data/dump_6379.rdb /backup/redis-back/dump_6379-${DATE}.rdb
###添加定时任务
*/10 * * * * /bin/bash /root/redis_bak.sh >> /tmp/redis_bak.log