spring cloud篇——什么是服务熔断?服务降级?服务限流?spring cloud有什么优势?

一、spring cloud 有什么优势

使用spring Boot 开发分布式微服务时,我们面临以下问题

  1. 与分布式系统相关的复杂性-这种开销包括网络问题、延迟开销、带宽问题、安全问题
  2. 服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈,它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务
  3. 冗余-分布式系统中的冗余问题
  4. 负载均衡-负载平衡改善多个计算机资源的工作符合,诸如计算机,计算机集群,网络链路,中央处理单元,或磁盘驱动器的分布
  5. 性能-问题 由于各种运营开销导致的性能问题
  6. 部署复杂性-Devops 技能的要求

二、服务熔断

2.1、雪崩效应

在介绍熔断机制之前,我们需要了解微服务的雪崩效应。在微服务架构中,微服务是完成一个单一的业务功能,这样做的好处是可以做到解耦,每个微服务可以独立演进。但是,一个应用可能会有多个微服务组成,微服务之间的数据交互通过远程过程调用完成。这就带来一个问题,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其它的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统崩溃,所谓的“雪崩效应”。
在这里插入图片描述
熔断机制是应对雪崩效应的一种微服务链路保护机制。我们在各种场景下都会接触到熔断这两个字。高压电路中,如果某个地方的电压过高,熔断器就会熔断,对电路进行保护。股票交易中,如果股票指数过高,也会采用熔断机制,暂停股票的交易。同样,在微服务架构中,熔断机制也是起着类似的作用。当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后,恢复调用链路。

在Spring Cloud框架里,熔断机制通过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败,就会启动熔断机制。

在dubbo中也可利用nio超时+失败次数做熔断。
dubbo可以通过扩展Filter的方式引入Hystrix,具体代码如下:

package com.netease.hystrix.dubbo.rpc.filter;
 
import com.alibaba.dubbo.common.Constants;
import com.alibaba.dubbo.common.extension.Activate;
import com.alibaba.dubbo.rpc.Filter;
import com.alibaba.dubbo.rpc.Invocation;
import com.alibaba.dubbo.rpc.Invoker;
import com.alibaba.dubbo.rpc.Result;
import com.alibaba.dubbo.rpc.RpcException;
 
@Activate(group = Constants.CONSUMER)
public class HystrixFilter implements Filter {
   
 
    @Override
    public Result invoke(Invoker invoker, Invocation invocation) throws RpcException {
   
        DubboHystrixCommand command = new DubboHystrixCommand(invoker, invocation);
        return command.execute();
    }
 
}

2.2、DubboHystrixCommand

package com.netease.hystrix.dubbo.rpc.filter
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

胖天才小朱(怀玉)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值