【SpringCloud】06-Sentinel

news/2024/10/31 17:25:29/

1. 雪崩问题

一个微服务出现问题导致一系列微服务都不可以正常工作。
服务保护方案:

  1. 请求限流。
  2. 线程隔离。
    在这里插入图片描述
  3. 服务熔断
    在这里插入图片描述

2. Sentinel

  1. 启动Sentinel
java -Dserver.port=8090 -Dcsp.sentinel.dashboard.server=localhost:8090 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar
  1. 依赖
<!--sentinel-->
<dependency><groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
  1. 配置
spring:cloud: sentinel:transport:dashboard: localhost:8090http-method-specify: true # 将请求方式也作为簇点链路

簇点链路: Controller中的Rest接口

3. Fallback

  1. 配置openfeign使之能够成为簇点链路
feign:okhttp:enabled: true # 开启OKHttp功能sentinel: # 让feign可以成为簇点链路enabled: true
  1. 设置FallbackFactory
package com.hmall.api.client.fallback;import com.hmall.api.client.ItemClient;
import com.hmall.api.dto.ItemDTO;
import com.hmall.api.dto.OrderDetailDTO;
import com.hmall.common.utils.CollUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;import java.util.Collection;
import java.util.List;@Slf4j
public class ItemClientFallbackFactory implements FallbackFactory<ItemClient> {@Overridepublic ItemClient create(Throwable cause) {return new ItemClient() {@Overridepublic List<ItemDTO> queryItemByIds(Collection<Long> ids) {log.info("查询商品失败!", cause);return CollUtils.emptyList();}@Overridepublic void deductStock(List<OrderDetailDTO> items) {log.info("扣减商品库存失败!", cause);throw new RuntimeException(cause);}};}
}
  1. 注册Bean
package com.hmall.api.config;import com.hmall.api.client.fallback.ItemClientFallbackFactory;
import com.hmall.common.utils.UserContext;
import feign.Logger;
import feign.RequestInterceptor;
import feign.RequestTemplate;
import org.springframework.context.annotation.Bean;public class DefaultFeignConfig {@Beanpublic Logger.Level feignLogLevel() {return Logger.Level.FULL;}@Beanpublic RequestInterceptor userInfoRequestInterceptor() {return new RequestInterceptor() {@Overridepublic void apply(RequestTemplate requestTemplate) {Long userId = UserContext.getUser();if (userId!=null) {requestTemplate.header("user-info", userId.toString());}}};}@Beanpublic ItemClientFallbackFactory itemClientFallbackFactory() {return new ItemClientFallbackFactory();}
}
  1. 配置Bean
@FeignClient(value = "item-service", fallbackFactory = ItemClientFallbackFactory.class)
public interface ItemClient {@GetMapping("/items")List<ItemDTO> queryItemByIds(@RequestParam("ids") Collection<Long> ids);@PutMapping("/items/stock/deduct")void deductStock(@RequestBody List<OrderDetailDTO> items);
}

4. 熔断

拒绝发送请求给故障的微服务
在这里插入图片描述


http://www.ppmy.cn/news/1543398.html

相关文章

Spring Cache-基于注解的缓存

Spring Cache 是 Spring 提供的缓存抽象框架&#xff0c;能够将数据缓存到内存或外部缓存中&#xff0c;减少数据库或远程服务的访问频率&#xff0c;从而显著提升应用性能。Spring Cache 通过注解的方式实现缓存逻辑&#xff0c;使用方便&#xff0c;支持多种缓存实现&#xf…

Python中除了matplotlib外还有哪些数据可视化的库?

matplotlib算是python比较底层的可视化库&#xff0c;可定制性强、图表资源丰富、简单易用、达到出版质量级别。 其它的可视化库诸如&#xff1a;seaborn、pyecharts、ggplot、plotnine、holoviews、basemap、altair、pyqtgraph、pygal、vispy、networkx、plotly、bokeh、geop…

【牛客算法】某司面试算法题:循环右移二叉树

一、算法题描述 1.1 算法描述 现有一棵n个节点构成的二叉树&#xff0c;请你将每一层的节点向右循环位移k位。某层向右位移一位(即k1)的含义为&#xff1a; 若当前节点为左孩子节点&#xff0c;会变成当前节点的双亲节点的右孩子节点。 若当前节点为右儿子&#xff0c;会变成…

2024年三个月自学网络安全(黑客技术)学习指南。

&#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 什么是网络安全 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、…

Django入门教程——数据模型建立

第二章&#xff1a;数据模型建立 教学目的 了解模板引擎的创建理解模板引擎的基本语法了解系统设计的基本原则&#xff0c;重点理解数据库的设计。了解ORM概念&#xff0c;理解数据模型创建方法。 模板引擎设置 Django的核心组件包括&#xff1a; 模型&#xff08;Model&a…

vue + elementui 全局Loading效果

注&#xff1a;在request请求和响应封装的文件里引入loading&#xff0c;发请求时打开loading&#xff0c;响应时关闭loading&#xff0c;这样每个接口调用时都会有loading效果 &#xff08;1&#xff09; 首先确保项目中安装了element-ui这个依赖包 npm i element-ui -S&…

阿里云物联网的通信方式

阿里云物联网通信的两种方式&#xff0c;一个是物模型&#xff08;分为服务&#xff0c;事件&#xff0c;属性此篇文章只讲解物模型中的服务和属性用法&#xff09;&#xff0c;一个是自定义topic&#xff08;要另外设置数据流转&#xff09; 1.使用产品内的功能定义&#xff0…

hivesql学习大纲

引言 - 简述Hive的用途和特点 - 为什么学习HiveSQL 第一部分&#xff1a;Hive基础 1.1 Hive简介 - 定义和架构 - Hive与传统数据库的区别 - Hive的应用场景 1.2 Hive环境搭建 - 所需环境和依赖 - 安装和配置Hive - 启动和停止Hive服务 1.3 Hive数据模型 - 数据库&#xff0…