主要观点总结
本文主要介绍了一个社群项目,包括一对一交流、面试小册、简历优化、求职解惑等内容,并提供了部分开源项目的资料。同时,详细阐述了熔断机制在微服务架构中的应用,以及如何在实际项目中实现熔断机制。文章还介绍了Sentinel控制台的使用以及项目实战中如何引入熔断规则,并对相关代码进行了详细解析。
关键观点总结
关键观点1: 社群项目介绍
介绍了一对一交流、面试小册、简历优化、求职解惑等社群内容,并提供了部分开源项目的资料,包括项目地址和视频教程。
关键观点2: 熔断机制在微服务架构中的应用
阐述了微服务架构中熔断机制的重要性和作用,以及如何通过使用Sentinel等框架来实现熔断机制。
关键观点3: Sentinel控制台的使用
介绍了如何安装和使用Sentinel控制台,包括配置熔断规则、登录控制台、注解式接入熔断等。
关键观点4: 项目实战中如何引入熔断规则
详细解析了如何在项目实战中引入熔断规则,包括放弃部署控制台、创建熔断规则表、管理熔断规则的各个属性等,并对相关代码进行了详细解析。
正文
提出了
微服务
的设计思想
本着
复杂的事情简单化
的原则,我们将一个大的系统拆分成若干个子系统,每个
子系统
职责单一,按 DDD 的设计理念,承载一个子域的业务建设。
于是,人们可以将精力聚焦,专心完成某一个业务点的深度建设。
多个微服务系统之间通过
RPC
框架(如:dubbo、spring cloud、gRPC 等)完成了串联,但随着调用量越来越大,人们发现服务与服务之间的稳定性变得越来越重要
举个例子:
-
-
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 熔断种类:
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
-
项目地址:https://github.com/YunaiV/ruoyi-vue-pro
-
视频教程:https://doc.iocoder.cn/video/
首先,官网下载 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控制台: