【Spring Cloud】服务容错中间件Sentinel入门

文章目录

  • 什么是 Sentinel
      • Sentinel 具有以下特征:
      • Sentinel分为两个部分:
  • 安装 Sentinel 控制台
    • 下载jar包,解压到文件夹
    • 启动控制台
    • 访问
    • 了解控制台的使用原理
  • 微服务集成 Sentinel
    • 添加依赖
    • 增加配置
    • 测试用例编写
    • 启动程序
  • 实现接口限流
  • 总结

欢迎来到阿Q社区
https://bbs.csdn.net/topics/617897123

什么是 Sentinel

Sentinel(分布式系统的流量防卫兵)是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。

Sentinel 具有以下特征:

  • 丰富的应用场景:Sentinel 承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
  • 完备的实时监控:Sentinel提供了实时的监控功能。通过控制台可以看到接入应用的单台机器秒级数据,甚至500台以下规模的集群的汇总运行情况。
  • 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与SpringCloud、Dubbo、gRPC的整合。只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。
  • 完善的SPI扩展点:SentineI 提供简单易用、完善的SPI扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

Sentinel分为两个部分:

  • 核心库(Java 客户端)不依赖任何框架/库,能够运行于所有Java运行时环境,同时对 Dubbo /Spring Cloud 等框架也有较好的支持。
  • 控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。

安装 Sentinel 控制台

Sentinel 提供一个轻量级的控制台,它提供机器发现、单机资源实时监控以及规则管理等功能。

下载jar包,解压到文件夹

https://github.com/alibaba/Sentinel/releases

启动控制台

#直接使用jar命令启动项目(控制台本身是一个Spring Boot项目)
java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.7.jar

在这里插入图片描述

访问

通过浏览器访问localhost:8080进入控制台

在这里插入图片描述
默认用户名密码是sentinel/sentinel,输入之后登录成功

在这里插入图片描述

了解控制台的使用原理

SentineI 的控制台其实就是一个 SpringBoot 编写的程序。

我们需要将我们的微服务程序注册到控制台上,即在微服务中指定控制台的地址,并且还要开启一个跟控制台传递数据的端口,控制台也可以通过此端口调用微服务中的监控程序获取微服务的各种信息。

在这里插入图片描述

微服务集成 Sentinel

微服务集成 Sentinel 非常简单,只需要加入 Sentinel 的依赖即可

添加依赖

在 pom. xml 中加入下面依赖

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

增加配置

修改 shop-order,在里面加入 sentinel 有关控制台的配置

spring:cloud:sentinel:transport:port: 9999 #跟控制台交流的端口,随意指定一个未使用的端口即可dashboard: localhost:8080  #指定控制台服务的地址

测试用例编写

编写一个 Controller 测试使用

@RestController
@RequestMapping("/order")
@Slf4j
public class OrderController3 {@RequestMapping("/message1")public String message1() {return"message1";}@RequestMapping("/message2")public String message2() {return"message2";}}

启动程序

程序启动之后,访问127.0.0.1:8091/order/message1,发现在 sentinel 管理页面看到确实有监控 shop-order 微服务

在这里插入图片描述

实现接口限流

通过控制台为 message1 添加一个流控规则

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通过控制台快速频繁访问,观察效果,发现限流成功。

在这里插入图片描述

总结

到这儿,服务容错中间件 Sentinel 我们算是基本入门了。下一篇将为大家带来容错组件 Sentinel 的进阶文章,敬请期待吧!

后续的文章,我们将继续完善我们的微服务系统,集成更多的Alibaba组件。想要了解更多JAVA后端知识,请点击文末名片与我交流吧。留下您的一键三连,让我们在这个寒冷的东西互相温暖吧!

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

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

相关文章

如何在项目中使用uni-ui组件库

1、安装uni-ui npm i dcloudio/uni-ui 2、组件自动引用 配置easycom 使用 npm 安装好 uni-ui 之后&#xff0c;需要配置 easycom 规则&#xff0c;让 npm 安装的组件支持 easycom 打开项目根目录下的 pages.json 并添加 easycom 节点&#xff1a; // pages.json {"e…

maya节点绕轴旋转

目录 旋转后并尝试冻结变换 绕x轴旋转90度 使用Python脚本 使用图形界面 使用MEL脚本 绕y轴旋转90度 使用Python脚本 ok 旋转后并尝试冻结变换 import maya.cmds as cmdsdef adjust_root_rotation_for_export(joint_name):# 选择根节点cmds.select(joint_name)# 应用旋…

HTML转EXE工具(HTML App Build)永久免费版:24.4.9.0

最新版本的HTML2EXE即将发布了。自从去年发布了HTML2EXE之后&#xff0c;我就正式上班了&#xff0c;一直忙于工作&#xff0c;实在没有时间更新&#xff08;上班时间不能做&#xff09;&#xff0c;很多网友下载使用&#xff0c;反应很好&#xff0c;提出了一些改进的建议&…

【2023】LeetCode HOT 100——二叉树

目录 1. 二叉树的中序遍历1.1 C++实现1.2 Python实现1.3 时空分析2. 二叉树的最大深度2.1 C++实现2.2 Python实现2.3 时空分析3. 翻转二叉树3.1 C++实现3.2 Python实现3.3 时空分析4. 对称二叉树4.1 C++实现

【代码随想录】day39

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、62.不同路径二、63. 不同路径 II 一、62.不同路径 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> path;path.res…

