当前位置: 首页 > news >正文

Sentinel流量防卫兵

1、分布式服务遇到的问题

服务可用性问题
在这里插入图片描述
服务可用性场景
在这里插入图片描述
服务雪崩效应
因服务提供者的不可用导致服务调用者的不可用,并将不可用逐渐放大的过程,就叫服务雪崩效应导致服务不可用的原因:
在这里插入图片描述
在服务提供者不可用的时候,会出现大量重试的情况:用户重试、代码逻辑重试,这些重试最终导致:进一步加大请求流量。所以归根结底导致雪崩效应的最根本原因是:大量请求线程同步等待造成的资源耗尽。当服务调用者使用同步调用时, 会产生大量的等待线程占用系统资源。一旦线程资源被耗尽,服务调用者提供的服务也将处于不可用状态, 于是服务雪崩效应产生了。
解决方案
常见的容错机制

  • 超时机制
    在不做任何处理的情况下,服务提供者不可用会导致消费者请求线程强制等待,而造成系统资源耗尽。加入超时机制,一旦超时,就释放资源。由于释放资源速度较快,一定程度上可以抑制资源耗尽的问题。
  • 服务限流
    设置阈值,操作临界值不再进行向后端请求.
  • 隔离
    每当向服务发起一个请求时,就是会发起一个http请求,每一个http请求就要开启一个线程,然后等待服务返回信息,这容易导致线程的堆积,所以就可以用http的URI作为一个标识,然后相同的URI可以开启一个线程池,然后线程池中限定线程数,这样就可以设置拒绝策略,当线程池满了,就可以快速的抛出异常或者拒绝请求,用线程池做到线程隔离来达到限流。
  • 服务熔断
    熔断就是有一个阈值,向服务发起请求后,如果不成功,就会记录次数,然后当连续失败次数达到阈值时,下次请求的时候就会直接把这个服务停止。请求有三种状态,可以请求(开),不可请求(关),还有一个中间状态,相当于半开状态,半开状态是什么意思呢,就是可以尝试着去请求,就可以在关闭状态后一段时间,发一个请求尝试一下是否可以请求成功,如果不成功,继续保持关闭状态,如果请求成功,则变成开放状态。
  • 服务降级(兜底)
    降级其实就相当于,当我们向一个服务发起请求,当请求超时了,就会把这次请求记录到服务中,然后就会尝试向其他服务发请求,如果还没成功,就对这次请求进行处理(怎么处理取决于业务需求如)就相当于try catch一样的逻辑,当然Sentinel底层使用aop来实现的。

2、Sentinel: 分布式系统的流量防卫兵

https://sentinelguard.io/zh-cn/

2.1 Sentinel 介绍

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
在这里插入图片描述
Sentinel具有以下特征:

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

2.2Sentinel和Hystrix对比

https://github.com/alibaba/Sentinel/wiki/Sentinel-%E4%B8%8E-Hystrix-%E7%9A%84%E5%AF%B9%E6%AF%94
在这里插入图片描述

http://www.lryc.cn/news/341805.html

相关文章:

  • 微信小程序:14.什么是wxs,wxs的使用
  • Django运行不提示网址问题
  • web安全---xss漏洞/beef-xss基本使用
  • 第一天学习(GPT)
  • 【C++之AVL树旋转操作的详细图解】
  • 制作Android分区镜像
  • 如何代码激活service——packageKit 系统更新番外
  • 音视频常用工具
  • 周刊是聪明人筛选优质知识的聪明手段!
  • 设计模式Java实现-建造者模式
  • 微博视频怎么下载无水印
  • 为什么要梯度累积
  • 知识图谱在提升大语言模型性能中的应用:减少幻觉与增强推理的综述
  • P8800 [蓝桥杯 2022 国 B] 卡牌
  • MySQL商城数据表(80-84)
  • 使用Gitbook生成电子书
  • 设计模式之传输对象模式
  • Re69:读论文 LaMDA: Language Models for Dialog Applications
  • 算法学习:二分查找
  • github提交代码失败解决方案
  • 连锁收银系统总仓到门店库存调拨操作教程
  • 公网tcp转流
  • 【Linux 基础 IO】文件系统
  • Chrome浏览器安装React工具
  • React常用组件分享
  • JSON原生AJAX
  • Go图片列表
  • 1.4 初探JdbcTemplate操作
  • React 第二十一章 Portals
  • ADS基础教程9-理想模型和厂商模型实现及对比