sentinel微服务部署

news2024/11/19 14:44:15

一.启动nacos和redis

1.查看是否有nacos和redis

docker ps -a

2.启动nacos和redis 

docker start nacos
docker start redis-6379
docker ps   

二.使用openfeign项目

这里看我另一个博客OpenFeign微服务部署-CSDN博客,我把SpringSessiondemo复制后改为sentinel1 ,SpringSessiondemo1复制后改为sentinel2

1.下载sentinel

下载地址:Releases · alibaba/Sentinel · GitHub

注意版本号对应

2.启动sentinel 

输入以下指令启动 

java -jar sentinel-dashboard.jar

启动后别把这个窗口关了  

3.给两个项目都添加如下依赖  

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

<dependency>
  <groupId>com.alibaba.csp</groupId>
  <artifactId>sentinel-web-servlet</artifactId>
</dependency>

4.登录sentinel

 

 登录后的界面

5.给两个项目的application.yml配置文件里添加如下配置

这里建议是不要有黄条,有黄条可能出错 

 cloud:
     sentinel:
       transport:
        dashboard: localhost:8080

6.启动两个项目并访问项目

7.访问sentinel网站,设置限流

  

 

 

一下一下点击访问的时候,还可以看见正常响应  

 

三.自定义流控响应

对第一个项目进行修改

1.添加过滤器SentinelFilterConfig 

package com.jr.config;

import com.alibaba.csp.sentinel.adapter.servlet.CommonFilter;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.servlet.Filter;

@Configuration
public class SentinelFilterConfig {

    @Bean
    public FilterRegistrationBean<Filter> filterFilterRegistrationBean(){
        FilterRegistrationBean<Filter> result = new FilterRegistrationBean<>(new CommonFilter());
        result.addUrlPatterns("/*");
        return result;
    }
}

2.添加配置类SentinelConfig 

package com.jr.config;

import com.alibaba.csp.sentinel.adapter.servlet.callback.WebCallbackManager;
import com.alibaba.fastjson.JSON;
import com.jr.util.Result;
import org.springframework.context.annotation.Configuration;

@Configuration
public class SentinelConfig {

    public SentinelConfig() {
        WebCallbackManager.setUrlBlockHandler((request, response, e) -> {
            Result error = Result.error();
            error.setMessage("被限流了!");
            response.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=utf-8");
            response.getWriter().write(JSON.toJSONString(error));
        });
    }
}

 3.启动运行

你重新启动要重新在sentinel网站重新设置一下阈值

四.熔断feign(第一个项目sentinel1)

1.在第一个项目sentinel1工程里 开启feign的sentinel,写properties文件中可以,写在yaml文件也可以

feign.sentinel.enabled=true

 

2.添加feign接口实现类

 

package com.jr.feign.impl;

import com.jr.entry.Score;
import com.jr.entry.UserDto;
import com.jr.feign.ScoreFeign;
import com.jr.util.Result;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class ScoreFeignImpl implements ScoreFeign {
    @Override
    public Result info() {
        List<Score> list = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            Score score = new Score();
            score.setName("name" + i);
            score.setScore(99.99);
            list.add(score);
        }
        return  Result.ok().put("data",list);
    }

    @Override
    public Result id(String id) {
        return null;
    }

    @Override
    public Result add(UserDto user) {
        return null;
    }
}

3.修改feign接口注解

@FeignClient(value = "demo-sentinel-s", fallback = ScoreFeignImpl.class) //fallback 一旦出现熔断,要走哪个类。

4查看运行结果

关掉第二个sentinel2工程,模拟宕机效果。在使用sentinel1工程去访问sentinel2工程,就可以看见熔断处理了。当遇到宕机的时候,就访问了自己工程里的feign实现类方法。

五.熔断资源

1.try方式

在第一个工程sentinel1工程的Result工具类里写以下代码

 public Result setMessage(String message) {
        this.message = message;
        return this;
    }

