首页 服务熔断
文章
取消

服务熔断

服务熔断概述

服务熔断也被称为服务过载保护。对于目标服务的请求和调用大量超时或失败,这时应该熔断该服务的所有调用, 并且对于后续调用应直接返回,从而快速释放资源,确保在目标服务不可用的这段时间内,所有对它的调用都是立即返回,不会阻塞。

Hystrix

Hystrix是比较稳定的,但是Hystrix停止开发新的版本

引入依赖

1
2
3
4
5
<dependency>
    <groupId>com.netflix.hystrix</groupId>
    <artifactId>hystrix-core</artifactId>
    <version>x.y.z</version>
</dependency>

Alibaba Sentinel(推荐)

下载并打包

1
2
3
4
5
# 下载源码
git clone https://github.com/alibaba/Sentinel.git

# 编译打包
mvn clean package

启动控制台

Sentinel 控制台是一个标准的 SpringBoot 应用,以 SpringBoot 的方式运行 jar 包即可。

1
2
cd sentinel-dashboard\target
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

如若 8080 端口冲突,可使用 -Dserver.port=新端口 进行设置。

访问服务

打开浏览器访问:http://localhost:8080/#/dashboard/home

配置控制台信息

application.yml 配置文件中增加如下配置:

1
2
3
4
5
6
spring:
  cloud:
    sentinel:
      transport:
        port: 8719
        dashboard: localhost:8080

这里的 spring.cloud.sentinel.transport.port 端口配置会在应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互。比如 Sentinel 控制台添加了 1 个限流规则,会把规则数据 push 给这个 Http Server 接收,Http Server 再将规则注册到 Sentinel 中。

测试 Sentinel

使用之前的 Feign 客户端,application.yml 完整配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
spring:
  application:
    name: nacos-consumer-feign
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    sentinel:
      transport:
        port: 8720
        dashboard: localhost:8080

server:
  port: 9092

feign:
  sentinel:
    enabled: true

management:
  endpoints:
    web:
      exposure:
        include: "*"

::: tip 注:由于 8719 端口已被 sentinel-dashboard 占用,故这里修改端口号为 8720;不修改也能注册,会自动帮你在端口号上 + 1; :::

打开浏览器访问:http://localhost:8080/#/dashboard/home 此时会多一个名为 nacos-consumer-feign 的服务

本文由作者按照 CC BY 4.0 进行授权

服务注册基于dubbo

消息队列

载入天数...载入时分秒...