13 高可用的服务

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

  1. 超时设置

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

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

  1. 异步调用

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

如果采用异步调用的方式,应用程序将用户注册信息发送给消息队列服务器后立即返回用户注册成功响应。

必看视频!获取2024年最新Java开发全套学习资料 备注Java

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

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

  1. 服务降级

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

拒绝服务:拒绝低优先级应用的调用,减少服务调用并发数,确保核心应用正常使

用;或者随机拒绝部分请求调用,节约资源,让另一部分请求得以成功,避免要死大家 一起死的惨剧。貌似Twitter比较喜欢使用随机拒绝请求的策略,经常有用户看到请求失 败的故障页面,但是问下身边的人,其他人都正常使用,自己再刷新页面,也好了。

关闭功能:关闭部分不重要的服务,或者服务内部关闭部分不重要的功能,以节约系统开销,为重要的服务和功能让岀资源。淘宝在每年的“双十一”促销中就使用这利 方法,在系统最繁忙的时段关闭“评价”、“确认收货”等非核心服务,以保证核心交易服 务的顺利完成。

  1. 幂等性设计

应用调用服务失败后,会将调用请求重新发送到其他服务器,但是这个失败可能是总假的失败。比如服务已经处理成功,但因为网络故障应用没有收到响应,这时应用重 新提交请求就导致服务重复调用,如果这个服务是一个转账操作,就会产生严重后果。
服务重复调用是无法避免的,应用层也不需要关心服务是否真的失败,只要没有收 到调用成功的响应,就可以认为调用失败,并重试服务调用。因此必须在服务层保证服 务重复调用和调用一次产生的结果相同,即服务具有幕等性。

总结

面试难免让人焦虑不安。经历过的人都懂的。但是如果你提前预测面试官要问你的问题并想出得体的回答方式,就会容易很多。

此外,都说“面试造火箭,工作拧螺丝”,那对于准备面试的朋友,你只需懂一个字:刷!

给我刷刷刷刷,使劲儿刷刷刷刷刷!今天既是来谈面试的,那就必须得来整点面试真题,这不花了我整28天,做了份“Java一线大厂高岗面试题解析合集:JAVA基础-中级-高级面试+SSM框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法等”

image

且除了单纯的刷题,也得需准备一本【JAVA进阶核心知识手册】:JVM、JAVA集合、JAVA多线程并发、JAVA基础、Spring 原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB、Cassandra、设计模式、负载均衡、数据库、一致性算法、JAVA算法、数据结构、加密算法、分布式缓存、Hadoop、Spark、Storm、YARN、机器学习、云计算,用来查漏补缺最好不过。

image

torm、YARN、机器学习、云计算,用来查漏补缺最好不过。

[外链图片转存中…(img-0Us4nMJB-1716378563776)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值