感知定位篇之机器人感知定位元件概述(上)

欢迎关注微信公众号 “四足机器人研习社”&#xff0c;本公众号的文章和资料和四足机器人相关&#xff0c;包括行业的经典教材、行业资料手册&#xff0c;同时会涉及到职业知识学习及思考、行业发展、学习方法等一些方面的文章。 目录 |0.概述 |1.常用传感元件 1.1视觉传感器…

C语言什么是外部函数?怎么⽤?

一、问题 什么是外部函数呢&#xff1f;怎么使⽤&#xff1f; 二、解答 外部函数在整个源程序中都有效&#xff0c;其定义的⼀般形式如下。 extern 类型声明符 函数名(形参表); 例如&#xff1a; extern int f(int a,int b); 调⽤外部函数时&#xff0c;需要对其进⾏声明。…

医疗器械常见法规和标准

在医疗器械行业找工作&#xff0c;有些JD上会明确要求熟悉相关的医疗器械法规和标准&#xff0c;比如&#xff1a;ISO13485、NMPA、CE、IEC62304、IEC60601、IEC14971等等&#xff0c;根据这些我来简单总结下&#xff1a; ISO 13485&#xff08;医疗器械质量管理体系&#xff0…

750万人受影响,印度电子巨头boAt重大数据泄露事件

近日&#xff0c;印度消费电子巨头boAt遭遇重大数据泄露事件&#xff0c;超过750万客户的个人数据遭到泄露&#xff0c;泄露的个人数据包括姓名、地址、联系电话、电子邮件 ID 和客户 ID 以及其他敏感信息&#xff0c;目前这些泄露数据正在暗网上流传。 boAt Lifestyle数据库被…

【数据结构】考研真题攻克与重点知识点剖析 - 第 8 篇:排序

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图与王道考研课程&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术…

【干货】【常用电子元器件介绍】【集成电路】(一)--集成电路的类型和主要参数

声明:本人水平有限,博客可能存在部分错误的地方,请广大读者谅解并向本人反馈错误。 集成电路是一种采用特殊工艺,将晶体管、电阻、电容等元件集成在硅基片上而形成的 具有特定功能的器件,英文名称为Integrated Circuit,缩写为IC,俗称芯片。集成电路能执 行一些特定的功能,如…

Leetcode 438. 找到字符串中所有字母异位词和Leetcode 454. 四数相加 II

文章目录 Leetcode 438. 找到字符串中所有字母异位词题目描述C语言题解和思路解题思路 Leetcode 454. 四数相加 II题目描述C语言题解和解题思路解题思路 Leetcode 438. 找到字符串中所有字母异位词 题目描述 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子…

Android 包命名规范

Android包目录的命名规范会直接影响到整个APP攻城后期的开发效率和拓展性。 常用两种命名方式&#xff1a;PBL&#xff08;package by layer ) 和PBF(pakcage by Feature) layer 英/ˈleɪə(r)/ 翻译&#xff1a;层 feature 英/ˈfiːtʃə(r)/ 翻译&#xff1a;特色 1 Pac…

【吊打面试官系列】Java高并发篇 - 在 Java 中 Executor 和 Executors 的区别?

大家好&#xff0c;我是锋哥。今天分享关于 【在 Java 中 Executor 和 Executors 的区别&#xff1f;】面试题&#xff0c;希望对大家有帮助&#xff1b; 在 Java 中 Executor 和 Executors 的区别&#xff1f; Executors 工具类的不同方法按照我们的需求创建了不同的线程池&am…

入职后,你能为公司带来什么

几乎所有人都知道简历的重要性,觉得应该把简历写好,但由于以往大家套用的模板类似,而且借鉴的简历也都是平铺直叙的描写基本信息、教育背景、项目经历等信息,其实很多人也知道凸显亮点的重要性,但总是无从下手。 造成这种情况很根源的一个问题在于,很多人觉得自己入职后…

代码的重构

代码的重构 1. 代码的重构2. 创建牌相关工具类3. 创建图层相关工具类4. 修改LayerUtil.java 代码的重构 学习于bilibili 春娇与志明 1. 代码的重构 将之前的代码进行封装和重构 方便之后的阅读和维护 故将代码封装&#xff0c;对外提供一个统一访问的入口 2. 创建牌相关工具…

C++ 类的构造函数和访问控制

在 C++ 中,类的构造函数有以下几种: 默认构造函数(Default Constructor): 如果类没有显式定义构造函数,编译器会自动生成一个默认构造函数。默认构造函数没有参数,也不执行任何操作。如果类中没有其他构造函数,那么默认构造函数会被调用。 参数化构造函数(Parameteriz…

探索未来的旋律:AI生成音乐的魔法(附GPT镜像站大全)

在数字化时代的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;已经触及了我们生活的方方面面&#xff0c;从自动驾驶汽车到智能家居系统&#xff0c;再到高度个性化的推荐算法。然而&#xff0c;AI的魔法并不止步于此。近年来&#xff0c;AI在艺术和创造性领域的应用也…

#Arduino(代码记录)

设备&#xff1a;esp32c3 IDE:Arduino 实验&#xff1a; &#xff08;1&#xff09;获取网络时间&#xff0c;b站粉丝数和b站关注数&#xff0c;心知天气 #include "HTTPClient.h" #include "WiFi.h" #include "ArduinoJson.h" char *ssid &qu…

【保姆级讲解PyCharm安装教程】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…