在第一个工程sentinel1工程的UserController里,添加如下方法

   @GetMapping("/try")
    public Result trySources(){
        String sourcesName = "testTry";
        try(Entry entry = SphU.entry(sourcesName)) { //SphU.entry方法通过传入资源名称和其他参数来获取访问令牌。如果获取到令牌,则可以访问目标资源;如果没有获取到令牌,则无法访问对应资源。
            return Result.ok();
        } catch (BlockException e) {
            return Result.error().setMessage("被限流了!");
        }
    }

注意Entry引包  

import com.alibaba.csp.sentinel.Entry;

重启两个项目,运行一下看效果,记得在snetinel网站重新设置一下阈值。就是自己写的方法,也被限流了。

再到sentinel网站设置try的阈值 

 

 

2.注解方式

再到sentinel网站设置annptation的阈值  

 

到此结束,希望能帮到大家

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

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

相关文章

钡铼技术R10工业4G路由在智能交通中的应用

随着物联网技术的迅猛发展&#xff0c;智能交通系统&#xff08;Intelligent Transportation System, ITS&#xff09;正逐渐成为现代城市交通管理的重要组成部分。智能交通系统通过集成先进的信息技术、通信技术、传感技术以及计算机处理技术&#xff0c;实现对交通信息的实时…

抖店API接口系列(商品详情数据),Json数据格式参考

抖店API接口系列中的商品详情数据接口允许第三方应用通过编程方式访问抖音小店的商品数据。这些数据通常包括商品的基本信息、价格、库存、用户评价等&#xff0c;并且会以JSON数据格式返回。以下是一个抖店商品详情数据JSON格式的参考示例&#xff1a; { "status":…

共享购模式:绿色积分引领消费新潮流

绿色消费浪潮席卷全球&#xff0c;绿色积分作为一种创新的激励机制&#xff0c;正受到越来越多消费者的青睐。在众多消费模式中&#xff0c;共享购模式凭借独特的绿色积分体系&#xff0c;不仅推动了绿色消费&#xff0c;还为消费者带来了更多实惠与额外收益&#xff0c;成为市…

解数独Python

怎样解数独&#xff1f; Python def setBoardFunc(puz): global grid print("Original Sudoku") for i in range(0, len(puz), 9): row puz[i:i9] temp [] for block in row: temp.append(int(block)) g…

简单理解程序地址空间:Linux 中的内存映射与页表解析

ps: Linux操作系统对于程序地址&#xff0c;物理地址的处理&#xff0c;对于源码&#xff0c;我也看不大懂&#xff0c;只是截取当我们进程发生正常缺页中断的时候的调用情况。本文中所有的源码都是进行截取过的&#xff0c;如果大家感兴趣可以去下载源码。 在Linux 操作系统 …

【Linux】wsl2安装ubuntu并移动安装位置

本文首发于 ❄️慕雪的寒舍 1.启用wsl 首先是启用你的wsl&#xff0c;参考本站wsl安装centos8中的教程; 启用wsl后&#xff0c;更新一下&#xff0c;并设置版本为2&#xff1b; wsl --update wsl --set-default-version 2 # 设置wsl版本为2&#xff0c;不然可能安装失败2.安…

【FPGA开发】Modelsim仿真精度的坑

问题所在 最近在使用黑金的AXU3EG板卡对着正点原子ZYNQ7020的例程进行移植学习。但在编写tb代码以及使用modelsim进行仿真时出了问题&#xff0c;发现我的实际波形与正点的对不上&#xff0c;仔细测量一下波形发现&#xff0c;我的系统时钟是6ns周期&#xff0c;而不是理想中的…

某象异形滑块99%准确率方案

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 该文章模型已经上线ocr识别网站,欢迎测试!!,地址:https://yxlocr.windy-rain.cn/ocr/slider/6 所谓的顶象异形滑块,是指没有采用常规的缺口,使用各种形状的…

20.安卓逆向-frida基础-hook分析调试技巧2-hookDES

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;图灵Python学院 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要盲目相信。 工…

MEMS 课本习题(1)

