2.2网站的高可用架构之高可用服务

旧城等待, 2022-06-05 08:40 298阅读 0赞

可复用的模块为业务产品提供基础公共服务,大型网站中这些服务通常都是独立的分布式部署,被具体应用远程调用,可复用的服务和应用一样,也是无状态的服务,因此可以利用类似负载均衡的失效转移策略实现高可用的服务。高可用的服务策略有以下几点。

1、分级管理

运维上将服务器进行分级管理,核心应用及服务使用更好的资源,例如订单服务、支付服务比评价服务有更高的优先级。同时在部署上也要进行必要的分离,低优先级的服务通过启动不同的线程或者部署在不同的虚拟机上进行隔离,而高优先级的服务要部署在不同的物理机上,甚至要部署在不同地域的数据中心。

2、超时设置

由于服务器宕机、线程死锁等原因,可能导致应用程序对服务端的调用失去响应,进而导致用户请求长时间得不到响应,同时还占据着程序资源。在应用程序中设置超时时间,一旦超时,通信框架抛出异常,应用服务根据调度策略,可以选择重试或者将请求转发到提供相同服务的其他服务器上。

3、异步调用

对于一个用户注册请求,应用需调用三个服务:将用户信息写入数据库、发送账户注册成功邮件、开通对应权限。若采用同步服务调用,若邮件队列阻塞不能发送,会导致其他两个服务也无法执行,最终导致账户注册失败。

若采用异步调用的方式,应用程序将用户注册信息写入消息队列后立即返回用户注册成功响应,而剩下来三个服务作为消息的消费者任务,分别从消息队列获取用于注册信息异步执行。即使邮件队列阻塞,邮件不能发送成功,也不会影响其他服务执行,用户注册操作成功,只是晚一点收到注册成功邮件而已。

也不是所有的服务调用都可以为异步调用,对于获取用户信息的这类调用,采用异步调用会延长响应时间,对于那些必须确认服务调用成功的应用才能进行下一步操作的应用也不适合异步调用。

4、服务降级

在网站访问高峰期,为了保证核心业务的运行,可以对服务进行降级:拒绝服务或关闭服务。

5、幂等性

应用调用服务失败后,会将请求重新发送到其他服务器,但这个失败可能是服务已经处理成功,因为网络故障应用没有收到响应,这是应用重新提交请求就会导致服务重新调用,若这是转账操作,就会导致严重影响。

因此高可用服务要求在服务层保证服务重复调用和调用一次产生的结果相同,即服务具有幂等性。如将用户设置为男性等操作天然具有幂等性,但转账就比较复杂,需要通过交易编号等处理。

发表评论

表情:
评论列表 (有 0 条评论,298人围观)

还没有评论,来说两句吧...

相关阅读

    相关 架构可用-服务保护

    服务降级 限流是服务降级的一种,限制系统输出和输入流量从而保护系统。 系统吞吐量是一定的,可以通过压力测试得到。有可能会超过系统阈值,为了保证系统的稳定,需要采取一些措

    相关 可用网站架构

      高可用:负载增大时,系统仍然能在正常时间范围内响应请求(包括快速失败)。   实现高可用的常用方法 1、超时机制 在应用中尽量设置超时时间,eg. 连接超

    相关 11 可用网站架构

    > 通常企业级应用系统为提高系统可用性,会采用较昂贵的软硬件设备,如IBM的小 型机乃至中型机大型机及专有操作系统、Oracle数据库、EMC存储设备等。互联网公司 更多地采用

    相关 网站可用架构

    可用性就是系统在发生故障的时候,可以继续提供服务的能力。高可用性,就是故障发生时,系统可以在很短的时间内就能恢复正常服务,甚至外部根本没有察觉。 提高可用性,核心手段在于冗余

    相关 可用网站技术架构

    高可用网站技术架构 旨在建立高可用网站方案: 任何一个大型网站都是经历用户积累然后成长,从一台服务器到多台服务器才能构架支撑网站现有数据、用户、页面请求等。大型网站(