如何打造海量高并发高可靠互联网项目
2018-10-10 17:57:55 21 举报
AI智能生成
如何打造海量高并发高可用系统
作者其他创作
大纲/内容
服务器
缓存
redis缓存
redis回收策略
设置过期时间的,最近最少使用淘汰
设置过期时间的随机淘汰
设置过期时间的,即将到期的淘汰
没设过期时间的,随机淘汰
没设过期时间的,最近最少使用淘汰
不淘汰
redis过期策略
定时过期
根据定时器,到期删除
定期过期
每隔一段时间判断,是否有过期数据,有才删除
惰性过期
数据就算过期也不删除,直到再次被调用,判断过期删除
redis哨兵机制
redis集群部署
redis基本数据类型
String
hash
List
set
zset
持久化机制
RDB快照
能保存大部分数据,消耗性能较小
AOF存储
能保存几乎所有数据,但更消耗性能
redis主从复制
memcache
内存储存,不支持持久化
只支持key-value格式
集群部署
反向代理
nginx负责反向代理、负载均衡
负载均衡
数据库
sql语句优化
like语句不要以%开头
group by语句不需要排序的加上order null
尽量不使用子表查询,使用普通的联合查表
尽量不使用is null判断,表中字段尽量加上not null
尽量避免使用!=、<>符号
避免where子句中进行运算
通常where order by语句后的条件字段都需要加上索引
慢查询
mysql开启慢查询,记录运行超过10s的语句进行优化
读写分离
使用mycat进行读写分离,主从复制,分库分表
分表分库
分表可采用主键取模算法,按时间划分,按账号规则等
主从复制
采用二进制日志
表类型
MyISAM
不支持事务,但读写速度最快
innodb
支持事务,读写比myisam稍慢
三大范式
原子性,不可再分割
一行数据只做一件事,依赖主键
列数据之间不存在传递性,只和主键相关
项目
项目优化重构
JVM调优
垃圾回收机制
垃圾回收算法
标记清除法
标记压缩算法
复制算法
分代算法
引用计数法
JVM参数调优
调整堆内存的初始和最大值
调整新生代大小
调整新生代和老年代的比例
调整eden区和survior区的比例
客户端
动静分离
nginx同样可以做动静分离
CDN加速
异步请求
项目技术(不算调优)
RPC框架
dubbo
SpringCloud-feign
thift...
调节中心
zookeeper
作为dubbo分布式调节中心
作为分布式锁
配置管理中心
分布式项目框架
SpringCloud
ribbon负载均衡
Eurake分布式注册中心
feign rpc远程调用
zuul 网关
hystrix断路器
分布式定时任务调度
xxl-job
session共享
spring-session
redis缓存session,为了安全还可以以token为key
cookie存储(不推荐)
nginx使用ip_hash方式进行负载均衡,可以避免session共享问题
分布式事务解决方案
jta+atomikos
mq保证事务一致性
web安全
权限验证
shiro框架
spring-security框架
XSS攻击
特殊字符转义
DDOS攻击
nginx限流
CSRF攻击
token+验证码
sql注入攻击
使用成熟框架,避免直接拼接sql
跨域
接口加header请求头
前端jsonp
nginx部署域名
通过后端httpclient转一道
防盗链
判断refered请求头
nginx限制请求ip
0 条评论
下一页