【SpringCloud】Sentinel的基础概念及使用

news2024/11/15 11:04:00

一、雪崩问题

1.问题描述

微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。

如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞

此时,其它不依赖于服务I的业务似乎不受影响

但是,依赖服务I的业务请求被阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞!!!

服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,那么当前服务也就不可用了。

那么,依赖于当前服务的其它服务随着时间的推移,最终也都会变的不可用,形成级联失败雪崩就发生了!!!

2.解决方案

解决雪崩问题的常见方式有四种

a.超时处理
b.舱壁模式
c.熔断降级
d.流量控制

(1)超时处理

设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止等待

这种方式只能缓解雪崩问题!

这是因为上图所示的等待时间时1s,但是假设请求到来的时间是0.5/s一个呢?

释放的速度没有进入的速度快,终究有一天资源会被耗尽!!!

(2)舱壁模式

舱壁模式来源于船舱的设计,如图:

船舱都会被隔板分离为多个独立空间,当船体破损时,只会导致部分空间进入,将故障控制在一定范围内,避免整个船体都被淹没。

我们可以限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离

但是,这种方式也有一定的弊端

对于资源来说是有一定的浪费的,如上图"服务C"是真的"挂了",但是我们却还要尝试对它访问。

(3)熔断降级

熔断降级模式也可以称之为断路器模式

断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。

断路器会统计访问某个服务的请求数量,异常比例。

当发现访问服务D的请求异常比例过高时,认为服务D有导致雪崩的风险,会拦截访问服务D的一切请求,形成熔断

(4)流量控制

限制业务访问的QPS,避免服务因流量的突增而故障。

二、服务保护技术对比

在SpringCloud当中支持多种服务保护技术

  • Netfix Hystrix

  • Sentinel

  • Resilience4J

早期比较流行的是Hystrix框架,但目前国内实用最广泛的还是阿里巴巴的Sentinel框架

Sentinel官网:home | Sentinel (sentinelguard.io)

三、Sentinel介绍和安装

1.初识Sentinel

Sentinel是阿里巴巴开源的一款微服务流量控制组件。

Sentinel 的特征

  • 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

  • 完备的实时监控:Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运行情况。

  • 广泛的开源生态:Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。

  • 完善的 SPI 扩展点:Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

2.安装Sentinel

(1)下载

sentinel官方提供了UI控制台,方便我们对系统做限流设置。

Github下载地址https://github.com/alibaba/Sentinel/releases

(2)运行

将jar包放到任意非中文目录,执行命令:

java -jar sentinel-dashboard-1.8.1.jar

如果要修改Sentinel的默认端口、账户、密码,可以通过下列配置:

配置项

默认值

说明

server.port

8080

服务端口

sentinel.dashboard.auth.username

sentinel

默认用户名

sentinel.dashboard.auth.password

sentinel

默认密码

例如,修改端口为8090

java -Dserver.port=8090 -jar sentinel-dashboard-1.8.1.jar

(3)访问

访问http://localhost:8090页面,就可以看到sentinel的控制台了:

需要输入账号和密码,默认都是:sentinel

但是,登录后,发现一片空白,什么都没有!

这是因为我们还没有与微服务整合,还没有启动IDEA里面的服务。

四、微服务整合Sentinel

【需求】我们在order-service中整合sentinel,并连接sentinel的控制台

步骤如下:

1.引入sentinel依赖

在order-service模块中的pom文件中加上

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

2.配置控制台

修改order-service模块的application.yaml文件,添加下面内容:

# 原来的order-service的配置
server:
  port: 8080
# 新增内容
spring:
  cloud: 
    sentinel:
      transport:
        dashboard: localhost:8090  # sentinel 控制台地址

3.启动sentinel

我们可以配置windows上的快捷启动脚本:

@echo off
start cmd /k "cd/d D:\Sentinel &&java -Dserver.port=8090 -jar sentinel-dashboard-1.8.1.jar"

或者在Sentinel那一级目录下的cmd输入命令:

java -Dserver.port=8090 -jar sentinel-dashboard-1.8.1.jar

4.访问order-service的任意端点

打开浏览器,访问http://localhost:8088/order/101,这样才能触发sentinel的监控。

然后再访问sentinel的控制台,查看效果(没有效果就多刷新几次页面)

