【121期】面试官:什么是熔断?什么是服务降级?

点击上方“Java面试题精选”,关注公众号

面试刷图,查缺补漏

>>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅

阶段汇总集合:++小Flag实现,一百期面试题汇总++

服务熔断

服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。

服务降级

服务降级是从整个系统的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息。这样,虽然提供的是一个有损的服务,但却保证了整个系统的稳定性和可用性。

熔断VS降级

相同点:

  • 目标一致 都是从可用性和可靠性出发,为了防止系统崩溃;
  • 用户体验类似 最终都让用户体验到的是某些功能暂时不可用;

不同点:

  • 触发原因不同 服务熔断一般是某个服务(下游服务)故障引起,而服务降级一般是从整体负荷考虑;

Hystrix简介

Hystrix:英 [hɪst’rɪks] 美 [hɪst’rɪks] ,翻译过来是“豪猪”的意思。在分布式环境中,不可避免地会出现某些依赖的服务发生故障的情况。Hystrix是这样的一个库,它通过添加容许时延和容错逻辑来帮助你控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点,阻止跨服务的级联故障,并提供了退路选项,所有这些都可以提高系统的整体弹性。

Hystrix的设计目的:

  • 通过第三方客户端的库来为访问依赖服务时的潜在故障提供保护和控制;
  • 防止在复杂分布式系统中出现级联故障;
  • 快速失败和迅速恢复;
  • 在允许的情况下,提供退路对服务进行优雅降级;
  • 提供近实时的监控、报警和操作控制;

接下来我们演示如何使用Hystrix,eureka服务注册中心以及message-service服务提供者无需更改。

使用Hystrix

引入Hystrix依赖

在 pom.xml 文件中引入Hystrix依赖:

@EnableFeignClients
@SpringCloudApplication
@EnableHystrixDashboard
public class MessageCenterApplication {
 
 public static void main(String[] args) {
  new SpringApplicationBuilder(MessageCenterApplication.class).web(WebApplicationType.SERVLET).run(args);
 }
 
}

仪表盘界面

启动应用,访问 http://localhost:8781/hystrix ,打开Hystrix-Dashboard监控首页。

在这里配置好需要监控的Hystrix流地址 http://localhost:8781/actuator/hystrix.stream ,开始监控。

参考文章

https://github.com/netflix/hystrix/wiki 

https://github.com/netflix/hystrix 

https://cloud.spring.io/spring-cloud-netflix/single/spring-cloud-netflix.html

出处:blog.csdn.net/qq_41497111/article/details/92067565


与其在网上拼命找题? 不如马上关注我们~

【121期】面试官:什么是熔断?什么是服务降级?


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/7059.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!