微服务之流控、容错组件sentinel

背景

2012年阿里巴巴研发的流量治理组件,核心功能流控、容错

有什么功能

流量控制

流量控制
网关控制
黑白名单

熔断降级

熔断

保护分布式系统防止因为调用下有服务时产生故障或者请求超时等异常影响上游服务,使用熔断方案,类似断路器,一旦达到异常或超时规则阈值,则会断开链接,一定时间后重新连接

降级

分布式服务中,当负载过多或者资源不足时,防止大量请求累积消耗资源,拖垮核心服务,当触发降级规则(一般是超过设置的资源负载),则会抛弃边缘服务的调用,节省资源。

实现原理—职责链模式(做什么)

职责链模式简介

请求沿着处理者链进行发送,每个处理者都可以对请求进行处理,或者将台传递给恋上的下一个 处理者

在这里插入图片描述

特点

每个处理者都可以处理请求
每个处理者都必须有下一个处理者的引用

优点

  • 解耦:请求的发送者和处理者解耦
  • 简化:简化对象,对象可以不知道链的结构
  • 灵活:增加给对象指派指责的灵活性,可改变链的顺序,动态新增或删除

缺点

可能循环调用
可能链路太长,影响排错

场景

  • 有多个对象可以处理同一个请求,运行时刻决定那个对象处理请求。
  • 可动态指定一组对象处理请求。

sentinel框架

在这里插入图片描述

核心原理

Sentinel 中最核心的功能都是通过一套处理链(责任链)来实现,处理链中的每一个处理单元被称为一个 Slot。每个 Slot 执行完业务逻辑处理后,都会触发下一个节点的处理方法,如此往复直到最后一个Slot,由此就形成了sentinel的责任链。这里我们先简单地回顾一下各个 Slot 的职责:

  • NodeSelectorSlot 负责收集资源的路径,并将这些资源的调用路径,以树状结构存储起来,用于根据调用路径来限流降级;
  • ClusterBuilderSlot 则用于存储资源的统计信息以及调用者信息,例如该资源的 RT, QPS, thread count 等等,这些信息将用作为多维度限流,降级的依据;
  • StatisticSlot 则用于记录、统计不同纬度的 runtime 指标监控信息;
  • FlowSlot 则用于根据预设的限流规则以及前面 slot 统计的状态,来进行流量控制;
  • AuthoritySlot 则根据配置的黑白名单和调用来源信息,来做黑白名单控制;
  • DegradeSlot 则通过统计信息以及预设的规则,来做熔断降级;
  • SystemSlot 则通过系统的状态,例如 load1 等,来控制总的入口流量;

特点

应用场景丰富

经历阿里巴巴十年双十一场景考验

丰富的开源生态

在这里插入图片描述

实时监控

类似组件

  • Hystrix(Netflix Hystrix): Hystrix是Netflix开源的一种用于容错和故障处理的库。它提供了类似的功能,包括熔断、限流、降级和故障处理。Hystrix已经停止维护,但仍然广泛使用。
  • Resilience4j: Resilience4j是一种用于容错和故障处理的Java库,具有类似于Hystrix的功能,但更加轻量级和模块化。它支持熔断、限流、重试等功能。
  • Circuit: Circuit是Go语言中的一个库,用于实现断路器模式。它提供了熔断、限流和故障处理功能,适用于构建可靠的分布式系统。
  • Prometheus: Prometheus是一种开源的监控和警报工具,用于监视应用程序的性能和状态。它可以帮助您收集和分析指标,并设置警报规则以便在问题发生时采取行动。
  • Istio: Istio是一个用于微服务的服务网格平台,它提供了流量控制、故障注入、监控和安全性等功能。Istio的Envoy代理可以用于流量控制和故障处理。
  • Zuul(Netflix Zuul): Zuul是Netflix开源的API网关,它可以用于路由、流量控制和故障处理。虽然主要用于API网关,但也可以用于一些类似的用例。

总结

sentinel 是流量整形,提升服务容错能力的组件

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

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

相关文章

T2I-Adapter:增强文本到图像生成的控制能力

链接:GitHub - TencentARC/T2I-Adapter: T2I-Adapter 文本到图像生成 (T2I) 是人工智能领域的一个重要研究方向。近年来,随着深度学习技术的发展,T2I 技术取得了显著进展,生成的图像在视觉效果上已经与真实图像难以区分。 然而&…

ILS解析漏洞复现

搭建好ILS后,访问127.0.0.1:8000 写一个phpinfo的脚本 可以看到。现在是不能访问的 赋予 IIS 解析 phpinfo 能力 打开服务器管理器,打开 IIS 管理器 点击处理程序映射 再次访问,发现程序可以访问 将index.php改为index.png 此时php脚本自然是…

【pdf密码】如何限制他人对PDF文件编辑?

制作好的PDF文件,先要设置一个密码防止他人对文件进行编辑,那么我们可以对PDF文件设置限制编辑,设置方法很简单,我们在PDF编辑器中点击文件 – 属性 – 安全,在权限下拉框中选中【密码保护】 然后在密码保护界面中&…

查看创建好的数据库

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: show create database 数据库名称; 案列:查看testing数据库信息 mysql> show create database testing; ------------------------…

SpringMVC相关知识点

1.Spring MVC的理解? 首先,MVC模型是模型,视图,控制器的简写,其思想核心是通过将请求处理控制,业务逻辑,数据封装,数据显示等流程节点分离的思想来组织代码。 所以,MVC是…

