微服务保护——Sentinel【快速入门】

news2024/12/27 15:27:04

一、雪崩问题🍉

(一) 什么是雪崩🥝

微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。服务D故障引起服务A故障,服务A引起其他服务故障,渐渐导致所有微服务都不可用。有人说,服务A在向服务D发送请求的时候,设置连接超时不就可以了吗?要知道,在高并发的情况下,设置连接超时是不可取的,所以还是会导致雪崩现象。

微服务调用链路中的某个服务故障,引起整个链路中的所有微服务都不可用,这就是雪崩。

在这里插入图片描述

(二)解决雪崩问题🥝

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

1、超时处理:🍓

设定超时时间,请求超过一定时间没有响应就返回错误信息,不会无休止地等待。
但是这种解决方案只是缓解了雪崩问题,并不能解决雪崩问题。因为请求的超时时间设置为1s,也就是说每秒释放一个请求,但在高并发的情况下,假设每秒请求是2个,那么在一定的时间内,也会导致服务A不可用,最终导致雪崩问题的出现。所以说这种解决方案只是缓解雪崩问题。

在这里插入图片描述

2、舱壁模式:🍓

限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离。它是通过划分tomcat的资源,划分tomcat的线程,让每个业务最多使用n个线程,进而提高tomcat的容灾能力。但是这种模式会导致一定的资源浪费,比如,服务C已经宕机,但每次还是会尝试让服务A去向服务C发送请求。

在这里插入图片描述

3、熔断降级:🍓

有断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。
请求失败占比达到阈值后,这个时候会出现熔断,此后服务A向服务D不能发送请求,请求直接在服务A给拦截。

在这里插入图片描述

4、流量控制:🍓

限制业务访问的QPS,避免服务因为流量的突增而故障。这种是从预防层面来解决雪崩问题。Sentinel可以根据服务所能接收的访问频率,向服务发送请求,避免服务出现故障,就不会出现故障转移,也就避免了雪崩问题。也就是将大量的请求一点点的发送给服务,从而预防了雪崩问题。

在这里插入图片描述

二、服务保护技术对比🍉

在这里插入图片描述

三、Sentinel介绍和安装🍉

(一)初始Sentinel🥝

Sentinel是阿里巴巴开源的一款微服务流量控制组件。官网地址:https://sentinelguard.io/zh-cn/index.html

Sentinel 具有以下特征:

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

(二)安装Sentinel控制台🥝

1、下载
sentinel官方提供了UI控制台,方便我们对系统做限流设置。大家可以在GitHub下载。

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

java -jar sentinel-dashboard-1.8.1.jar

在这里插入图片描述

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

在这里插入图片描述
3.然后访问:localhost:8080 即可看到控制台页面,默认的账户和密码都是sentinel

在这里插入图片描述

四、微服务整合Sentinel🍉

1、在微服务中引入Sentinel依赖:🥝

在这里插入图片描述

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

2、配置控制台地址:🥝

在这里插入图片描述

#配置sentinel微服务保护地址
spring.cloud.sentinel.transport.dashboard=localhost:8090

3、访问微服务的任意端点,触发Sentinel监控🥝

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

【深入探究人工智能】:历史、应用、技术与未来

深入探究人工智能 前言人工智能的历史人工智能的应用人工智能的技术人工智能的未来当代的人工智能产物结语&#x1f340;小结&#x1f340; &#x1f389;博客主页&#xff1a;小智_x0___0x_ &#x1f389;欢迎关注&#xff1a;&#x1f44d;点赞&#x1f64c;收藏✍️留言 &am…

Linux云服务器,docker compose文件部署多个jar,docker部署多模块boot项目

前提条件 Linux服务器 服务器已经安装docker docker已经安装jdk镜像 docker已经安装mysql镜像 将要部署的项目的jar包打包好&#xff0c;项目是多模块springboot项目 部署过程 项目是3个模块的Spring boot项目&#xff0c;打出来3个jar&#xff0c;将这些jar包拷贝到…

小米手把手教你轻松搞定复杂需求!聊聊商家与店铺的关系优化方案

大家好&#xff0c;我是小米&#xff01;今天要和大家分享一次与产品大佬张小姐的有趣对话和我所面对的一项“小需求”。废话不多说&#xff0c;让我们一起来看看如何应对这个需求挑战吧&#xff01; 系统现状 在开始之前&#xff0c;先让我们简单回顾一下目前系统的现有功能…

echarts实现渐变折线图并添加点击事件

