其他分享
首页 > 其他分享> > 从0到1学SpringCloud第九篇:登录限流

从0到1学SpringCloud第九篇:登录限流

作者:互联网

文章内容输出来源:拉勾教育Java高薪训练营

1. 前言

1.1 说明

本文将针对于用户登录接口进行限制它的请求频率,进行限流防刷。使用到了Sentinel进行相应的实践应用。

1.2 什么是Sentinel

Sentinel 是阿里巴巴开源的,面向分布式服务架构的高可用防护组件。主要以流量为切入点,从流量控制、流量整形、熔断降级、系统自适应保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。

Sentinel 分为两个部分:

2. 安装sentinel

2.1 下载jar包

进入github地址找到jar包进行下载,直达地址

备注:如果github上下载太慢,我使用了1.7.1版本的,并上传了。可以从这里获取:直达地址

2.2 启动

java -jar sentinel-dashboard.jar &

2.3 登录控制台

3. 项目配置sentinel

网关项目作为流量的入口,所以考虑在这个项目lagou-cloud-gateway-9002中进行配置

3.1 pom.xml引入依赖

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

3.2 application.yml中增加sentinel配置

spring:
  cloud:
    sentinel:
      transport:
        dashboard: 127.0.0.1:8080
        port: 8719
 management:
  endpoints:
    web:
      exposure:
        include: "*"
  # 暴露健康接口的细节
  endpoint:
    health:
      show-details: always

3.3 重新启动项目

3.4 进入sentinel的控制台查看

刚开始没看到相关的项目信息,因为有懒加载的原因。这时你就到登录页面上登录一下,调用一下api请求,再回来看下就有了项目的信息了

4. 配置流控规则

在sentinel的控制台,进入流控规则的菜单项

4.1 为用户登录接口配置规则

在这里将资源名配置为登录请求的api/api/users/login。为其设置QPS为2,也就是每秒的请求数不能超过2次

4.2 对用户登录请求处理

为测试的方便,在用户服务的用户登录的请求方法中增加上睡眠2s,好用于观察是否生效

@PostMapping("login")
public String login(HttpServletResponse response, @RequestParam String email, @RequestParam String password) {
    try {
        Thread.sleep(2000);

    }catch (Exception e) {
        e.printStackTrace();
    }
}

4.3 测试

然后看下sentinel控制台上实时监控和簇点链路,显示如下的信息,拒绝的QPS有两次

 

5. 参考代码

标签:请求,登录,SpringCloud,第九篇,Sentinel,限流,sentinel,控制台
来源: https://blog.csdn.net/yaohuiye/article/details/112227287