高可用的应用:
一. 通过负载均衡进行无状态服务的失效转移
二. 应用服务器集群的Session管理(负载均衡可能会将请求分发到集群的任何一台因供应服务器,因此如何保证每次请求依然能够获得正确的session会比较复杂):
-
session复制:多台服务器同步session对象,但是当集群规模较大时对服务器和网络资源造成的负担较大。
image.png
-
session绑定:利用负载均衡的原地址Hash算法实现,负载均衡服务器总是将源于同一IP的请求发送到同一台服务器上,但是不符合高可用的特性(一台服务器挂了那么session就不存在了)
image.png
-
利用cookie记录session:但是cookie大小受限,并且每次都要携带cookie影响性能
image.png
-
session服务器(比如单点登录):利用独立步数的session服务器(集群)同一管理session,应用服务器每次读写session时都访问session服务器。
image.png
高可用的服务:
一. 分级管理:核心应用和服务有限使用更好的硬件;用户及时付款购物比能不能评价商品更重要。
二. 超时设置:防止由于服务器宕机、线程死锁等原因使得用户请求长时间得不到响应,设置超时时间,执行响应的转移措施。
三. 异步调用:消息队列,避免阻塞;但是对于那种必须确认服务调用成功才能继续下一步的是不合使用异步调用。
四. 服务降级:
- 拒绝服务:拒绝低优先级服务调用;随机拒绝部分请求调用,节省资源。
- 关闭功能:关闭部分不重要的服务(比如淘宝双十一关闭评价、确认收货等非核心服务)。
五. 幂等性设计:服务调用可能重复(没有及时收到响应而重复调用),因此服务层需要保证服务重复调用和调用一次产生效果相同(比如转账功能)。
高可用的数据:利用数据备份和失效转移机制
一. CAP理论
二. 数据备份:冷备份,热备份(异步热备份,同步热备份)
![](https://img.haomeiwen.com/i13526929/d8d415b417ad3f7d.png)
![](https://img.haomeiwen.com/i13526929/614f29f11773b76c.png)
三. 失效转移:
-
失效确认:心跳监测和应用程序访问失败报告
image.png
- 访问转移
- 数据恢复
网站运行监控:
一. 监控数据采集:
- 用户行为日志收集:服务端日志收集(web服务器记录日志);客户端浏览器日志收集(js脚本收集用户操作行为),可以使用Storm
- 服务器性能监控:收集系统负载,内存占用的使用情况,及时做出故障预警,调整策略。可以使用Ganglia
- 运行数据报告:缓冲命中率,平均响应延迟时间等
二. 监控管理: - 系统报警
- 失效转移
- 自动优雅降级
![](https://img.haomeiwen.com/i13526929/f560fb8b31b445b0.png)
网友评论