微服务学习3——利用sentinel实现服务器的容错

news2024/10/7 16:21:50

1.Sentinel服务器容错

(本文参考黑马程序员项目)
个人仓库地址:https://gitee.com/jkangle/springboot-exercise.git


在服务器中,由于网络原因可能会出现线程阻塞的情况,当线程阻塞的时候如果有大量的请求涌入,就会造成当前的服务瘫痪,由于服务与服务之间的依赖关系,故障会出现传播的情况,这样会造成服务器的雪崩效应。


因此就需要一种容错方案。有一些常见的容错组件就很好的包含一些容错方案,例如阿里巴巴开源的一款断路由器实现sentinel.

1.简单入门使用

1.1安装sentinel控制台

安装完成后直接用java命令运行(需要注意的是这样并不会将数据永久存储,如果你运行的sentinel关闭所有的数据这些就会消失)
在这里插入图片描述

1.2导入依赖

在本次项目的shop-order中

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            <version>2021.1</version>
        </dependency>
1.3修改配置文件
server:
  port: 8091

spring:
  application:
    name: service-order
  main:
    allow-circular-references: true
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    sentinel:
      transport:
        dashboard: localhost:8080
      eager: true



  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/shop?characterEncoding=UTF-8
    username: root
    password:

  jpa:
    properties:
      hibernate:
        hbm2ddl:
          auto: update
        dialect: org.hibernate.dialect.MySQL5InnoDBDialect

可能出现如图的错误,这是因为存在依赖的循环,就是sentinel下的某一个类,循环依赖了(A中注入了B,B中也注入了A), 原因就是新版本的Spring默认不允许循环依赖!具体的分析看这位大佬的文章http://t.csdn.cn/6OeQp
在这里插入图片描述

1.4写一个测试案例
package org.example.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OrderController1 {
    @RequestMapping("/order/massage1")
    public String massage1(){
        return "massage1";
    }

    @RequestMapping("/order/massage2")
    public String massage2(){
        return "massage2";
    }
}

1.5通过浏览器进入控制台

在这里插入图片描述
当启动测试案例,不停的刷新,这边就可以监控
在这里插入图片描述

1.6实现一个限流接口

在这里插入图片描述
当超过设置的流控之后就会出现
在这里插入图片描述

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

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

相关文章

echarts滚动条样式修改

1.修改的样式如下&#xff1a; 2.相关代码 // 基于准备好的dom&#xff0c;初始化echarts实例 const myChart echarts.init(this.$refs.tasksChart) // 绘制图表 myChart.setOption({grid: {top: 4%,left: 12%,right: 4%,bottom: 23%},// tooltip: {// formatter: {b} {c…

【ElasticSearch】JavaRestClient实现索引库和文档的增删改查

文章目录 一、RestClient1、什么是RestClient2、导入demo工程3、数据结构分析与索引库创建4、初始化JavaRestClient 二、RestClient操作索引库1、创建索引库2、删除索引库3、判断索引库是否存在 三、RestClient操作文档1、新增文档2、查询文档3、删除文档4、修改文档5、批量导入…

视觉SLAM-光流法

文章目录 目录 前言 &#x1f31f;光流法的基本原理 &#x1f31f;OpenCV中的光流法实现 &#x1f31f;光流法的应用 &#x1f31f;代码实现 &#x1f349;OpenCV代码 &#x1f349;OpenCV代码 &#x1f31f;总结 前言 当我们观察一个视频或连续帧的图像时&#xff0c…

【Bubbliiiing视频记录】Pytorch 搭建自己的Unet语义分割平台

来源 b站 地址 什么是语义分割 语义分割&#xff1a;对图像每个像素点进行分类 常见神经网络处理过程&#xff1a;Encoder提取特征&#xff0c;接着Docoder恢复成原图大小的图片 UNet整体结构 分为三个部分 主干特征提取部分&#xff1a; 卷积和最大池化的堆叠获得五个初…

Snail-Camunda

gitee地址&#xff1a;snail-camunda 当前版本&#xff1a;V1.0 &#x1f496;&#x1f496;&#x1f496;希望大家动动发财的小手帮忙star一下&#xff0c;感谢&#xff01; ⭐项目介绍 本项目是对Camunda接口…

data和filter协议文件包含

实验目的 通过本实验&#xff0c;了解php封装伪协议&#xff0c;掌握filter协议和data协议的用法 实验环境 操作机&#xff1a;kali 靶机&#xff1a;Windows Server 2003 实验地址&#xff1a;http://靶机ip/exp/include2/filter/ http://靶机ip/exp/include/include3.php…

【C++ OJ练习】1.求和

