sentinel介绍

news2024/10/6 2:29:51

介绍

官网地址

Sentinel 和 Hystrix 的原则是一致的: 当调用链路中某个资源出现不稳定,例如,表现为 timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果。
在这里插入图片描述

Sentinel 和 Hystrix的对比

在这里插入图片描述

熔断降级设计理念

在限制的手段上,Sentinel 和 Hystrix 采取了完全不一样的方法。

Hystrix 通过线程池的方式,来对依赖(在我们的概念中对应资源)进行了隔离。这样做的好处是资源和资源之间做到了最彻底的隔离。缺点是除了增加了线程切换的成本,还需要预先给各个资源做线程池大小的分配。

Sentinel 对这个问题采取了两种手段:

  • 通过并发线程数进行限制
    和资源池隔离的方法不同,Sentinel 通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响。这样不但没有线程切换的损耗,也不需要您预先分配线程池的大小。当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数的逐步堆积。当线程数在特定资源上堆积到一定的数量之后,对该资源的新请求就会被拒绝。堆积的线程完成任务后才开始继续接收请求。

  • 通过响应时间对资源进行降级
    除了对并发线程数进行控制以外,Sentinel 还可以通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口之后才重新恢复。

系统负载保护

Sentinel 同时提供系统维度的自适应保护能力。防止雪崩,是系统防护中重要的一环。当系统负载较高的时候,如果还持续让请求进入,可能会导致系统崩溃,无法响应。在集群环境下,网络负载均衡会把本应这台机器承载的流量转发到其它的机器上去。如果这个时候其它的机器也处在一个边缘状态的时候,这个增加的流量就会导致这台机器也崩溃,最后导致整个集群不可用。

针对这个情况,Sentinel 提供了对应的保护机制,让系统的入口流量和系统的负载达到一个平衡,保证系统在能力范围之内处理最多的请求。

入门参考

Sentinel 的使用可以分为两个部分:

  • 核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持(见 主流框架适配)。
  • 控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。

在生产环境中使用 Sentinel

规则管理及推送

推送模式说明优点缺点
原始模式API 将规则推送至客户端并直接更新到内存中,扩展写数据源(WritableDataSource)简单,无任何依赖不保证一致性;规则保存在内存中,重启即消失。严重不建议用于生产环境
Pull 模式扩展写数据源(WritableDataSource), 客户端主动向某个规则管理中心定期轮询拉取规则,这个规则中心可以是 RDBMS、文件 等简单,无任何依赖;规则持久化不保证一致性;实时性不保证,拉取过于频繁也可能会有性能问题。
Push 模式扩展读数据源(ReadableDataSource),规则中心统一推送,客户端通过注册监听器的方式时刻监听变化,比如使用 Nacos、Zookeeper 等配置中心。这种方式有更好的实时性和一致性保证。生产环境下一般采用 push 模式的数据源。规则持久化;一致性;快速引入第三方依赖

由于生产环境中通常使用push模式,所以此文只介绍这一种

push模式

生产环境下一般更常用的是 push 模式的数据源。对于 push 模式的数据源,如远程配置中心(ZooKeeper, Nacos, Apollo等等),推送的操作不应由 Sentinel 客户端进行,而应该经控制台统一进行管理,直接进行推送,数据源仅负责获取配置中心推送的配置并更新到本地。因此推送规则正确做法应该是 配置中心控制台/Sentinel 控制台 → 配置中心 → Sentinel 数据源 → Sentinel,而不是经 Sentinel 数据源推送至配置中心。这样的流程就非常清晰了:
在这里插入图片描述

我们提供了 ZooKeeper, Apollo, Nacos 等的动态数据源实现。以 ZooKeeper 为例子,如果要使用第三方的配置中心作为配置管理,您需要做下面的几件事情:

  1. 实现一个公共的 ZooKeeper 客户端用于推送规则,在 Sentinel 控制台配置项中需要指定 ZooKeeper 的地址,启动时即创建 ZooKeeper Client。
  2. 我们需要针对每个应用(appName),每种规则设置不同的 path(可随时修改);或者约定大于配置(如 path 的模式统一为 /sentinel_rules/{appName}/{ruleType},e.g. sentinel_rules/appA/flowRule)。
  3. 规则配置页需要进行相应的改造,直接针对应用维度进行规则配置;修改同个应用多个资源的规则时可以批量进行推送,也可以分别推送。Sentinel 控制台将规则缓存在内存中(如 InMemFlowRuleStore),可以对其进行改造使其支持应用维度的规则缓存(key 为 appName),每次添加/修改/删除规则都先更新内存中的规则缓存,然后需要推送的时候从规则缓存中获取全量规则,然后通过上面实现的 Client 将规则推送到 ZooKeeper 即可。
  4. 应用客户端需要注册对应的读数据源以监听变更,可以参考相关文档。

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

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