下一节——Sentinel流量控制

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

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

相关文章

SAP 实施新的金融工具 IFRS17规则解析

在实施新的金融工具 IFRS 规则的过程中&#xff0c;保险公司现在看到了保险负债的新标准。经过多年的长期讨论&#xff0c;IASB 于 2016 年 11 月承诺在 2021 年 1 月 1 日生效&#xff0c;并明确表示不会考虑进一步推迟法规的通过日期。由于有必要将 2020 年作为比较期&#x…

[思考进阶]05 人与人之间的差距,在于“自律”

除了要提升自己的技术能力&#xff0c;思维的学习和成长也非常非常重要&#xff0c;特推出此[思考进阶]系列&#xff0c;进行刻意练习&#xff0c;从而提升自己的认知。 我认识两个成功的长者。 其中有一个人&#xff0c;每天记录当天的重要事项&#xff0c;比如今天和谁签了什…

英语学习 1

1 词汇积累 1、evolution 进化、发展 2、work efficiency 工作效率 3、material 物质的、非精神上的 4、mental 精神的 5、concern 担忧 6、physical contact 身体接触 7、imply 暗示 8、interpersonal relationships 人际关系 9、indifference 漠不关心 10、depression 抑郁 …

【八大数据排序法】冒泡排序法的图形理解和案例实现 | C++

第十四章 冒泡排序法 目录 第十四章 冒泡排序法 ●前言 ●认识排序 ●一、冒泡排序是什么&#xff1f; 1.简要介绍 2.具体情况 3.算法分析 ●二、案例实现 1.案例一 2.案例二 ●总结 前言 排序算法是我们在程序设计中经常见到和使用的一种算法&#xff0c;它…

在线支付系列【10】微信支付接入前准备

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 文章目录前言1. 获取基本参数商户号&#xff08;mchid&#xff09;应用ID&#xff08;appid&#xff09;绑定商户号和应用ID2. 配置API v3密钥3. 下载并配置商户API证书3.1 简介3.2 生成证书串3.3 获得商…

卷积神经网络CNN :1.基础知识

​卷积神经网络是一种深度学习概念&#xff0c;专为处理图像而构建。机器学习是计算机从过去的经验中学习的概念。深度学习是机器学习的高级部分。CNN 旨在寻找视觉模式。 当我们人类看到图像时&#xff0c;我们看到物体、颜色等。我们在成长过程中学习这些东西&#xff0c;但计…

CRPS:贝叶斯机器学习模型的评分函数

连续分级概率评分&#xff08;Continuous Ranked Probability Score, CRPS&#xff09;或“连续概率排位分数”是一个函数或统计量&#xff0c;可以将分布预测与真实值进行比较。 机器学习工作流程的一个重要部分是模型评估。这个过程本身可以被认为是常识&#xff1a;将数据分…

【CLYZ集训】变量取值【网络流】

思路&#xff1a; 容易把答案转化为∑siwi∑ti(wx−wy)\sum{s_iw_i}\sum{t_i(w_x-w_y)}∑si​wi​∑ti​(wx​−wy​)&#xff0c;然后我们设初始代价为−∑∣si∣wi-\sum{|s_i|w_i}−∑∣si​∣wi​&#xff0c;然后考虑建模。 如果Si大于0&#xff0c;则源点向i连一条流量为2…

【Java AWT 图形界面编程】FileDialog 对话框 ( 打开文件 | 保存文件 | 构造函数 | 获取文件路径 | 获取文件名称 | 代码示例 )

文章目录一、FileDialog 对话框1、构造函数2、获取文件路径3、获取文件名称二、FileDialog 对话框代码示例一、FileDialog 对话框 在开发时 , 经常遇到文件相关操作 , 如 : 选择文件 , 保存文件 等 , 在 AWT 中使用 FileDialog 文件对话框 实现上述功能 ; 1、构造函数 FileDial…

量子计算初创公司Oxford Ionics完成3000万英镑A轮融资

&#xff08;图片来源&#xff1a;网络&#xff09;未来&#xff0c;量子计算机会解决世界上最大的超级计算机无法解决的问题。然而&#xff0c;大规模制造量子计算机仍然是一个巨大的挑战。英国量子计算初创公司Oxford IonicsA轮融资获得的3000万英镑&#xff08;约合人民币2.…