折线图点击事件代码: let myChart = this.$echarts.init(document.getElementById(trendBoxECharts))myChart.getZr().on(click, params => {console.log(params)let pointInPixel = [params.offsetX, params.offsetY]if (myChart.containPixel(grid, pointInPixel)) {//点…

云迁移第二波热潮来袭,你准备好了吗?

最近&#xff0c;云迁移再次被频繁提及&#xff0c;企业对云迁移的需求量有回升趋势&#xff0c;究其根本&#xff0c;主要有以下原因&#xff1a; 企业数字化进程加速&#xff0c;本地上云需求强劲 根据《2021中国企业上云指数洞察报告》&#xff0c;我国实体经济上云渗透率…

vue 当新增样式无法生效的情况下如何处理

使用scoped属性时&#xff0c;会遇到样式问题。需要使用样式穿透解决 <style lang"scss" scoped> </style> 可以使用以下方法 &#xff1a;deep css 使用 >>> less 使用 /deep/ scss 使用 ::v-deep 代码写法如下: .a :deep(.b) { } .…

Word文档突然无法打开?如何修复损坏文档?

在工作学习中&#xff0c;通常会遇到这种情况&#xff0c;我们正在编辑Word文件&#xff0c;电脑忽然断电关机&#xff0c;或者死机需要重启。当电脑重启以后&#xff0c;辛辛苦苦编辑很久的Word文件却忽然打不开了&#xff01;一直提示文件错误&#xff0c;如何解决Word无法打…

第五章运输层

1.运输层概述 之前课程所介绍的计算机网络体系结构中的物理层、数据链路层以及网络层它们共同解决了将主机通过异构网络互联起来所面临的问题&#xff0c;实现了主机到主机的通信。 但实际上在计算机网络中进行通信的真正实体是位于通信两端主机中的进程。 如何为运行在不同主…

CS 144 Lab Two -- TCPReceiver

CS 144 Lab Two -- TCPReceiver TCPReceiver 简述索引转换TCPReceiver 实现 测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Two 对应的PDF: Lab Checkpoint 2: the TCP receiver TCPReceiver 简述 在 Lab2&#xff0c;我们将实现一个 TCPReceiver&#xff0c;用…

AI读心术:情感分析和数据标注的奥秘

情感分析也被称为情感分类&#xff0c;意图挖掘&#xff1b;是让机器去辨别和理解人类的情感语言文本的技术。互联网技术发展至今&#xff0c;人人都和手机形影不离&#xff0c;任何消费行为、生活休闲、美食评论、旅行决策都可以通过网络的连接让信息共享和公开。商家也利用这…

C++第四讲

思维导图 仿照string类&#xff0c;实现myString类 /* ---------------------------------author&#xff1a;YoungZorncreated on 2023/7/19 19:20.--------------------------------- */ #include<iostream> #include<cstring>using namespace std;class myStri…

每天一点Python——day58

#第五十八天 集合间的关系&#xff1a; 类似于数学中学到的集合一样&#xff0c;关系差不多&#xff0c;譬如相等&#xff0c;子集&#xff0c;交集 如图所示&#xff1a;#①两个集合是否相等&#xff1a;运用运算符【等号】或者运算符&#xff01;【不等号】进行判断 #例&…

如何生成一个漂亮的allure测试报告

前言 今天给大伙展示一下如何生成一个漂亮的allure测试报告&#xff0c;同时呢希望能帮助到大家。 定制化后的allure测试报告效果展示 如何定制化输出锦上添花的allure测试报告 使用前&#xff0c;先导入allure模块。 import allure 使用前&#xff0c;先熟悉运行测试用例…

【C++】STL---vector基本用法介绍

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…

异步任务——CompletabelFuture

本专栏学习内容又是来自尚硅谷周阳老师的视频 有兴趣的小伙伴可以点击视频地址观看 在学习CompletableFuture之前&#xff0c;必须要先了解一下Future Future 概念 Future接口&#xff08;FutureTask实现类&#xff09;定义了操作异步任务执行的一些方法&#xff0c;如获取异…

编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等&#xff0c;并不能覆盖所有的需求&#xff0c;我们之前讲过很少用到的因果图法&#xff0c;下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口&#xff0c;每个…

Mysql下载详细步骤

一、下载mysql 打开地址&#xff1a;MySQL :: Download MySQL Community Server 这里我下载的是红框标注的。 直接点击No thanks,just start my download.解压后文件看自己需求放置。 红框圈住的文件都是后面自己添加的。 my文件中需要添加的文本内容。 [mysqld] #设置3306端口…

【conan】本地编译三方库,上传conan服务器

1.6 conan 远程已经编译好的库 conan中文博客&#xff1a; 三方库资源&#xff1a; github conan-io 本地查询 conan search Existing package recipes:b2/4.9.6 boost/1.71.0nolovr/stable bzip2/1.0.8 ceres-solver/2.0.0nolovr/stable eigen/3.3.7nolovr/stable eigen_c…

pdf转换成word怎么转换?简单快捷方法分享

pdf转换成word怎么转换&#xff1f;需要将PDF文档转换为Word文档&#xff0c;以便更好地编辑和修改文本内容。比如&#xff0c;当你需要对一份PDF文档中的内容进行修改、编辑或者格式化时&#xff0c;你可以先将其转换为Word文档&#xff0c;再进行修改。这样可以更快速、更便捷…

【数据结构与算法】哈夫曼编码(最优二叉树实现

哈夫曼编码 等长编码&#xff1a;占的位置一样 变长编码&#xff08;不等长编码&#xff09;&#xff1a;经常使用的编码比较短&#xff0c;不常用的比较短 最优&#xff1a;总长度最短 最优的要求&#xff1a;占用空间尽可能短&#xff0c;不占用多余空间&#xff0c;且不…