1.题目链接 求123...n_牛客题霸_牛客网 2.解题思路 利用C构造函数的特性 既然不能使用循环 那么我们可以定义n个对象 就会调用n次构造函数 去代替循环 每次调用的时候进行加法的计算 3.代码 class Sum { public:Sum(){_sum _i;_i;}static void Init(){_i 1;_sum 0;}st…

ruoyi若依 组织架构设计--[ 菜单管理 ]

ruoyi若依 组织架构设计--[ 菜单管理 ] 1. 关于ruoyi组织架构各个表的设计2. 从产品的角度考虑 [ 菜单管理 ]2.1菜单树List页面2.2 菜单树新增2.3 菜单树修改2.4 删除菜单 1. 关于ruoyi组织架构各个表的设计 1.部门表 ancestors字段。 添加这个字段&#xff0c;方便列举所有子…

用maven安装Netty

Netty简单介绍 官网&#xff1a;https://netty.io/index.html Netty是一个异步的、事件驱动的网络应用框架&#xff0c;既可用于开发高性能的服务端&#xff0c;也可用于开发客户端。 Netty是一个NIO的客户端和服务端框架&#xff0c;用于快速、容易地开发网络应用&#xff0c…

Linux·图解Linux网络包接收过程

因为要对百万、千万、甚至是过亿的用户提供各种网络服务&#xff0c;所以在一线互联网企业里面试和晋升后端开发同学的其中一个重点要求就是要能支撑高并发&#xff0c;要理解性能开销&#xff0c;会进行性能优化。而很多时候&#xff0c;如果你对Linux底层的理解不深的话&…

Paddle OCR 安装使用教程

简介 PaddleOCR是飞浆开源文字识别模型&#xff0c;最新开源的超轻量PP-OCRv3模型大小仅为16.2M。同时支持中英文识别&#xff1b;支持倾斜、竖排等多种方向文字识别&#xff1b;支持GPU、CPU预测&#xff0c;并且支持使用paddle开源组件训练自己的超轻量模型&#xff0c;对于…

微信小程序路由跳转,API调用,页面传值

路由跳转 wx.switchTab 跳转到 tabBar 页面&#xff0c;并关闭其他所有非 tabBar 页面。 wx.switchTab({url: /pages/tarbar/index })wx.reLaunch 关闭所有页面&#xff0c;打开到应用内的某个页面。 wx.reLaunch({url: /pages/index/index })wx.redirectTo 关闭当前页面…

13服务端实战:初始化项目

本章开始将进行服务端的实战开发&#xff0c;包含了 Devops、服务端以及其他涉及到的中间件的模块。 由于 NestJS 的文档非常完善以及之前有写过比较完整的 NestJS 的小册&#xff0c;如果对 NestJS 非常熟悉的同学可以快速跳过本章&#xff0c;另外整个实战篇的代码都会按照流…

shell命令以及运行原理、Linux权限、粘滞位

今天我带来Linux重点知识&#xff1a;shell命令以及运行原理、Linux权限、粘滞位的知识点。 目录 shell命令以及运行原理Linux权限的概念Linux下的用户su命令 Linux权限管理文件访问者的分类文件的类型和访问权限文件权限值的表达方法 Linux关于权限的知识点补充1.Linux创建用户…

Unity3d C#使用XCharts数据显示格式说明(如:数据类型、数据显示为百分比%等)

前言 XCharts是开源且比较强大的插件&#xff0c;在Unity3d中搭建UI时常常使用的数据图表的制作插件&#xff0c; 特别是当下的数字沙盘、数字孪生等项目中应用较广。笔者公司也一直在使用该插件&#xff0c;本文主要是在开发过程中的一个小需求引发的整理分享。在项目中需要将…

vue2 若依项目,使用plotly.js-dist图表库,将数据图表一键导出为图片

此代码适用的场景是一个页面有多个数据图表。 首先需要拿到你生成数据图表的数据&#xff0c; 然后赋值给一个数组&#xff0c;数组需要在data定义&#xff0c;还需要去重。 // 检查是否有相同的parameter值const hasDuplicate this.toImageArr.some(iiem > iiem.paramete…

由于找不到xinput1_3.dll,无法继续执行代码的解决方法都有哪些?

关于由于找不到xinput1_3.dll,无法继续执行代码这个问题&#xff0c;其实在网上经常看别人提及&#xff0c;要解决这个问题&#xff0c;还是不难的&#xff0c;今天小编就来给大家详细的说说关于这个问题的解决方法吧&#xff0c;本文会介绍多种的修复方法&#xff0c;下面一起…

商品数据封装接口(PHP/Java/Python)

封装 在面向对象程式设计方法中&#xff0c;封装是指—种将抽象性函式接口的实现细节部分包装、隐藏起来的方法 封装可以被认为是一个保护屏障&#xff0c;防止该类的代码和数据被外部类定义的代码随机访问 要访问该类的代码和数据&#xff0c;必须通过严格的接口控制 封装最…

提升生产效率的关键:如何选择适合您企业的设备管理系统?

在现代工业生产中&#xff0c;设备管理对于提升生产效率和降低成本至关重要。一个高效的设备管理系统可以帮助企业实现设备的有效监控、维护和优化&#xff0c;从而提高设备的可靠性、降低停机时间&#xff0c;并最终提升生产效率。选择适合企业的设备管理系统可能是一个复杂的…

Vision Pro:多人XR协作这样玩才对味

早在iOS 15系统更新中&#xff0c;苹果就推出了SharePlay功能&#xff0c;该功能主要针对多人协作和社交&#xff0c;允许用户在FaceTime会话中一起看剧、听歌、共享屏幕。Vision Pro头显也支持该功能&#xff0c;允许用户共享AR图像和空间上下文信息&#xff0c;实现远程可视化…