华为星闪联盟:引领无线通信技术创新的先锋

星闪(NearLink),是由华为倡导并发起的新一代无线短距通信技术,它从零到一全新设计,是为了满足万物互联时代个性化、多样化的极致、创新体验需求而诞生的。这项技术汇聚了中国300多家头部企业和机构的集体智慧&#xff…

【STM32】FSMC—扩展外部 SRAM 初步使用 1

基于野火指南者《零死角玩转 STM32F103—指南者》的学习 STM32F103系列 FSMC Flexible Static Memory Controller简介 1.详细功能参看《STM32F10x参考手册》,这边是概述 是一个外设,挂载在AHB总线下。 可以用于驱动包括 SRAM、NOR FLASH 以及 NAND FL…

C#自定义控件组件实现Chart图表(多Y轴,选择图例加粗,选择放大,缩放,点击查看信息等功能)

先看看ECharts的效果 C# 工具箱里的Chart控件就不演示了,很多效果没办法做出来,做出来效果也很不理想。所以,需要自己去手动实现工具箱里的Chart没办法实现的效果; 先看看实现后的效果 绑定数据 点击图表 点击右侧图例加粗 选择放大 右键 点击缩小,恢复

RJ45水晶头网线顺序出错排查

线序 网线水晶头RJ45常用的线序标准ANSI / TIA-568定义了T568A与T568B两种线序,一般使用T568B,水晶头8个孔对应的8条线颜色如下图: 那1至8的编号,是从水晶头哪一面为参考呢,如下图,是水晶头金手指一面&am…

华为云云耀云服务器L实例评测 | 由于自己原因导致MySQL数据库被攻击 【更新中。。。】

目录 引出起因(si因)解决报错诶嘿,连上了 不出意外,就出意外了打开数据库what??? 找华为云求助教训:备份教训:密码 解决1.改密码2.新建一个MySQL,密码设置复杂…

node.js下载安装环境配置以及快速使用

目录 一、下载 二、安装 三、测试安装是否成功 四、配置环境 五、测试配置环境是否成功 六、安装淘宝镜像 七、快速上手 1、建立一个自己的工作目录 2、下载工作代码 八、各种配置文件匹配问题入坑 九、总结 一、下载 Node.js 中文网 想选择其他版本或者其他系统使用…

Linux服务使用宝塔面板搭建网站,并发布公网访问 - 内网穿透

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板,它支持Linux/Windows系统,我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

地理地形sdk:Tatuk GIS Developer Kernel for .NET Crack

Tatuk GIS Developer Kernel for .NET 是一个变体,它是受控代码和 .NET GIS SDK,用于为用户 Windows 操作系统创建专业 GIS 软件的过程。它被认为是一个完全针对Win Forms 的.NET CIL,WPF 框架是针对C# 以及VB.NET、VC、Oxy 以及最终与.NET 的…

数据接口工程对接BI可视化大屏(六)接收前台数据

文章目录 第6章 接收前台数据6.1 模拟数据6.2 接收数据6.2.1 编写Dao6.2.2 编写ServiceImpl6.2.3 编写Controller6.2.4 验证 后记 第6章 接收前台数据 在工作中也会遇到需要接收前台发送数据,进行存储的情况。这里以接收日志服务器的日志数据保存到kafka为例。 6.…

循环购模式:美业的新机遇和新挑战

美业是一个高频消费的行业,每个人都想要拥有美丽的容颜和健康的身体。但是,美业的消费门槛往往较高,很多人会觉得美容美发等服务太贵,不敢轻易尝试。如果有一种模式,能够让消费者在享受美业服务的同时,还能…

Kubernetes 部署发布镜像(cubefile:0.4.0)

目录 实验:部署发布镜像(cubefile:0.4.0) 需求分析: 1、部署Kubenetes环境: 2、撰写 cubefile-deployment.yaml 文件 代码解释: 遇到的问题: 问题解决 : 3、撰写 cubefile-se…

Date日期工具类(数据库日期区间问题)

文章目录 前言DateUtils日期工具类总结 前言 在我们日常开发过程中,当涉及到处理日期和时间的操作时,字符串与Date日期类往往要经过相互转换,且在SQL语句的动态查询中,往往月份的格式不正确,SQL语句执行的效果是不同的…

mac 13.x 打开第三方应用,提示已损坏无法打开

前排提示,不一定有效 1、先在终端执行下面这个,因为要提权,输入自己的密码 sudo xattr -r -d com.apple.quarantine 具体应用 # 具体应用是一个路径,拖入 访达——应用程序——第三方应用 到终端就行 # sudo xattr -r -d com.app…

数据结构--二叉树-堆(1)

文章目录 树概念相关的基本概念树的表示 二叉树概念特殊二叉树性质 堆二叉树的顺序结构堆的概念 堆的实现初始化数组初始化为堆向上调整向下调整插入删除打印、摧毁、判空、获取堆顶数据验证 堆的应用堆排序TopK问题 树 概念 树是一种常见的非线性的数据结构,&…

ERROR 之 SpringMVC开发注解版之版本问题

如果你也和我一样,完全是按照狂神老师的代码来敲的,不用注解版的情况下是不会出错的,但是一用注解版,就出现了404,500的类型的错误。那我真诚的建议你换个jdk版本,再来试试。我试了3遍,事实证明用jdk1.8&am…