写点什么

13 高可用的服务,字节跳动今日学习内容

用户头像
Java高工P7
关注
发布于: 33 分钟前

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


除此之外,具体实践中,还有以下几点高可用的服务策略。


  1. 分级管理


运维上将服务器进行分级管理,核心应用和服务优先使用更好的硬件,在运维响应 速度上也格外迅速。显然,用户及时付款购物比能不能评价商品更重要,所以订单、支 付服务比评价服务有更高优先级。


同时在服务部署上也进行必要的隔离,避免故障的连锁反应。低优先级的服务通过 启动不同的线程或者部署在不同的虚拟机上进行隔离,而高优先级的服务则需要部署在 不同的物理机上,核心服


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


务和数据甚至需要部署在不同地域的数据中心。


  1. 超时设置


由于服务端宕机、线程死锁等原因,可能导致应用程序对服务端的调用失去响应, 进而导致用户请求长时间得不到响应,同时还占用应用程序的资源,不利于及时将访问 请求转移到正常的服务器上。


在应用程序中设置服务调用的超时时间,一旦超时,通信框架就抛出异常,应用程 序根据服务调度策略,可选择继续重试或将请求转移到提供相同服务的其他服务器上。


  1. 异步调用


应用对服务的调用通过消息队列等异步方式完成,避免一个服务失败导致整个应用 请求失败的情况。如提交一个新用户注册请求,应用需要调用三个服务:将用户信息写 入数据库,发送账户注册成功邮件,开通对应权限。如果釆用同步服务调用,当邮件队 列阻塞不能发送邮件时,会导致其他两个服务也无法执行,最终导致用户注册失败。


如果采用异步调用的方式,应用程序将用户注册信息发送给消息队列服务器后立即返回用户注册成功响应。而记录用户注册信息到数据库、发送用户注册成功邮件、调用 用户服务开通权限这三个服务作为消息的消费者任务,分别从消息队列获取用户注册信 息异步执行。即使邮件服务队列阻塞,邮件不能成功发送,也不会影响其他服务的执行, 用户注册操作可顺利完成,只是晚一点收到注册成功的邮件而已。


当然不是所有服务调用都可以异步调用,对于获取用户信息这类调用,采用异步方 式会延长响应时间,得不偿失。对于那些必须确认服务调用成功才能继续下一步操作的 应用也不合适使用异步调用。


  1. 服务降级


在网站访问高峰期,服务可能因为大量的并发调用而性能下降,严重时可能会导致 服务宕机。为了保证核心应用和功能的正常运行,需要对服务进行降级。降级有两种手 段:拒绝服务及关闭服务。

用户头像

Java高工P7

关注

还未添加个人签名 2021.11.08 加入

还未添加个人简介

评论

发布
暂无评论
13 高可用的服务,字节跳动今日学习内容