23使用服务集群改善网站并发处理能力
增加服务器:一台变成N台
会出现几个问题:
哪一台服务器来转发请求(负载均衡)
请求的服务器,如何维护session的一致性(有状态与无状态的问题)
负载均衡:
请求到负载均衡服务器,在由负载均衡发给服务器
负载均衡技术:
七层:应用层:基于特定软件的负载均衡(http重定向)、反向代理服务器
http重定向,实现简单,但性能较差
代理服务器,实现简单,但性能较差
传输层:
DNS域名解析负载均衡,效率比HTTP重定向高,减少维护负载均衡服务器成本
基于NAT的负载均衡:技术较为成熟,网关位置,通过硬件实现,四层交换机一般采用这种技术
负载均衡算法:
静态算法(不考虑动态负载)
轮转算法:
加权轮转算法:
源地址哈希散列算法:
目标地址哈希散列算法:
随机算法:
动态算法(考虑动态负载)
最小连接数算法
加权最小连接数算法
加权百分比算法:
硬件负载均衡F5
软件负载均衡:LVS Nginx HAproxy
有状态和无状态:
无状态服务:服务器本身不存储任何信息
有状态服务:服务器本身存储信息
有状态与无状态共享机制
有状态变成无状态:
方案1携带session的cookie
方案2服务器间同步session
方案3将session存在redis(用的最多)
数据库的读写分离
为了提升效率,一台数据库负责读操作,另一台数据库负责写操作,数据库间进行复制
主从数据库结构特点:
一般一主多从
主库做写操作,从库做读操作
主从复制步骤
主库更新数据完成前,将操作写入日志文件
从库与主库连接,做binlong dump process 并将事件写入中继日志
从库执行中继日志事件,保持与主库一致
用缓存缓解读库的压力
分布式缓存服务器