Sentinel服务器容错简介

news2024/11/25 4:27:25

spring gateway 详解

  • 服务容错
    • 高并发带来的问题
      • 服务雪崩效应
      • 常见容错方案
      • 常见的容错思路
        • 1、隔离
        • 2、超时
        • 3、限流
        • 4、熔断
        • 5、降级
      • 常见的容错组件
  • Sentinel
    • Sentinel 具有以下特征:
    • Sentinel概念和功能
      • 相关概念
        • 1、资源
        • 2、规则
      • 重要功能

服务容错

高并发带来的问题

  • 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络原因或者自身
    的原因,服务并不能保证服务的 100% 可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时若有大量的网络涌入,会形成任务堆积,最终导致服务瘫痪。

服务雪崩效应

  • 在分布式系统中,由于网络原因或自身的原因服务一般无法保证 100% 可用。如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况,此时若有大量的请求涌入,就会出现多条线程阻塞等待,进而导致服务瘫痪。

  • 由于服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的 “雪崩效应” 。
    在这里插入图片描述

  • 雪崩发生的原因多种多样:有不合理的容量设计,或者是高并发下某一个方法响应变慢,亦或是某台机器的资源耗尽。

  • 我们无法完全杜绝雪崩源头的发生,只有做好足够的容错,保证在一个服务发生问题,不会影响到其它服务的正常运行,也就是 “雪落而不雪崩”。

常见容错方案

  • 要防止雪崩的扩散,需要做好服务的容错,容错说白了就是保护自己不被对方(提供方)拖垮的一些措施, 下面介绍常见的容错思路和组件。

常见的容错思路

常见的容错思路有 隔离、超时、限流、熔断、降级 这几种。

1、隔离

  • 它是指将系统按照一定的原则划分为若干个服务模块,各个模块之间相对独立,无强依赖。当有故障发生时,能将问题和影响隔离在某个模块内部,而不扩散风险,不波及其它模块,不影响整体的系统服务。
  • 常见的隔离方式有:线程池隔离 和 信号量隔离(QPS)。
    在这里插入图片描述

2、超时

  • 在不做任何处理的情况下,服务提供者不可用会导致请求线程强制等待,而造成系统资源耗尽。加入超时机制后,一旦发生超时,就会释放资源。
  • 由于释放资源速度较快,一定程序上可以抑制资源耗尽的问题。
    在这里插入图片描述

3、限流

  • 限流就是限制业务访问的QPS(每秒请求次数)避免服务因流量的激增而发生故障,从而达到保护系统的目的。
    在这里插入图片描述

4、熔断

  • 远程服务不稳定 或 网络抖动 时暂时关闭就叫做熔断。

  • 断路器会实时监测应用,如果发现在一定时间内失败次数或失败率达到一定的阈值就会熔断,此时访问业务的一切请求都会被拦截下来。熔断一定时间(如10秒)后,断路器会进入 半开状态:

    • 此时允许一次访问业务的请求,如果成功则断路器关闭,应用正常调用;
    • 如果请求依然不成功,断路器继续回到熔断开启状态,过段时间再进入半熔断状态。
      在这里插入图片描述
  • 服务熔断一般有三种状态:

    • 熔断关闭状态(Closed):服务没有故障时,熔断器所处的状态,对调用方的调用不做任何限制。
    • 熔断开启状态(Open):后续对该服务接口的调用不再经过网络,直接执行本地的 fallback 方法。
    • 半熔断状态(Half-Open):尝试恢复服务调用,允许有限的流量调用该服务,并监控调用成功率。
      • 如果成功率达到预期,则说明服务已恢复,进入熔断关闭状态;
      • 如果成功率仍旧很低,则重新进入熔断关闭状态。

5、降级

  • 降级就是当某个发生服务熔断后,服务将不再被调用,此时客户端可以自己准备一个本地的 fallback 回调来返
    回一个缺省值,它其实就是为服务提供一个兜底方案。

常见的容错组件

  • Hystrix :由 Netflix 开源的一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,从而提升系统的可用性与容错性。已经停止更新。
  • Resilience4J :是一款非常轻量、简单,并且文档非常清晰、丰富的熔断工具,这也是Hystrix官方推荐的替代产品。不仅如此,Resilicence4j还原生支持Spring Boot 1.x/2.x,而且监控也支持和prometheus等多款主流产品进行整合。
  • Sentinel :是阿里巴巴开源的一款断路器实现,本身在阿里内部已经被大规模采用,非常稳定。
  • 下面是三个组件在各方面的对比:
`SentinelHystrixResilience4j
隔离策略信号量隔离(并发线程数限流)线程池隔离/信号量隔离信号量隔离
熔断降级策略基于响应时间、异常比率、异常数基于异常比率基于异常比率、响应时间
实时统计实现 滑动窗口(LeapArray)滑动窗口(基于RxJava)Ring Bit Buffer
动态规则配置支持多种数据源支持多种数据源有限支持
扩展性多个扩展点插件的形式接口的形式
基于注解的支持支持支持支持
限流基于 QPS,支持基于调用关系的限流有限的支持Rate Limiter
流量整形支持预热模式、匀速器模式、预热排队模式不支持简单的 Rate Limiter
模式系统自适应保护支持不支持不支持
控制台提供开箱即用的控制台,可配置规则、查看秒级监控、机器发现等简单的监控查看不提供控制台,可对接其它监控系统

Sentinel

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

Sentinel 具有以下特征:

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

Sentinel概念和功能

相关概念

1、资源

  • 资源是 Sentinel 的关键概念。它可以是 Java 应用程序中的任何内容:可以是一个服务,也可以是一个方
    法,甚至可以是一段代码。本质就是 Sentinal 要保护的内容。

2、规则

  • 作用在资源之上,定义以什么样的方式保护资源,主要包括流量控制规则、熔断降级规则、热点规则以及系统保
    护规则。本质就是用来定义如何进行保护资源。

重要功能

Sentinel 的主要功能就是容错,主要体现为下面这三个:

  • 流量控制

    • 流量控制(flow control),其原理是监控应用流量的 QPS 或 并发线程数 等指标,当达到指定的阈值时对流量进行控制,以避免被瞬时的流量高峰冲垮,从而保障应用的高可用性。
  • 熔断降级

    • 熔断降级是解决雪崩问题的重要手段。其思路是由 断路器 统计服务调用的异常比例、慢请求比例,如果超出阈值则会 熔断 该服务。即拦截访问该服务的一切请求;而当服务恢复时,断路器会放行访问该服务的请求。

    • 断路器控制熔断和放行是通过状态机来完成的。
      在这里插入图片描述

  • 系统负载保护

    • Sentinel 系统自适应过载保护从整体维度对应用入口流量进行控制,结合应用的 Load、CPU 使用率、总体平均 RT、入口 QPS 和 并发线程数 等几个维度的监控指标,通过自适应的流控策略,让系统的入口流量和系统的负载达到一个平衡,让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。

后续:
Spring cloud alibaba 整合 Sentinel
Sentinel规则详解

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

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

相关文章

Vivado使用误区与进阶系列(七)用Tcl定制Vivado设计实现流程

01 基本的FPGA设计实现流程 FPGA 的设计流程简单来讲,就是从源代码到比特流文件的实现过程。大体上跟 IC 设计流程类似,可以分为前端设计和后端设计。其中前端设计是把源代码综合为对应的门级网表的过程,而后端设计则是把门级网表布局布线到…

orcle报错:TNS 监听程序无法为请求的服务器类型找到可用的处理程序

orcle报错:TNS 监听程序无法为请求的服务器类型找到可用的处理程序 方法一:配置文件修改 服务端的数据库是专用服务器,但是在客户端的tnsname.ora里配置中设置了连接方式为shared,这种情况下打开tnsnames.ora, 找到安装orcle的安装目录,点…

MSP430F5529,超声波,距离检测报警,倒车雷达,SR-04模块

文章目录 硬件连接功能实物效果代码 硬件连接 /* OLED----MSP430VCC-----3.3VGND-----GNDSCL------P3.1SDA------P3.0 */ /* 蜂鸣器----MSP430VCC-----3.3VGND-----GNDDAT------P2.4 */ /* 超声波----MSP430VCC-----3.3VGND-----GNDTRIG------P1.3ECHO------P1.2 */ /* …

模板学堂|数据关系和AntV、ECharts图表解析

DataEase开源数据可视化分析平台于2022年6月正式发布模板市场(https://dataease.io/templates/)。模板市场旨在为DataEase用户提供专业、美观、拿来即用的仪表板模板,方便用户根据自身的业务需求和使用场景选择对应的仪表板模板,并…

PHP 音乐欣赏网站mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP音乐欣赏网站 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 代码下载 https://download.csdn.net/download/qq_41221322/88041034https://download.…

Sentry 监控 Docker 方式部署

一、简介 根据主篇 Sentry 监控部署与使用 流程,使用 Docker 方式 方式进行部署。 docker 方式 部署操作比较简单,也是 Sentry 官方 比较推崇的方式,直接按 Sentry On-Premise 提供的方式按部就班部署就好了。或者可直接参考 Docker 部署 Se…

关于根据文件名以及内容查找文件存放路径

1 根据文件名字查找文件存放路径 1.1 命令如下(先切换到存放该文件的顶级父目录下): find /path/to/search -name "filename"​​ 1.2 案例如下 2 根据内容查找包含该内容的文件存放路径 2.1 命令如下(先切换到存放该文…

《大大简化每次运行bochs的命令行》ubuntu里安装vscode + makefile文件基本编写 + shell命令

📍安装vscode 启动vscode 如图打开商店,在搜索栏里输入visual studio code,安装即可 在随便一个命令行里输入code即可打开vscode 📍makefile文件基本编写 在实验项目文件夹里创建makefile文件(vscode直接能快捷创…

禁止22H2版windows10出现windows11的跨版本升级提示

近期微软为了强推windows11,笔者所用的笔记本又出现了升级windows11的提示,烦人不说,还担心一不小心点错了,系统就给升了,赶紧禁止了跨版本升级,相关设置记录如下: 一、问题情况 系统出现了升…

[C++] C++特殊类设计 以及 单例模式:设计无法拷贝、只能在堆上创建、只能在栈上创建、不能继承的类, 单例模式以及饿汉与懒汉的场景...

特殊类 1. 不能被拷贝的类 注意, 是不能被拷贝的类, 不是不能拷贝构造的类. 思路就是 了解什么时候 会以什么途径 发生拷贝, 然后将路堵死. 拷贝发生一般发生在 拷贝构造 和 赋值重载 所以, 只要把类的这两个成员函数堵死, 此类就不能拷贝了 C98 在C11之前, 可以通过这种方…

基于Javaweb实现ATM机系统开发实战(六)开卡用户登录及其功能实现

首先输入用户名密码,测试一下用户登录功能,跳转到了UserLogin页面,发现404,是因为我们的servlet还没有编写,页面无法进行跳转。 还是老规矩,先写servlet: package com.atm.servlet;import com…

计算机网络实验(4)--配置网络路由

📍实验目的 了解路由器的特点、基本功能及配置方法;使用模拟软件Packet Tracer 5.3熟悉Cisco路由器的操作;配置静态路由和距离矢量路由协议RIP,实现给定网络的连通;从而加深对IP编址、路由转发机制、路由协议、路由表…

作为一个程序员一定要掌握的算法之遗传算法

目录 一、引言 1.1 目的 1.2 意义 二、遗传算法介绍 2.1 遗传算法的基本思想 2.2 遗传算法与其他算法的主要区别 2.3 基于Java的遗传算法设计思想 三、遗传算法的具体实现 3.1 系统功能模块图和说明 3.2 代码和说明 3.2.1 初始化 3.2.2 选择运算 3.2.3 交叉运算 3…

go语言 Sort包

Sort包 1.常见的类型进行排序 类型功能sort.Float64s([]float64)对float64切片进行升序排序sort.Float64sAreSorted([]float64)bool判断float64切片是否为升序sort.SearchFloat64s([]float64,float64)int在升序切片中查找给定值,找到则返回下标,找不到则返回适合插入值的下标 …

selenium+python做web端自动化测试框架实战

最近受到万点暴击,由于公司业务出现问题,工作任务没那么繁重,有时间摸索seleniumpython自动化测试,结合网上查到的资料自己编写出适合web自动化测试的框架,由于本人也是刚刚开始学习python,这套自动化框架目…

基于 FPGA 的 HDMI/DVI 显示

文章目录 前言一、HDMI 与 DVI 的区别与联系1.1 DVI 接口含义1.2 HDMI 接口含义1.3 HDMI 与 DVI 的区别1.4 HDMI 与 DVI 的兼容性1.5 HDMI 与 DVI 接口对比 二、DVI 数据链路介绍2.1 输入接口层2.2 TMDS 发送器2.3 TMDS 接收器2.4 输出接口层 三、传输原理与实现3.1 TMDS原理3.…

jvm调优工具详解

一、调优工具 先通过jps命令显示Java应用程序的进程id 1、jmap 查看堆实例个数及占用内存大小,把这些信息生成到当前目录下的log.txt文件 jmap -histo 21932 > ./log.txt #查看历史生成的实例 jmap -histo:live 14660 #查看当前存活的实例,执行…

跨浏览器测试的重要性及需要注意的问题

随着互联网的快速发展,人们使用各种不同的浏览器来访问网站。因此,跨浏览器测试变得尤为重要,以确保网站在各种浏览器上都能正常运行和显示。本文将探讨跨浏览器测试的重要性以及需要注意的问题。 一、跨浏览器测试的重要性 随着浏览器的多…

【JAVA】仿顺丰淘宝智能识别信息模块——DidYourTypeItCorrectly

文章目录 题目项目层级结构解答已完成的部分简介未完成的部分概述代码部分DidYourTypeCorrectly.javaFormModel.javaIntelligentRecognition.javaMVCWindow.javaPlaint.java 运行结果截图结语 题目 模拟顺风地址智能识别,对用户输入的信息,包括&#xf…

iOS五大内存分区

我们知道任何一个程序在运行的时候实际是运行在内存中的,这个内存也就是我们通常所说的主存,也叫运行内存,也叫RAM(Random Access Memory),是可以直接与CPU进行交换数据的内部存储器。内存读取速度很快&…