Chapter 5 Lump Modeling 为了将机械系统转换为等效电路&#xff0c;我们需要将各个机械元件转换为相应的电气元件。以下是机械元件和其电气等效元件的对照关系&#xff1a; 质量&#xff08;m&#xff09; - 转换为 电感&#xff08;L&#xff09;弹簧&#xff08;k&#xff…

SD入门教程一:Stable Diffusion 基础(技术篇)

前言 在开篇的时候就大致讲了SD和VAE&#xff0c;那么今天我们具象化地再来讲讲Stable Diffusion&#xff08;稳定扩散&#xff09;。 严格说来它是一个由几个组件&#xff08;模型&#xff09;构成的系统&#xff0c;而非单独的一个模型。我以最常见的文生图为例&#xff0c;…

PCL 计算3DSC并可视化

目录 一、概述 1.1原理 1.2实现步骤 1.3应用场景 二、代码实现 2.1关键函数 2.1.1 法线计算 2.1.2 3DSC特征计算 2.1.3 可视化3DSC直方图 2.2完整代码 三、实现效果 PCL点云算法汇总及实战案例汇总的目录地址链接&#xff1a; PCL点云算法与项目实战案例汇总&#…

【C++】——继承【上】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;Yan. yan.                        …

MPLS解决BGP路由黑洞问题

文章目录 MPLS应用实验实验配置 MPLS应用实验 实验目的&#xff1a;解决BGP中IBGP邻居之间存在的问题 MPLS解决BGP路由黑洞问题实验 配置完基本的MPLS和BGP操作之后&#xff0c;只有R2和R5上面有两个私网的路由&#xff0c;中间的设备没有私网路由&#xff0c;这时候默认还是走…

Linux源码阅读笔记-USB驱动分析

基础层次详解 通用串行总线&#xff08;USB&#xff09;主要用于连接主机和外部设备&#xff08;协调主机和设备之间的通讯&#xff09;&#xff0c;USB 设备不能主动向主机发送数据。USB 总线采用拓扑&#xff08;树形&#xff09;&#xff0c;主机侧和设备侧的 USB 控制器&a…

IT招聘乱象的全面分析

近年来&#xff0c;IT行业的招聘要求似乎越来越苛刻&#xff0c;甚至有些不切实际。许多企业在招聘时&#xff0c;不仅要求前端工程师具备UI设计能力&#xff0c;还希望后端工程师精通K8S服务器运维&#xff0c;更有甚至希望研发经理掌握所有前后端框架和最新开发技术。这种招聘…

RAG测评关键指标

解读RAG测评&#xff1a;关键指标与应用分析 ©作者|CodeDan 来源|神州问学 一、RAG介绍 1.1 简介 RAG&#xff08;Retrieval-Augmented Generation&#xff09;是一种结合信息检索与文本生成的技术&#xff0c;旨在提高大型语言模型&#xff08;LLM&#xff09;在回答复…

ROS理论与实践学习笔记——4 ROS的常用组件之TF坐标变换

tf:TransForm Frame,坐标变换 坐标系:ROS 中是通过坐标系统开标定物体的,确切的将是通过右手坐标系来标定的。 作用:在 ROS 中用于实现不同坐标系之间的点或向量的转换。 说明:在ROS中坐标变换最初对应的是tf,不过在 hydro 版本开始, tf 被弃用,迁移到 tf2,后者…

docker 搭建 vue3 + vite

vue3发布了,今天就分享一下我使用docker 搭建 vue3 vite 开发环境。至于为什么使用docker搭建&#xff0c;因为多版本可以快速切换&#xff0c;和本地环境避免冲突。好了话不多说我们开始吧。 1. 准备资料 Docker Desktop wsl2 ubuntu 下载地址 : https://www.docker.…

实验室认证需要准备哪些文件材料?

实验室认证需要准备的文件材料通常包括以下几类&#xff1a; 一、法律地位文件 实验室成立文件及营业执照&#xff1a;包括实验室的成立证明文件、单位营业执照等&#xff0c;以证明实验室的法律地位和合法性。 人员任命文件&#xff1a;最高管理者&#xff08;如总经理&…