Springboot/Cloud集成Sentinel进阶实战

文章目录

          • 一、自定义限流处理
            • 1. 自定义处理类
            • 2. 请求一次测试
            • 3. 重新配置流控规则
            • 4. 重新测试
            • 5. controller
          • 二、方法限流处理
            • 2.1. 创建接口
            • 2.2. 创建接口实现类
            • 2.3. 接口调用
            • 2.4. 请求
            • 2.5. 设置流控规则

一、自定义限流处理

自定义限流文档

1. 自定义处理类
package com.gblfy.distributedlimiter.handle;import com.alibaba.csp.sentinel.adapter.spring.webmvc.callback.BlockExceptionHandler;
import com.alibaba.csp.sentinel.slots.block.BlockException;
import com.gblfy.distributedlimiter.enums.ServiceErrCode;
import com.gblfy.distributedlimiter.exception.BaseServiceException;
import org.springframework.stereotype.Component;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** Springboot自定义全局异常类返回json* https://www.cnblogs.com/maolinjava/archive/2018/12/28/10193280.html*/
@Component
public class LimiterBlockHandler implements BlockExceptionHandler {@Overridepublic void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws Exception {//如果超过流控管理的就抛出异常throw new BaseServiceException(ServiceErrCode.REQ_PARAM_ERR.getMsg(), ServiceErrCode.REQ_PARAM_ERR);}
}
//这里采用了返回json
2. 请求一次测试

由于sentinel流控规则存在内存中,springboot项目重启,流控规则就没了,需要重新设置,下面会重点解决此问题

http://localhost:8082/sentinel
3. 重新配置流控规则

在这里插入图片描述

4. 重新测试
http://localhost:8082/sentinel

请求数量>1
在这里插入图片描述

5. controller
package com.gblfy.distributedlimiter.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class SentinelLimiterController {@GetMapping("/sentinel")public String  sentinel() {return "sentinel";}
}

Springboot全局异常统一处理返回json
https://gblfy.blog.csdn.net/article/details/113824175

二、方法限流处理
2.1. 创建接口
package com.gblfy.distributedlimiter.service;public interface LimiterService {public String process();
}
2.2. 创建接口实现类
package com.gblfy.distributedlimiter.service.impl;import com.alibaba.csp.sentinel.annotation.SentinelResource;
import com.gblfy.distributedlimiter.service.LimiterService;
import org.springframework.stereotype.Service;@Service
public class LimiterServiceImpl implements LimiterService {@Override@SentinelResource("LimiterService.process")//自定义埋点public String process() {return "process";}
}
2.3. 接口调用
package com.gblfy.distributedlimiter.controller;import com.gblfy.distributedlimiter.service.LimiterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class SentinelLimiterController {@Autowiredprivate LimiterService limiterService;@GetMapping("/sentinel")public String sentinel() {return limiterService.process();}
}
2.4. 请求

http://localhost:8082/sentinel

2.5. 设置流控规则

在这里插入图片描述
具体信息相见文档,后续补充
https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518779.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

若依SQL Server开发使用教程

1. sys_menu表中的将菜单ID修改为自动ID,解决不能增加菜单的问题,操作流程如下: 解决方案如下 菜单栏->工具->选项 点击设计器,去掉阻止保存要求更新创建表的更改选项,点确认既可以保存了 2 自动生成代码找不表的解决方案…

java基础 代理

1.代理是什么? 代理(Proxy)是一种设计模式。提供了对目标对象另外的访问方式,即通过代理对象访问目标对象。 有一个类我们无法更改,但我们希望在原有类上加上我们自己的逻辑(增强),这时就可以…

使用EMR Spark Relational Cache跨集群同步数据

背景 Relational Cache是EMR Spark支持的一个重要特性,主要通过对数据进行预组织和预计算加速数据分析,提供了类似传统数据仓库物化视图的功能。除了用于提升数据处理速度,Relational Cache还可以应用于其他很多场景,本文主要介绍…

Java-自增自减运算符 初始Math类

public class Demo04 {public static void main(String[] args) {// -- 自增 自减 一元运算符int a 3;int b a; // 先赋值, 在运行 a a 1System.out.println(a); // 4System.out.println(b); // 3int c a; // 先运算a a 1,在赋值System.out.p…

异构计算黄金时代下,超强异构计算服务器FP5468G2将会带来哪些变革?

就在几年前,计算领域还是通用计算的天下。此一时,彼一时,随着计算密集型领域的快速崛起,面对移动互联网、大数据和云计算需求的爆炸式增长,传统的单一CPU方案越来越力不从心。另一方面,半导体技术在纵向提速…

基于External-DNS的多集群Ingress DNS实践

概要 External-DNS提供了编程方式管理Kubernetes Ingress资源的DNS的功能,方便用户从Ingress管理DNS解析记录。而在kubernetes federation v2环境中,使用External-DNS可以快速的管理多个联邦集群的Ingress DNS解析,降低用户的操作成本。下面…

在执行Dockerfile时出现Get https://registry-1.docker.io/v2/错误的解决方案

文章目录1. 登录阿里云2. 找到镜像加速3. 使用阿里云镜像1. 登录阿里云 没有就注册,不要文为什么要用阿里云镜像,没办法,就是快! https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 2. 找到镜像加速 复制内容: {&qu…

Java基础--反射

1.概念 什么是反射? (1)Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息,从而操作类或对象的属性和方法。 本质是JVM得到class对象之后,再通过class对象进行反编译,从而获取对象的各种信息…

Java-逻辑运算符、位运算符

逻辑运算符 // 逻辑运算符 public class Demo05 {public static void main(String[] args) {// 与(and) 或(or) 非(取反)boolean a true;boolean b false;// 逻辑与运算: 两个变量都为真,结果才为 trueSystem.out.println("a &&…

做可交互的统计图表,这套图形语法不容错过

选好可视化 “一图胜千言”,是最直观的数据可视化魅力。以图表来传达和沟通信息,其效率远超枯燥乏味的数据表达。 有需求就有市场。数据可视化崭露头角后,各个厂商出备的产品、解决方案,开发者自研的可视化工具、操作平台都如雨…

Centos7 docker 安装 zookeeper

# 默认下载最新版本 docker pull zookeeper# 指定版本下载 docker pull zookeeper:3.5.8# 创建zk容器 docker run -di -p 2181:2181 --namezk zookeeper:3.5.8# 查看正在运行的容器 docker ps# 防火墙开放2181端口firewall-cmd --zonepublic --add-port2181/tcp --permanent# 重…

10分钟带你逆袭kafka之路

作者:故事凌 1. kafka概述 ##1.1 kafka简介 Apache Kafka 是一个快速、可扩展的、高吞吐的、可容错的分布式“发布-订阅”消息系统, 使用 Scala 与 Java 语言编写,能够将消息从一个端点传递到另一个端点,较之传统的消息中 间件…

漫谈分布式计算框架

如果问 mapreduce 和 spark 什么关系,或者说有什么共同属性,你可能会回答他们都是大数据处理引擎。如果问 spark 与 tensorflow 呢,就可能有点迷糊,这俩关注的领域不太一样啊。但是再问 spark 与 MPI 呢?这个就更远了。…

.class和getClass()的区别

.class方法和getClass()的区别,这两个比较像,常弄混。它们二者都可以获取一个唯一的java.lang.Class对象,但是区别在于: 1、.class用于类名,getClass()是一个final native的方法,因此用于类实例 2、.clas…

Java-三元运算符

public class Demo07 {public static void main(String[] args) {int a 10;int b 20;ab; // a a ba-b; // a a - bSystem.out.println(a); // 10// 字符串连接符 , String, 有String类型,会把后面的转为StringSystem.out.println(""ab); // 1020Syst…

UI2CODE再进化!结合Redux的框架升级!

背景 UI2CODE的目标是通过分析视觉稿得到对应的代码,让AI提高开发效率。然而过去静态化页面的产出,不能得到业务场景的需求。针对于此,我们以UI2CODE自动化开发为基底,结合Redux的消息机制,将自动化生成的维度提升到页…

8080:The Tomcat connector configured to listen on port 8080 failed to start 的解决办法

问题再现: 控制台最后会显示Application启动失败,如下: ...*************************** APPLICATION FAILED TO START ***************************Description:The Tomcat connector configured to listen on port 8080 failed to start. …

数据库连接池的原理没你想得这么复杂

来源 | 犀牛饲养员的技术笔记封图| CSDN 下载于视觉中国背景介绍数据库连接池和线程池等池技术存在的意义都是为了解决资源的重复利用问题。在计算机里,创建一个新的资源往往开销是非常大的。而池技术可以统一分配,管理某一类资源,它允许我们…

CICD联动阿里云容器服务Kubernetes实践之Bamboo篇

本文档以构建一个 Java 软件项目并部署到 阿里云容器服务的Kubernetes集群 为例说明如何使用 Bamboo在阿里云Kubernetes服务上运行Remote Agents并在agents上运行Build Plans。 1. 源码项目 本示例中创建的GitHub源码项目地址为: https://github.com/AliyunConta…

Python之%s%d%f使用实例

%s 字符串 string"hello" #%s打印时结果是hello print "string%s" % string # output: stringhello #%2s意思是字符串长度为2,当原字符串的长度超过2时,按原长度打印,所以%2s的打印结果还是hello pri…