对于redis,什么是主从复制、哨兵模式以及集群模式?
-
主从复制: 主从复制是高可用Redis的基础,哨兵和集群都是在主从复制基础上实现高可用的。主从复制主要实现了数据的多机备份,以及对于读操作的负载均衡和简单的故障恢复。
缺陷:故障恢复无法自动化:写操作无法负载均衡:存储能力受到单机的限制。
-
哨兵模式: 在主从复制的基础上,哨兵实现了自动化的故障恢复
缺陷:写操作无法负载均衡;存储能力受到单机的限制:哨兵无法对从节点进行自动故障转移,在读写分离场景下,从节点故障会导致读服务不可用,需要对从节点做额外的监控、切换操作。
-
集群: 通过集群,Redis解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。
mysql主从复制的原理
- 主服务器将修改后的操作,写入二进制日志
- 从服务器开启io线程,主动请求与主服务器同步
- 主服务器开启dump线程,将二进制日志发送给从服务器
- 从服务器将二进制日志写入到中继日志
- 从服务器开启sql线程,将中继日志中的操作更新到数据库中,完成同步
http 状态码
2xx 成功
3xx 重定向
301 永久重定向
302 临时重定向
4xx 客户端错误
401 授权错误
403 禁止访问
404 错误页面
5xx 服务端错误
502 错误网关
504 超时
http的七个过程
1 建立连接
2 同意连接
3 处理请求
4 访问资源
5 构建响应报文
6 发送响应报文
7 记录日志
nginx的模块
ngx-http-core-module 核心模块
access 访问模块
gzip 压缩模块
log 日志模块
proxy 代理模块
rewrite 重写模块
upstream 反向代理
nginx调优
- 隐藏版本号
- 防盗链优化
- cpu进程与work进程绑定(cpu的亲缘性)
- 进程打开的最大文件数
- 进程的优先级
- 惊群效应
redis特性
- 单线程
- 多路复用技术
- 纯内存结构
mysql的存储引擎
- myisam
- innodb
myisam | innodb |
---|---|
支持表级锁 | 支持行级锁 |
不支持事务 | 支持事务 |
不支持mvcc (多版本并发控制) | 支持mvcc |
不支持外键 | 支持外键 |
支持索引 | 支持索引 |
事务的特性
- 原子性:要么全部成功要么全部失败
- 一致性
- 隔离性
- 持久性
事务隔离级别
- 提交可读
- 未提交可读
- 幻读
- 串读
redis的击穿、穿透、雪崩
- 缓存击穿:redis中某一热点过期,此时又有大量用户访问这个热点
- 缓存穿透:大量请求访问redis和mysql中不存在的数据
- 缓存雪崩:redis中大量缓存集体过期,请求全部发送给了mysql
redis持久化
- RDB:类似于快照,执行速度快
手动改触发保存:save和bgsave;自动触发是 save m n
- AOF:二进制日志,默认是关闭的,需要手动开启
redis的数据类型
- 字符串
- 哈希
- 列表
- 集合
- 有序集合
http中mpm的三个工作模式
- prefork:稳定性要求高
- worker:性能要求高
- event:高并发
nginx的零拷贝技术
,在内核空间,开辟一块共享空间,用户空间的程序也可以直接在里面进行处理,从而减少拷贝次数。nginx的调度算法
-
轮询
-
加权轮询
-
最小连接算法
-
哈希
- ip哈希
- url哈希
- 一致性哈希
tomcat端口号
- 8080:http协议请求的接口
- 8005:管理接口,比较危险
- 8009:AJP协议专用接口,有漏洞
tomcat调优
- 自身的调优
- 设置最大线程数
- 设置连接超时时间
- 设置最大排队请求个数
- jvm虚拟机的调优
- 修改内存的初始大小
- 修改年轻态和老年态