Sentinel服务器容错简介

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.hqwc.cn/news/19848.html

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

相关文章

深入理解Linux内核 PHY 驱动框架

目录 一、背景 二、硬件拓扑 三、概述 四、PHY控制器驱动 五、PHY驱动解析 1、相关结构体 2、网口和mdio总线设备树配置 3、MAC驱动和mdio控制器注册 4、PHY设备驱动 5、PHY 设备驱动注册和加载 6、以太网卡 PHY 和 MAC 的协作 7、网络操作命令解析 8、设备驱动与…

postman测试接口出现404

postman测试接口出现404 1.用postman调试接口的过程中,出现404的情况,但是接口明明已调到了,而且数据也已经存入数据库了,这让我感到很疑惑。看网上的解决办法检查了我的路径,提交方式、参数类型等都是正确的&#xf…

【实战】 六、用户体验优化 - 加载中和错误状态处理(下) —— React17+React Hook+TS4 最佳实践,仿 Jira 企业级项目(十)

文章目录 一、项目起航:项目初始化与配置二、React 与 Hook 应用:实现项目列表三、TS 应用:JS神助攻 - 强类型四、JWT、用户认证与异步请求五、CSS 其实很简单 - 用 CSS-in-JS 添加样式六、用户体验优化 - 加载中和错误状态处理1~234.用useAs…

加密劫持者攻击教育机构

我们的专家分析了2023年第一季度的当前网络威胁。研究表明,独特事件的数量增加,勒索软件活动激增,特别是针对学术和教育机构。我们记录了大量与就业有关的网络钓鱼邮件,出现了QR网络钓鱼和恶意广告的增加。 我们的研究表明&#…

计算机组成原理课程论文: Intel 80386/80486 的体系架构调研

摘要 本文以Intel 80386/80486体系架构为研究对象,详细介绍了该体系架构的基本概念、特点和优势,分析了其在不同领域的应用情况,并对其未来的发展做出一定的展望和评价。 首先,我们介绍了研究背景和目的,阐述了Intel 8…

windows安装docker

目录 安装docekr Desktop下载安装 解决WSL 问题启用适用于 Linux 的 Windows 子系统检查运行 WSL 2 的要求启用虚拟机功能下载 Linux 内核更新包将 WSL 2 设置为默认版本 运行-可视化界面 安装docekr Desktop 下载 下载地址 Install Docker Desktop on Windows | Docker Docum…

攻防世界-web-ics-05

题目描述: 其他破坏者会利用工控云管理系统设备维护中心的后门入侵系统 题目链接点进去如下: 可以看到界面上有一个设备维护中心,点击设备维护中心,跳转到如下界面 再次点击,发现变成这样了 1. 思路分析 从已知信息来看&#xf…

算法与数据结构(一)--算法复杂性

一.算法复杂性的概念 算法的复杂性是指运行算法所需要的计算机资源的量。需要的时间资源的量称为时间复杂性,需要的空间资源的量称为空间复杂性。 这个量应该集中反映算法的效率,而从运行该算法的实际计算机中抽象出来。换句话说,这个量应该…

【算法集训之线性表篇】Day 08

文章目录 题目基本设计思想思路一思路二 代码实现效果 题目 已知一个整数数列A{a0,a1,a2,…,an-1}&#xff0c;其中0<ai<n(0<i<n)。若存在ap1ap2ap3…apmx且m>n/2(0<pk<n,1<k<m)&#xff0c;则成x为A的主元素。例如A{0,5,5,3,5,7,5,5}&#xff0c;…

【后端面经-架构】RabbitMQ简介

【后端面经-架构】RabbitMQ简介 1. MQ介绍2. RabbitMQ2.1 简介2.2 架构&#xff1a;组件解释2.3 特点2.4 优缺点 面试模拟参考资料 1. MQ介绍 MQ&#xff08;Message Queue&#xff09;用于在应用程序之间相互通信&#xff0c;在消息中发送数据进行通信&#xff0c;而不需要特…

【视觉SLAM入门】3. 相机模型,内外参,畸变推导

"瑾瑜匿瑕" 1. 相机模型和内参1.1 内参推导1.2 外参推导 2. 畸变2.1 径向畸变2.2 切向畸变 3. 深度信息3.1 算法测距3.2 物理测距 本节讨论围绕这个问题展开 机器人如何观测外部世界&#xff1f; \quad\large\textcolor{red}{机器人如何观测外部世界&#xff1f;} 机…

C++结合EasyX写扫雷(new)

【游戏】C结合EasyX写扫雷&#xff08;时隔半年后重写&#xff09; 上一次写扫雷这一次实现思路设置全局变量Grid类Grid类的成员函数启动画面死循环监听鼠标事件 全部代码其他 上一次写扫雷 大约半年之前的寒假期间&#xff0c;我接触了EasyX这个图形库&#xff0c;于是试着写…