服务故障雪崩效应

在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以通过 RPC 相互调用,在 Spring Cloud 中可以用 RestTemplate + LoadBalanceClient 和 Feign 来调用。为了保证其高可用,单个服务通常会集群部署。由于网络原因或者自身的原因,服务并不能保证 100% 可用,如果单个服务出现问题,调用这个服务就会出现线程阻塞,此时若有大量的请求涌入,Servlet 容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的雪崩效应。

概念

服务熔断:

一般是指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施,所以很多地方把熔断亦称为过载保护。很多时候刚开始可能只是系统出现了局部的、小规模的故障,然而由于种种原因,故障影响的范围越来越大,最终导致了全局性的后果。

适用场景:防止应用程序直接调用那些很可能会调用失败的远程服务或共享资源

服务降级:

当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。

Feign 中使用 Sentinel

如果要在项目中引入 Sentinel,使用 group ID 为 org.springframework.cloud 和 artifact ID 为 spring-cloud-starter-alibaba-sentinel 的 starter。

org.springframework.cloud

spring-cloud-starter-alibaba-sentinel

Sentinel 适配了 Feign 组件。但默认是关闭的。需要在配置文件中配置打开它,在配置文件增加以下代码:

feign:

sentinel:

enabled: true

在 Service 中增加 fallback 指定类

package com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service;

import com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service.fallback.EchoServiceFallback;

import org.springframework.cloud.openfeign.FeignClient;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.PathVariable;

/**

* @author sanya deng

* @version 1.0.0

* @Title: EchoService

* @ProjectName SpringCloud

* @Description: TODO

* @email forestsancy@163.com

* @date 2019-04-12 16:31

*/

//通过 @FeignClient("服务名") 注解来指定调用哪个服务

@FeignClient(value = "nacos-provider", fallback = EchoServiceFallback.class)

public interface EchoService {

@GetMapping(value = "/echo/{message}")

String echo(@PathVariable("message") String message);

}

创建熔断器类并实现对应的 Feign 接口

package com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service.fallback;

import com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service.EchoService;

import org.springframework.stereotype.Component;

/**

* @author sanya deng

* @version 1.0.0

* @Title: EchoServiceFallback

* @ProjectName SpringCloud

* @Description: TODO

* @email forestsancy@163.com

* @date 2019-04-15 10:43

*/

@Component

public class EchoServiceFallback implements EchoService {

@Override

public String echo(String message) {

return "echo fallback";

}

}

测试熔断器

图片.png

图片.png

feign整合sential,Feign中使用Sentinel熔断器防止服务雪崩相关推荐

  1. feign 整合sentinel_SpringCloud实战五-Sentinel上

    场景 微服务会划分出多个模块,模块之间的调用频率可能比较高,这时可能会存在服务雪崩(一个服务失败,导致整条链路的服务都失败的情形)的,如图: 随着时间的推移,从刚开始的C不可用变成了最终的系统不可用, ...

  2. Feign整合Sentinel实现容错

    Sentinel通过各种规则对资源进行保护,即进行服务容错.Feign使得调用远程服务就像调用本地服务一样简单.但是Feign在调用远程服务的时候,由于远程服务的原因,可能会产生异常.就需要进行相应的 ...

  3. hystrix 配置 不生效_12、Feign整合断路器Hystrix

    上编说了<RestTemplate+Ribbon整合断路器Hystrix>,这篇来看看如何Feign整合断路器Hystrix,Feign整合断路器Hystrix也是相对比较简单的.Feig ...

  4. controller调用controller的方法_SpringCloud(5):Feign整合Ribbon和Hystrix来进行远程调用与服务熔断...

    Feign 前面我们虽然使用了Ribbon和Hystrix进行了负载均衡和服务熔断,但是我们的消费方代码中由于要调用提供方的服务,比如: String user = this.restTemplate ...

  5. Spring Cloud 2.x系列之Feign整合断路器监控Hystrix Dashboard

    SVN多版本库环境的搭建 OAuth 2.0是什么?看这篇文章就够了. 前端 Java Python等资源合集大放送 Ribbon可以整合整合断路器监控Hystrix Dashboard,Feign也 ...

  6. spring cloud+zookeeper+feign整合 简单实例(一)

    一.前言 各位热爱知识的小伙伴们大家好呀!很高兴大家能点开这个博客,这是我个人的第一篇博客,之后也会持续的更新java以及spring项目的相关代码,希望大家持续关注.如果对本篇博客有什么不懂的地方或 ...

  7. [享学Feign] 一、原生Feign初体验,Netflix Feign or Open Feign?

    生命太短暂,不要去做一些根本没有人想要的东西.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习 ...

  8. SpringCloud(第 016 篇)电影微服务,定制Feign,一个Feign功能禁用Hystrix,另一个Feign功能启用Hystrix...

    2019独角兽企业重金招聘Python工程师标准>>> SpringCloud(第 016 篇)电影微服务,定制Feign,一个Feign功能禁用Hystrix,另一个Feign功能 ...

  9. feign rest_与Feign客户轻松进行REST通信

    feign rest 在这个例子中,我们将向您展示如何使用Feign客户端开发一个简单的Spring Boot Application,以使用Weather REST服务. Spring Boot是基 ...

最新文章

  1. 华丽丽的GridLayout-使用案例
  2. python语言翻译-从Python到CIL(C中间语言)的翻译
  3. sublime text实现函数跳转(window环境)
  4. sqlserver2008 创建支持文件流的数据库
  5. fastapi 安全性 / APIRouter / BackgroundTasks / 元数据 / 测试调试
  6. 华为S5700交换机开启telnet远程登陆配置(推荐)
  7. 没有足够的值_元丰通宝值多少钱吗?市场价值如何?有没有足够的收藏空间?...
  8. osql sql2012_您可能不知道SQL Server实用程序-SQLdiag,osql和SqlLocalDB
  9. C#中的四舍五入有多坑
  10. SSH 无法远程登录问题的处理思路
  11. mplayer-ww-37356 compile with mingw gcc 4.5.1 修复无法播放wmv
  12. TD-LTE原理及其关键技术介绍
  13. vue不让双击执行单击事件
  14. 服务器被黑客入侵了怎么办?
  15. otl连接mysql数据库_C++类库:OTL连接MySQL ODBC数据库(insert, update, select)
  16. html背景图片拉伸解决办法
  17. macbook键盘背光打不开怎么办?如何解决苹果笔记本键盘背光不亮的问题?
  18. php处理emoji表情方法,PHP实战:3种方法轻松处理php开发中emoji表情的问题
  19. use glyphs icons
  20. 【第29题】有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数

热门文章

  1. 一个线程资源中有多个模态对话框的问题
  2. C# 中Bitmap图像处理含增强对比度的三种方法
  3. 使用directX 7结合C#进行2D游戏编程
  4. C++中局部变量可以和全局变量重名吗?
  5. python编程菱形_Python打印“菱形”星号代码方法
  6. python发送json请求_使用Python请求发布JSON
  7. css 一行显示_CSS笔记1
  8. aboboo 上一句 快捷键_锁定微信防别人偷看,苹果电脑上的微信有何不同?
  9. C++11使用互斥量保护共享数据
  10. osg::ComputeBoundsVisitor用法(二)