返回

网关限流妙招:三步走搞定!

后端

使用 Sentinel 实现无侵入式网关限流:三步搞定!

什么是网关限流?

在微服务架构中,网关限流是一种至关重要的安全措施。它保护服务免受恶意攻击,确保其可用性和稳定性。它可以限制对特定服务的请求数量,从而防止服务因过载而崩溃。

Sentinel 限流介绍

Sentinel 是阿里巴巴开源的一款高性能流量控制组件,广泛用于微服务架构中的流量控制。它提供了一个轻量级的限流框架,支持各种限流算法,如滑动窗口、漏桶和令牌桶。

无侵入式网关限流

通过 Sentinel 与网关的结合,我们可以实现无侵入式的网关限流。这不需要修改应用程序代码,也不会影响应用程序的正常运行。

如何使用 Sentinel 实现网关限流

使用 Sentinel 实现网关限流只需以下三个步骤:

1. 引入 Sentinel 依赖

在网关项目中引入 Sentinel 依赖:

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
    <version>2.2.6.RELEASE</version>
</dependency>

2. 配置 Sentinel

application.yml 文件中配置 Sentinel:

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080
      eager: true

3. 启动网关

mvn spring-boot:run

Sentinel Dashboard

启动网关后,我们可以通过 Sentinel Dashboard 配置和管理限流规则。

  1. 启动 Sentinel Dashboard
mvn spring-boot:run
  1. 访问 Sentinel Dashboard

访问 http://localhost:8080 打开 Sentinel Dashboard。

  1. 配置限流规则

在 Sentinel Dashboard 中,我们可以查看、创建和修改限流规则。

限流规则持久化

为了使限流规则持久化,我们可以将其推送到 Nacos。

  1. 创建 Nacos 配置文件

在 Nacos 中创建 config.properties 文件:

spring.cloud.nacos.config.server-addr=localhost:8848
spring.cloud.nacos.config.namespace=public
spring.cloud.nacos.config.group=sentinel
spring.cloud.nacos.config.file-extension=properties
  1. 配置 Nacos

application.yml 文件中配置 Nacos:

spring:
  cloud:
    nacos:
      config:
        server-addr: localhost:8848
        namespace: public
        group: sentinel
        file-extension: properties
  1. 将限流规则推送到 Nacos

使用 Sentinel Dashboard 将限流规则推送到 Nacos:

curl -X POST http://localhost:8080/sentinel/v2/flow/rule/persistent/push \
  -H 'Content-Type: application/json' \
  -d '{"appId": "demo-app", "namespace": "public", "group": "sentinel"}'

注意事项

  • 确保 Sentinel Dashboard 和 Nacos 的端口开放。
  • 确保 Nacos 中存在 config.properties 文件。
  • 确保 application.yml 文件中配置正确。
  • 确保 Sentinel Dashboard 与网关和 Nacos 的通信正常。

常见问题解答

1. 为什么使用 Sentinel 进行网关限流?

Sentinel 是一个高性能流量控制组件,提供轻量级限流框架,支持各种限流算法。

2. 无侵入式网关限流的优势是什么?

无侵入式网关限流不需要修改应用程序代码,也不会影响应用程序的正常运行。

3. Sentinel Dashboard 的作用是什么?

Sentinel Dashboard 用于配置和管理限流规则。

4. 如何将限流规则持久化?

可以将限流规则推送到 Nacos 以实现持久化。

5. 为什么需要注意事项?

注意事项有助于确保无侵入式网关限流的正常运行。