Java集合(六)Set接口和常用方法

Set接口基本介绍&#xff1a; &#xff08;1&#xff09;无序&#xff08;添加和取出的顺序不一致&#xff09;&#xff0c;没有索引 &#xff08;2&#xff09;不允许重复元素&#xff0c;所以最多包含一个null (3)JDK API中Set接口的实现类有&#xff1a; 其中set接口的已…

2023年,最新最权威的上海Java培训机构排行榜出炉!

2022也许你的很多学习和工作计划都被打乱&#xff0c;但是过去的2022不管多艰难&#xff0c;多难熬。都已经成为过去式。2023悄然而至&#xff0c;新的一年&#xff0c;你我都该有新气象新动力&#xff0c;学习什么时候开始都不晚&#xff0c;想跨行从事软件开发、IT行业的小伙…

跳槽至今0 offer的大冤种,问题到底出在哪儿?

众所周知&#xff0c;2022年市场很难&#xff01;看着企业们纷纷裁员&#xff0c;甚至连内推这个后门都走不通&#xff01;哪怕有面试&#xff0c;都是屡屡碰壁&#xff0c;你想清楚问题出在哪了吗&#xff1f;&#x1f62d;“求职不得&#xff0c;夜不能寐&#xff1b;三更半夜…

C++基础——C++ 指针

C基础——C 指针C 指针什么是指针&#xff1f;C 中使用指针C 指针详解C Null 指针C 指针的算术运算递增一个指针递减一个指针指针的比较C 指针 vs 数组C 指向指针的指针&#xff08;多级间接寻址&#xff09;C 传递指针给函数C 指针 学习 C 的指针既简单又有趣。通过指针&…

Python语言基础学习之Python基础之列表介绍和循环遍历

今天给大家分享一些Python基础 (列表基础和循环遍历介绍)&#xff0c;一起来看看吧~ 一、列表介绍 想一想&#xff1a; 字符串可以用来存储一串信息&#xff0c;那么想一想&#xff0c;怎样存储所有同学的名字呢?定义100个变量&#xff0c;每个变量存放一个学生的姓名可行吗…

LinkedList VS ArrayList~

ArrayList VS LinkedList: One: ArrayList:基于数组&#xff0c;需要连续内存LinkedList:基于双向链表&#xff0c;无需连续内存Two: ArrayList:随机访问快(指根据下标访问)LinkedList:随机访问慢(要沿着链表遍历)点击ArrayList的源码: 点击LinkedList的源码&#xff1a; Ar…

九龙证券|看好2-4月份汽车月度销量增速的逐月改善

机构指出&#xff0c;考虑到22年末购置税补助等方针到期&#xff0c;叠加春节假期消费需求的提早&#xff0c;估计年内乘用车销量绝对值及同比增速均于1月触底&#xff0c;后续方针影响、消费回暖等一期效果下&#xff0c;看好车市回暖&#xff0c;估计销量增速将于2-4月逐月回…

15.Set系列,可变参数、Collections

目录 一.Set系列 1.1 Set系列集合特点 1.2 Set集合实现类特点 1.3 HashSet 1.3.1 特点 1.3.2 优点 1.3.3 在理解原理之前要知道的几个概念。 1.3.4 底层原理 1.3.5 哈希表的形成过程/元素的存入过程&#xff08;Jdk8的版本&#xff09; 1.3.6 注意事项 1.4 linkedHa…

通用数字支付网络(UDPN)于达沃斯论坛期间正式发布

2023年1月19日&#xff0c;在瑞士达沃斯举行的世界经济论坛 (WEF) 会议期间&#xff0c;通用数字支付网络 (Universal Digital Payment Network, UDPN)正式对外发布。 近年来&#xff0c;全球各国央行数字货币&#xff08;CBDC&#xff09;得到了广泛的关注与长足的进步&#…

WebHooks

webhook 究竟是什么呢&#xff1f; Webhook是一个API概念&#xff0c;webhoo是一种web回调或者http的push API。Webhook作为一个轻量的事件处理应用&#xff0c;正变得越来越有用。 具体的说&#xff0c;webhook 是应用给其它应用提供实时信息的一种方式。信息一产生&#xf…