ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-01-05 13:32:33  阅读:217  来源: 互联网

标签:请求 登录 SpringCloud 第九篇 Sentinel 限流 sentinel 控制台


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

1. 前言

1.1 说明

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

1.2 什么是Sentinel

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

Sentinel 分为两个部分:

  • 核⼼库:(Java 客户端)不依赖任何框架/库,能够运⾏于所有 Java 运⾏时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的⽀持
  • 控制台:(Dashboard)基于 Spring Boot 开发,打包后可以直接运⾏,不需要额外的 Tomcat 等应⽤容器

2. 安装sentinel

2.1 下载jar包

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

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

2.2 启动

java -jar sentinel-dashboard.jar &

2.3 登录控制台

  • 访问地址:http://localhost:8080
  • 输入账号密码登录(默认是sentinel/sentinel)

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配置

  • 其中dashboard指的是sentinel控制台的访问地址
  • 其中port指的是sentinel会在该端⼝启动http server,这样控制台定义的⼀些限流等规则才能发送传递过来。这里定义了8719,如果端⼝被占⽤,那么会依次+1
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 为用户登录接口配置规则

  • 资源名:默认请求路径
  • 针对来源:Sentinel可以针对调⽤者进⾏限流,填写微服务名称,默认default(不区分来源)
  • 阈值类型/单机阈值
    • QPS:(每秒钟请求数量)当调⽤该资源的QPS达到阈值时进⾏限流
    • 线程数:当调⽤该资源的线程数达到阈值的时候进⾏限流
  • 是否集群:是否集群限流

在这里将资源名配置为登录请求的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 测试

  • 进入登录页面,打开浏览器的控制台。然后输入账号和密码(错误的密码),连续快速点击登陆按钮
    可以看到浏览器控制台的登录请求,前两次是正常的,后面两次处理失败,http状态为429拒绝连接

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

 

5. 参考代码

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有