Java面试:服务降级

服务降级也是服务治理策略中重要的一环。当业务出现流量峰值,或者系统中某个组成部分出现故障,保证系统整体功能仍然可用,我们可能需要停掉一些不太重要的周边系统,从而保证核心服务的 SLA。比如电商系统在进行大促时,往往会弃车保帅,优先选择停止“猜你喜欢”、“评论”等不那么重要的系统,保障购物车、支付系统可用。在微服务架构里,每个服务无论是服务提供方还是服务调用方,都应该围绕 SLA 制定不同的降级策略。按降级粒度粗细我们可以制定接口降级、功能降级、服务降级。

接口降级:对于非核心接口,设置为直接返回空或异常,可以在高峰期有效减少接口逻辑对资源(CPU、内存、网络 I/O、磁盘 I/O 等)的占用和消耗。

功能降级:对于非核心功能,可以设置该功能直接执行本地逻辑,不做跨服务、跨网络访问。也可以设置降级开关,一键关闭指定功能,保全系统稳定运行。

服务降级:对于非核心服务,可以通过服务治理框架根据错误率或者响应时间自动触发降级策略。

其中,功能降级和服务降级可以通过熔断机制和断路器实现。

//原始状态
Response service(Request request) {
  if(state == REMOTE)  return remote.service();
  else if(state == LOCAL) return local.service();
  else if(state == NULL) return null;
  else throw e; 
}

//Hystrix
class PayService {
@HystrixCommand(fallbackMethod = "payFail")
void pay() {
//远程调用支付服务;
order.status = PAYED;
}

void payFail() { 
//支付失败,订单状态改为未支付
order.status = UN_PAYED;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值