相关文章

阿里云争食币圈

阿里云的触手正在向币圈延伸。几天前,阿里云与Avalanche区块链和MUA DAO联合推出Cloudverse,为想要在链上部署元宇宙的企业提供一站式解决方案。 Avalanche是典型的币圈项目,链上的一切价值流转都以加密货币结算。此次合作释放出阿里云在Web…

apt 与 dpkg 命令详解

一. apt & dpkg 异同点 1. apt 与 dpkg 均为 ubuntu 下面的包管理工具。 2. dpkg 仅用于安装本地的软件包&#xff0c;安装时不会安装依赖包&#xff0c;不解决依赖问题。 sudo dpkg -i <package_name>.deb 3. apt 默认会从远程仓库搜索包的名字&#xff0c;下载并安…

多元线性回归——自相关(二)

自相关问题 文章目录 自相关问题(R)[toc]1 什么是自相关2 自相关产生的原因3 自相关的后果4 自相关检验5 自相关补救6 R语言操作 1 什么是自相关 经典普通最小二乘法估计的假设之一是扰动项不存在自相关&#xff0c;即对于 ∀ i ≠ j \forall i\ne j ∀ij,都有 C o v ( μ …

Kali-linux测试网络范围

测试网络范围内的IP地址或域名也是渗透测试的一个重要部分。通过测试网络范围内的IP地址或域名&#xff0c;确定是否有人入侵自己的网络中并损害系统。不少单位选择仅对局部IP基础架构进行渗透测试&#xff0c;但从现在的安全形势来看&#xff0c;只有对整个IT基础架构进行测试…

5G+工业物联网——解密“智能矿山”背后的黑科技

当前&#xff0c;以5G为代表的新一代信息技术正在飞速发展并加快应用&#xff0c;以工业物联网为代表的新型基础设施建设则推动着传统制造业数字化转型发展。依托我国5G全球最大的规模网络以及国家出台的一系列政策&#xff0c;“5G工业物联网”变成应用创新最活跃的行业之一。…

【Linux】认识高级IO 5种IO模型

文章目录 高级IOIO的基本概念什么是IOOS如何得知外设当中有数据可读取OS如何处理从网卡中读取到的数据包IO的步骤 五种IO模型钓鱼的例子对应的模型如何区分同步IO和异步IO 阻塞IO非阻塞IO信号驱动IOIO多路转接异步IO 高级IO的概念同步通信 VS 异步通信阻塞 VS 非阻塞 阻塞IO非阻…

基于springboot的家政服务平台的设计与实现

背景 现代社会&#xff0c;由于经济不断发展&#xff0c;家政服务的数量也在不断的增加&#xff0c;随着家政服务的数量增多&#xff0c;人们对家政服务信息的需求也越来越高。 以往的家政服务管理平台的管理&#xff0c;一般都是纸质文件来管理家政服务信息&#xff0c;传统…

Python基本数据类型 — 列表

一、列表基本操作 1、创建列表 &#xff08;1&#xff09;使用 [] 创建列表 创建一个空列表&#xff0c;可以使用以下代码&#xff1a; my_list []创建一个包含元素的列表&#xff0c;可以在方括号中使用逗号分隔值&#xff0c;如下所示&#xff1a; my_list [1, 2, 3, …

Qt编写视频监控系统72-通过onvif增删改查OSD

一、前言 之前监控系统中原创的onvif协议解析机制&#xff0c;已经能够满足绝大部分用户的需要&#xff0c;比如搜索设备、获取视频流地址并播放、云台控制、预置位管理、图片亮度色彩饱和度等参数设置等&#xff0c;近期又多了一个需求&#xff0c;那就是通过onvif国际标准协…

