2.2网站的高可用架构之高可用服务
2017-11-22 17:29
489 查看
可复用的模块为业务产品提供基础公共服务,大型网站中这些服务通常都是独立的分布式部署,被具体应用远程调用,可复用的服务和应用一样,也是无状态的服务,因此可以利用类似负载均衡的失效转移策略实现高可用的服务。高可用的服务策略有以下几点。
1、分级管理
运维上将服务器进行分级管理,核心应用及服务使用更好的资源,例如订单服务、支付服务比评价服务有更高的优先级。同时在部署上也要进行必要的分离,低优先级的服务通过启动不同的线程或者部署在不同的虚拟机上进行隔离,而高优先级的服务要部署在不同的物理机上,甚至要部署在不同地域的数据中心。
2、超时设置
由于服务器宕机、线程死锁等原因,可能导致应用程序对服务端的调用失去响应,进而导致用户请求长时间得不到响应,同时还占据着程序资源。在应用程序中设置超时时间,一旦超时,通信框架抛出异常,应用服务根据调度策略,可以选择重试或者将请求转发到提供相同服务的其他服务器上。
3、异步调用
对于一个用户注册请求,应用需调用三个服务:将用户信息写入数据库、发送账户注册成功邮件、开通对应权限。若采用同步服务调用,若邮件队列阻塞不能发送,会导致其他两个服务也无法执行,最终导致账户注册失败。
若采用异步调用的方式,应用程序将用户注册信息写入消息队列后立即返回用户注册成功响应,而剩下来三个服务作为消息的消费者任务,分别从消息队列获取用于注册信息异步执行。即使邮件队列阻塞,邮件不能发送成功,也不会影响其他服务执行,用户注册操作成功,只是晚一点收到注册成功邮件而已。
也不是所有的服务调用都可以为异步调用,对于获取用户信息的这类调用,采用异步调用会延长响应时间,对于那些必须确认服务调用成功的应用才能进行下一步操作的应用也不适合异步调用。
4、服务降级
在网站访问高峰期,为了保证核心业务的运行,可以对服务进行降级:拒绝服务或关闭服务。
5、幂等性
应用调用服务失败后,会将请求重新发送到其他服务器,但这个失败可能是服务已经处理成功,因为网络故障应用没有收到响应,这是应用重新提交请求就会导致服务重新调用,若这是转账操作,就会导致严重影响。
因此高可用服务要求在服务层保证服务重复调用和调用一次产生的结果相同,即服务具有幂等性。如将用户设置为男性等操作天然具有幂等性,但转账就比较复杂,需要通过交易编号等处理。
1、分级管理
运维上将服务器进行分级管理,核心应用及服务使用更好的资源,例如订单服务、支付服务比评价服务有更高的优先级。同时在部署上也要进行必要的分离,低优先级的服务通过启动不同的线程或者部署在不同的虚拟机上进行隔离,而高优先级的服务要部署在不同的物理机上,甚至要部署在不同地域的数据中心。
2、超时设置
由于服务器宕机、线程死锁等原因,可能导致应用程序对服务端的调用失去响应,进而导致用户请求长时间得不到响应,同时还占据着程序资源。在应用程序中设置超时时间,一旦超时,通信框架抛出异常,应用服务根据调度策略,可以选择重试或者将请求转发到提供相同服务的其他服务器上。
3、异步调用
对于一个用户注册请求,应用需调用三个服务:将用户信息写入数据库、发送账户注册成功邮件、开通对应权限。若采用同步服务调用,若邮件队列阻塞不能发送,会导致其他两个服务也无法执行,最终导致账户注册失败。
若采用异步调用的方式,应用程序将用户注册信息写入消息队列后立即返回用户注册成功响应,而剩下来三个服务作为消息的消费者任务,分别从消息队列获取用于注册信息异步执行。即使邮件队列阻塞,邮件不能发送成功,也不会影响其他服务执行,用户注册操作成功,只是晚一点收到注册成功邮件而已。
也不是所有的服务调用都可以为异步调用,对于获取用户信息的这类调用,采用异步调用会延长响应时间,对于那些必须确认服务调用成功的应用才能进行下一步操作的应用也不适合异步调用。
4、服务降级
在网站访问高峰期,为了保证核心业务的运行,可以对服务进行降级:拒绝服务或关闭服务。
5、幂等性
应用调用服务失败后,会将请求重新发送到其他服务器,但这个失败可能是服务已经处理成功,因为网络故障应用没有收到响应,这是应用重新提交请求就会导致服务重新调用,若这是转账操作,就会导致严重影响。
因此高可用服务要求在服务层保证服务重复调用和调用一次产生的结果相同,即服务具有幂等性。如将用户设置为男性等操作天然具有幂等性,但转账就比较复杂,需要通过交易编号等处理。
相关文章推荐
- Spring Cloud构建微服务架构(六)高可用服务注册中心
- 5万无一失:网站的高可用架构
- 高可用Redis服务架构分析与搭建
- 可扩展、高可用、负载均衡网站架构设计方案
- 高可用Redis服务架构微信牛牛棋牌平台出售分析与搭建
- 最简洁有效的Web服务监控架构图(网站长们最实用的监控方法)
- 大型网站技术架构(五)--网站高可用架构
- 大型网站技术架构 读书笔记4 高可用架构
- 可扩展、高可用、负载均衡网站架构设计方案
- 《大型网站技术架构:核心原理与案例分析》拜读总结,第五章——万无一失:网站的高可用架构
- 自动化的DNS域名解析切换功能在网站服务高可用设计中的实践
- Azure国际版及中国版功能更新:网站服务支持Java (以及网站服务架构简介)
- 网站架构学习(五)之网站的高可用架构
- IIS网站应用偶尔出现"服务不可用"解决办法
- 高可用Redis服务架构分析与搭建
- Redis Sentinel 高可用服务架构搭建
- 笔记:Linux下中小型网站常见的高负载高可用架构
- 大型网站技术架构 读书笔记4 高可用架构
- 学习笔记6:《大型网站技术架构 核心原理与案例分析》之 万无一失:网站的高可用架构