sentinel服务保护

devtools/2024/11/15 2:54:53/

一、整合sentinel

1、下载并启动sentinel

启动命令(默认是8080端口,因此修改端口号为8070)

java -Dserver.port=8070 -Dcsp.sentinel.dashboard.server=localhost:8070 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.6.jar

2、引入依赖

<!--整合sentinel--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId><version>2.1.0.RELEASE</version></dependency>

3、application.yaml增加sentinel配置

spring:cloud:sentinel:transport:dashboard: localhost:8070

4、重启微服务,并发起一些请求

二、利用sentinel实现请求的限流

2.1、流控

2.1.1、qps和并发线程数的区别

并发线程数:表示web请求进来服务器,tomcat开启几个线程来处理这些web请求。

qps:单位时间内,请求接口次数限制。

2.2、fallback

2.2.1、添加依赖

<dependency><groupId>io.github.openfeign</groupId><artifactId>feign-okhttp</artifactId></dependency>

2.2.2、application.yaml配置

feign:okhttp:enabled: truesentinel:enabled: true

2.2.3、写FallbackFactory接口的实现类

java">package com.niuniu.user.feignclient.fallback;import com.niuniu.user.feignclient.OrderClient;
import com.niuniu.user.model.Order;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;import java.util.Collections;
import java.util.List;@Slf4j
public class OrderClientFallBackFactory implements FallbackFactory<OrderClient> {@Overridepublic OrderClient create(Throwable throwable) {log.error("OrderClient error!", throwable);return new OrderClient() {@Overridepublic List<Order> getOrdersByUserId(Long userId) {return Collections.emptyList();}};}
}

2.2.4、生成上一步实现类的对象

java">package com.niuniu.user.config;import com.niuniu.user.feignclient.fallback.OrderClientFallBackFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class FallBackConfig {@Beanpublic OrderClientFallBackFactory orderClientFallBackFactory() {return new OrderClientFallBackFactory();}
}

2.2.5、feignclient接口增加fallbackFactory = OrderClientFallBackFactory.class

java">package com.niuniu.user.feignclient;import com.niuniu.common.config.DefaultFeignConfig;
import com.niuniu.user.feignclient.fallback.OrderClientFallBackFactory;
import com.niuniu.user.model.Order;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;import java.util.List;@Component
@FeignClient(value = "order-service", configuration = DefaultFeignConfig.class, fallbackFactory = OrderClientFallBackFactory.class)
public interface OrderClient {@GetMapping(value = "/order-service/order/getOrdersByUserId")List<Order> getOrdersByUserId(@RequestParam("userId") Long userId);
}

2.2.6、测试

修改变调用微服务的代码

java">/*** 根据用户查询订单* @param userId* @return*/@GetMapping("/getOrdersByUserId")public List<Order> getOrdersByUserId(@RequestParam(name = "userId") Long userId){log.info(UserContext.getUser().toString());int i = 1;System.out.println(i / 0);return orderMapper.getByUserId(userId);}

2.3、服务熔断


http://www.ppmy.cn/devtools/134064.html

相关文章

力扣第 50 题Pow(x, n)

力扣第 50 题是 Pow(x, n)&#xff0c;要求实现一个计算 x 的 n 次幂的函数&#xff0c;即实现函数 double myPow(double x, int n)。这个问题考察的是如何在高效的情况下计算大次幂&#xff0c;尤其是如何处理 n 为负数的情况。 解题思路 如果 n 是负数&#xff0c;将问题转…

Unity3D实现视频和模型融合效果

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、效果展示如下👉二、VideoPlayer播放视频(一)👉2-1、Hieraechy面板右键创建videoPlayer👉2-2、Assets面板右键创建RenderTexture👉2-3、把设置好的RenderTexture拖到videoPlayer里面还有本地视频视频�…

【C++】vector模拟实现、迭代器失效问题(超详解)

vector会使用之后我们来模拟实现一下&#xff0c;通过对vector的模拟实现&#xff0c;我们来说一下迭代器失效问题。 1.准备工作 在头文件vector.h里声明和实现函数&#xff0c;然后在test.cpp里测试代码的正确性。 在vector.h中用命名空间分隔一下&#xff0c;因为c库里面也有…

重学 Android 自定义 View 系列(六):环形进度条

目标 自定义一个环形进度条&#xff0c;可以自定义其最大值、当前进度、背景色、进度色&#xff0c;宽度等信息。 最终效果如下&#xff08;GIF展示纯色有点问题&#xff09;&#xff1a; 1. 结构分析 背景圆环&#xff1a;表示进度条的背景。进度圆环&#xff1a;表示当前…

鸿蒙next版开发:音频并发策略扩展(ArkTS)

在HarmonyOS 5.0中&#xff0c;音频并发策略是管理多个音频流同时播放时的交互和优先级的关键。ArkTS提供了音频会话管理&#xff08;AudioSessionManager&#xff09;接口&#xff0c;允许应用自定义音频流的焦点策略&#xff0c;以适应特定的使用需求。本文将详细介绍如何在A…

C++——视频问题总结

1、C和C的区别 CC面向过程对象注重程序的实现逻辑程序的整体设计内容C语言采用了一种有序的编程方法——结构化编程&#xff1a;将一个大型程序分解为一个个小型的&#xff0c;易于编写的模块&#xff0c;所有模块有序调动&#xff0c;形成了一个程序的完整的运行链C将问题分解…

微信小程序——实现二维码扫描功能(含代码)

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

01-Ajax入门与axios使用、URL知识

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…