平台使用篇 | RflySim平台飞控固件上传教程

导读 本教程共介绍了4种飞控固件的上传方式&#xff0c;重点介绍了Simulink模型生成自定义固件上传的两种方法&#xff0c;其中固件上传步骤主要分为三步&#xff1a;下载源码、编译生成固件及最后上传固件。 01 PX4官方上传方式 详见PX4官方固件烧录教程&#xff1a;https:…

基于spring boot + maven + opencv 实现的图像深度学习

写在前面的话 这是一个基于spring boot maven opencv 实现的Demo教程项目贯穿样本处理、模型训练、图像处理、对象检测、对象识别等技术点以学习交流为目的&#xff0c;代码注释超多&#xff0c;文档也在逐步完善java语言的深度学习项目&#xff0c;在整个开源社区来说都相对…

RflySim平台使用篇 | Rflysim3D软件使用系列教程(二)

导读: RflySim3D&#xff08;支持体验版&#xff09;和RflySimUE5&#xff08;支持完整版&#xff09;为本平台核心三维显示软件&#xff0c; 分别基于UE4 和UE5 引擎开发&#xff0c;具备高逼真虚拟现实显示效果。本视频主要讲解了如何将自定义的三维场景如何加载到RflySim3D…

Linux驱动开发笔记(三):基于ubuntu的helloworld驱动源码编写、makefile编写以及驱动编译加载流程测试

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/130542981 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

将远程服务器linux上的jupyter notebook映射到本地浏览器中

前提&#xff1a;mobaXterm可以连接远程服务器了 &#xff01;&#xff01;&#xff01;注意端口变化&#xff01;&#xff01;&#xff01; * 用从cmd中ssh -L 。。。去链接&#xff0c;报错perssion denied&#xff0c;所以还是选择mobaXterm方便。 1、mobaXterm的SSHTunnel配…

一般纳税人如何解决增值税、企业所得税高等问题?

业务是流程&#xff0c;财税是结果&#xff0c;税收问题千千万&#xff0c;关注《税算盘》来帮你找答案。 一般纳税人需要缴纳的增值税比小规模纳税人相比&#xff0c;需要缴纳更多。增值税作为我国第一大税种&#xff0c;能够筹划的空间并没有企业所得税那么多。 但是也是有…

软考A计划-真题-分类精讲汇总-第二章(操作系统)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

最近大火的ChatGpt,到底给我们带来了哪些改变?

我相信最近大家都有听说这个ChatGpt了吧&#xff01; 即使没有听说过也没有关系&#xff0c;我来给大家掰扯掰扯。 OpenAI公司推出了一款名为ChatGPT的人工智能聊天机器人&#xff0c;该技术通过利用大量训练数据&#xff0c;实现了人类般的自然语言处理能力&#xff0c;并能…

堆的实现,画图和代码分析建堆,堆排序,时间复杂度以及TOP-K问题

堆的实现 堆的概念及结构堆的实现初始化销毁返回堆顶元素判空有效数据个数堆的插入&#xff08;向上调整算法&#xff09;删除堆顶元素&#xff0c;仍然保持堆的形态&#xff08;向下调整算法&#xff09; 堆的创建向上调整法建堆向下调整建堆两种建堆方法时间复杂度向下调整法…

Go并发情况下debug调试无法进入所需调试goroutine,附带并发测试代码

大部分情况 问题&#xff1a; 在使用go语法的时候&#xff0c;由于并发情况&#xff0c;只能调试一个goroutine&#xff0c;但存在随机性&#xff0c;难指定 找到你所需的线程直接切换即可跳转。没有找到同时调试多个的办法&#xff0c;理论上是不行的&#xff0c;不然就不叫并…

美颜sdk的商业价值分析:如何利用美颜技术赢得市场?

当下&#xff0c;从自拍软件到直播平台&#xff0c;从手机相机到电商平台&#xff0c;美颜技术都有着广泛的应用。而美颜sdk作为美颜技术的重要组成部分&#xff0c;其商业价值也越来越受到关注。 一、美颜sdk有哪些商业价值&#xff1f; 随着美颜技术的不断发展&#xff0c…