专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
相关文章推荐
Java编程精选  ·  字节员工爆料:快40岁了,每天晚上加班到12 ... ·  10 小时前  
ImportNew  ·  亚马逊程序员破防:AI ... ·  20 小时前  
芋道源码  ·  2W字全面剖析 Mybatis 中的9种设计模式 ·  18 小时前  
51好读  ›  专栏  ›  芋道源码

阿里二面:外部接口大量超时,系统被拖垮,引发雪崩!咋整?

芋道源码  · 公众号  · Java  · 2025-05-23 09:42

主要观点总结

本文主要介绍了一个社群项目,包括一对一交流、面试小册、简历优化、求职解惑等内容,并提供了部分开源项目的资料。同时,详细阐述了熔断机制在微服务架构中的应用,以及如何在实际项目中实现熔断机制。文章还介绍了Sentinel控制台的使用以及项目实战中如何引入熔断规则,并对相关代码进行了详细解析。

关键观点总结

关键观点1: 社群项目介绍

介绍了一对一交流、面试小册、简历优化、求职解惑等社群内容,并提供了部分开源项目的资料,包括项目地址和视频教程。

关键观点2: 熔断机制在微服务架构中的应用

阐述了微服务架构中熔断机制的重要性和作用,以及如何通过使用Sentinel等框架来实现熔断机制。

关键观点3: Sentinel控制台的使用

介绍了如何安装和使用Sentinel控制台,包括配置熔断规则、登录控制台、注解式接入熔断等。

关键观点4: 项目实战中如何引入熔断规则

详细解析了如何在项目实战中引入熔断规则,包括放弃部署控制台、创建熔断规则表、管理熔断规则的各个属性等,并对相关代码进行了详细解析。


正文

请到「今天看啥」查看全文


提出了 微服务 的设计思想

本着 复杂的事情简单化 的原则,我们将一个大的系统拆分成若干个子系统,每个 子系统 职责单一,按 DDD 的设计理念,承载一个子域的业务建设。

于是,人们可以将精力聚焦,专心完成某一个业务点的深度建设。

多个微服务系统之间通过 RPC 框架(如:dubbo、spring cloud、gRPC 等)完成了串联,但随着调用量越来越大,人们发现服务与服务之间的稳定性变得越来越重要

举个例子:

  • Service D 挂了,响应很慢
  • Service G 和 Service F ,都依赖 Service D,也会受到牵连,对外响应也会变慢
  • 影响层层向上传递,Service A 和 Service B 也会被拖垮
  • 最后,引发雪崩效应,系统的故障影响面会越来越大

为了解决这种问题,我们需要引入 熔断 机制。 “当断则断,不受其乱。当断不断,必受其难”

什么是熔断?

熔断,其实是对调用链路中某个资源出现不稳定状态时(如:调用超时或异常比例升高),对这个资源的调用进行限制,让请求快速失败,避免影响到其它的资源而导致级联错误。

当资源被降级后,在接下来的 降级时间窗口 内,对该资源的调用都自动熔断(默认是抛出 BlockException

目前市面上的熔断框架很多,如: Sentinel Hystrix Resilience4j 等,这些框架的设计理念都差不多。

本文重点讲下 Sentinel 是如何在项目中使用的

Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点, 从 流量控制 熔断降级 系统负载保护 等多个维度来保护服务的稳定性。

核心分为两部分:

1、核心库(Java 客户端):能够运行在所有 Java 环境,对 Dubbo 、Spring Cloud 等框架也有较好的支持。

2、控制台(Dashboard):基于 Spring Boot 开发,打包后可以直接运行。

Sentinel 熔断种类:

  • RT 响应时间
  • 异常数
  • 异常比例

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

Sentinel 安装

首先,官网下载 sentinel 控制台安装包

下载地址:https://github.com/alibaba/Sentinel/releases

下载 Jar 包后,打开终端,运行命令

java -Dserver.port=8180 -Dcsp.sentinel.dashboard.server=localhost:8180 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.1.jar

登陆Sentinal控制台:







请到「今天看啥」查看全文