微服务-Sentinel新手入门指南

微服务为什么要使用流控降级组件

  1. 为了提高系统运行期间的稳定性和可用性
  • 在微服务环境下,服务之间存在复杂的调用关系,单个服务的故障或过载可能会迅速影响到整个系统,导致服务雪崩效应。流控组件可以限制进入系统的流量,防止系统因超出处理能力而崩溃。降级组件则在不可用或响应过慢时,提供降级逻辑,如返回备用数据或执行降级操作,以保证核心业务的正常运行。
  1. 需求:对下单接口进行流控
  • sentinel是什么?

    Sentinel是面向分布式、多语言异构服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维护来帮助开发者保障微服务的稳定性。

Sentinel基本概念

资源

资源是Sentinel的关键概念。它可以是Java应用程序中的任何内容,例如,由应用程序提供的服务,或由应用程序调用的其它应用提供的服务,甚至可以是一段代码。在接下来的文档中,我们都会用资源来描述代码块。

只要通过Sentinel API定义的代码,就是资源,能够被Sentinel保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源来标示资源。

规则

围绕资源的实时状态设定的规则,可以包括流量控制规则、熔断降级规则以及系统保护规则。所有规则可以动态实时调整。

Sentinel功能和设计理念

流量控制

流量控制在网络传输中是一个常用的概念,它用于调整网络包的发送数据。然而,从系统稳定性角色考虑,在处理请求的速度上,也有非常多的讲究。任意时间到来的请求往往是随机不可控的,而系统的处理能力是有限的。我们需要根据系统的处理能力对流量进行控制。Sentinel作为一个调配器可以根据需要把随机的请示调整成合适的的形状。

流量控制有以下几个角度:

  • 资源的调用关系,例如资源的调用链路,资源和资源之间的关系;
  • 运行指标,例如QPS、线程池、系统负载等;
  • 控制的效果,例如直接限流、冷启动、排名等;

Sentinel的设计理念是让您自由选择控制的角度,并进行灵活组合,从而达到想的效果。

熔断降级

什么是熔断降级
除了流量控制以外,降低调用链路中的不稳定资源也是Sentinel的使命之一。由于调用关系的复杂,如果调用链路中的某个资源出现了不稳定,最终会导致请求发生堆积。这个问题和Hystrix里面描述 的问题是一样的。

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

熔断降级设计理念
在限制手段上,Sentinel和Hystrix采取了完全不一样的方法。Hystrix通过线程池的方式,来对依赖(在我们的概念中对应资源)进行了隔离。这样做的好处是资源和资源之间做一了最彻底是除了增加了线程切换的成本,还需要预先给各个资源做线程池大小的分配。

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

  • 通过并发线程进行限制
    和资源池隔离的方法不同,Sentinel通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响。这样不但没有线程切换的损耗,也不需要预先分配线程池大小。当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数据的逐步堆积。当线程数在待定资源上堆积到一定的数量之后,对该资源的新请求会被拒绝。堆积的线程完成任务后才开始继续接收请求。
  • 通过响应时间对资源进行降级
    除了对并发线程数据进行控制以外,Sentinel还可以通过响应时间来快速降级不稳定的资源。当依赖的资源出现响应时间过长后,所有对该资源的访问都会被直接拒绝,直到过了指定的时间窗口才重新恢复。

系统负载保护

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

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

Sentinel是如何工作的

Sentinel的主要工作机制如下:

  • 对主流框架提供适配或显示的API,来定义需要保护的资源,并提供设计对资源进行实时统计和调用链路分析。
  • 根据预设的规则,结合对资源的实时统计信息,对流量进行控制。同时,Sentinel提供开放的接口,方便您定义及改变规则。
  • Sentinel提供实惠的监控系统,方便快速了解目前系统的状态。

流控降级与容错标准

Sentinel社区正在将流量治理相关标准抽出到OpenSergo spec中,Sentinel作为流量治理标准实现。

Sentinel的使用

到官网下载sentinel-dashboard,下载

安装sentinel控制台

1.启动sentinel控制台
  • 执行 java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=tlmall-sentinel-dashboard:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.6.jar
    如果端口冲突,可用使用-Dserver.port=新端口进行设置。
  • 从sentinel1.6.0起,sentinel控制台引入基本的登录功能,默认用户名和密码都是sentinel。
    访问:http://localhost:8080
2、sentinel整合微服务

官方参考文档,参考文档

  • 引入依赖
<!-- sentinel 依赖-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
  • 业务代码中配置要保护的资源

    • mvc接口方法自动埋点,不需要配置
    • 非mvc接口方法可以使用@SentinelResource注解用来标识资源是否被限流、降级
    • 对下单接口进行流控,此处不需要处理
  • 测试,重启服务,对用户操作进行流控

    • 启动sentinel控制台,在sentinel控制台中设置流控规
    • 将单机阈值调为1,用postman测试接口,是否被流控

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

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

相关文章

【PCIe 总线及设备入门学习专栏 4.2 -- PCI 总线的三种传输模式 】

文章目录 OverviewProgrammed I/O&#xff08;PIO&#xff09;Direct Memory Access (DMA)Peer-to-Peer 本文转自&#xff1a;https://blog.chinaaet.com/justlxy/p/5100053095 Overview 本文来简单地介绍一下PCI Spec规定的三种数据传输模型&#xff1a;Programmed I/O&…

抖音电商全年销售154亿单产业带商品,830个产业带销售额过亿

发布 | 大力财经 12月31日&#xff0c;抖音电商发布《直播间里的中国制造——2024抖音电商产业带发展报告》&#xff0c;全面盘点2024年全国产业带地区实体经济和中小商家在该平台的发展情况。 报告披露&#xff0c;过去一年&#xff0c;来自全国产业带地区的1.7亿款商品&…

前端页面展示本电脑的摄像头,并使用js获取摄像头列表

可以通过 JavaScript 使用 navigator.mediaDevices.enumerateDevices() 获取电脑上的摄像头列表。以下是一个示例代码&#xff0c;可以展示摄像头列表并选择进行预览。 HTML JavaScript 实现摄像头列表展示和预览 <!DOCTYPE html> <html lang"zh-CN">…

树莓派OpenWrt下怎么驱动带USB的摄像头

环境&#xff1a;使用VirtualBox虚拟机下安装的ubuntu22.04 LTS操作系统 安装编译需要的插件&#xff1a; sudo apt install -y ack antlr3 asciidoc autoconf automake autopoint binutils bison build-essential \ bzip2 ccache cmake cpio curl device-tree-compiler fas…

MIT Cheetah 四足机器人的动力学及算法 (I) —— 简化动力学模型

Title: MIT Cheetah 四足机器人的动力学及算法 Dynamics and Algorithm of the MIT Cheetah’’ Quadruped Robot [1] MIT Cheetah 四足机器人的动力学及算法 (I) —— 简化动力学模型 [2] MIT Cheetah 四足机器人的动力学及算法 (II) —— 刚体模型与前向运动学算法 [3] MIT C…

python版本的Selenium的下载及chrome环境搭建和简单使用

针对Python版本的Selenium下载及Chrome环境搭建和使用&#xff0c;以下将详细阐述具体步骤&#xff1a; 一、Python版本的Selenium下载 安装Python环境&#xff1a; 确保系统上已经安装了Python 3.8及以上版本。可以从[Python官方网站]下载并安装最新版本的Python&#xff0c;…

开源简史与概览

Think 1.论述“自由软件”与“开源软件”的区别与联系&#xff1f; 2.GitHub Trending 是一个能够快速找到有趣的新项目的地方&#xff1b;而 OpenLeaderboard 也是一个能够发现有趣而有影响力项目的地方。尝试从这两个网站中找到感兴趣的若干项目&#xff0c;挖掘并分析出上…

006-Jetpack Compose for Android之传感器数据

需求分析 想要看看手机的传感器数据&#xff0c;看看滤波一下能玩点什么无聊的。先搞个最简单的&#xff0c;手机本身的姿态。 需求&#xff1a;采集手机姿态数据&#xff0c;显示在界面上。 那么我们需要&#xff1a; 一个文本标签类似的控件&#xff0c;显示手机姿态数据…

单元测试入门和mockup

Java 新手入门&#xff1a;Java单元测试利器&#xff0c;Mock详解_java mock-CSDN博客 这个是典型的before when assert三段式&#xff0c;学一下单测思路 这个没有动态代理&#xff0c;所以是直接class(对比下面) Jmockit使用笔记_增加代码覆盖率_覆盖try catch_使用new Mock…

抢先体验:人大金仓数据库管理系统KingbaseES V9 最新版本 CentOS 7.9 部署体验

一、简介 KingbaseES 是中国人大金仓信息技术股份有限公司自主研发的一款通用关系型数据库管理系统&#xff08;RDBMS&#xff09;。 作为国产数据库的杰出代表&#xff0c;它专为中国市场设计&#xff0c;广泛应用于政府、金融、能源、电信等关键行业&#xff0c;以高安全性…

HT-HaiBOX边缘计算盒 智慧工厂方案,智慧医疗方案,智慧加油站方案,智慧安防方案,智慧城市方案;方案定制开发

背景介绍 在当今数字化时代&#xff0c;各个行业对于智能化视频监控设备的需求日益增长。无论是安防监控&#xff0c;还是智慧工厂、智慧城市等领域&#xff0c;都需要高效、智能的设备来保障安全和提高生产效率。然而&#xff0c;传统的视频监控设备存在诸多痛点&#xff1a;…

Unity中实现转盘抽奖效果(一)

实现思路&#xff1a; 旋转转盘的z轴&#xff0c;开始以角加速度加速到角速度最大值&#xff0c;结束的时候&#xff0c;以角加速度减速使角速度减少到0&#xff0c;然后转盘z轴旋转的角度就是加上每秒以角速度数值大小&#xff0c;为了使角度不能一直增大&#xff0c;对360度…

LockSupport的源码实现原理(一)

目录 底层源码分析 线程状态变化 许可证机制 中断处理 底层源码分析 public class LockSupport {// Unsafe实例private static final Unsafe U Unsafe.getUnsafe();// Thread对象中parkBlocker字段的偏移量private static final long PARKBLOCKER U.objectFieldOffset(Thre…

电子应用设计方案80:智能桌椅系统设计

智能桌椅系统设计 一、引言 智能桌椅系统旨在为用户提供更加舒适、便捷和个性化的使用体验&#xff0c;适应不同的工作和学习场景。 二、系统概述 1. 系统目标 - 实现桌椅高度、角度的自动调节&#xff0c;适应不同用户的身体尺寸和使用需求。 - 具备坐姿监测和提醒功能&…

【SpringBoot】深度解析 Spring Boot 拦截器:实现统一功能处理的关键路径

前言 &#x1f31f;&#x1f31f;本期讲解关于拦截器的详细介绍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不多说…

网络渗透测试实验四:CTF实践

1.实验目的和要求 实验目的:通过对目标靶机的渗透过程,了解CTF竞赛模式,理解CTF涵盖的知识范围,如MISC、PPC、WEB等,通过实践,加强团队协作能力,掌握初步CTF实战能力及信息收集能力。熟悉网络扫描、探测HTTP web服务、目录枚举、提权、图像信息提取、密码破解等相关工具…

计算机毕业设计Python+Spark考研预测系统 考研推荐系统 考研数据分析 考研大数据 大数据毕业设计 大数据毕设

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

2024年度总结:保持正念 延迟满足

总结&#xff1a; 时光荏苒&#xff0c;很快就到了年底&#xff0c;2024年也就悄悄的过去了&#xff0c;回顾这一年&#xff0c;有很多的感触&#xff0c;在此做一个总结&#xff0c;留下自己的脚印 CTF&#xff1a; 要总结的第一件事那当然是CTF&#xff0c;回顾这一年&#…

LeetCode - 初级算法 数组(存在重复元素)

存在重复元素 这篇文章讨论如何判断一个数组中是否存在重复元素。 免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 描述 给定一个整数数组 nums,如果任一值在数组中出现至少两次,返回 true;如果数组中每个元素互不相同,返回 false。 示例: 输入: nums =…

03-spring-理-DefaultListableBeanFactory

DefaultListableBeanFactory 是 beanFactory的实现 重要 有一些类被注解标注了。但是没有加入到容器。 怎么将标注的类加入到容器&#xff1f; 这个时候使用bean的后置处理器 主要是通过bean后置处理器来处理 被注解标注的类 org.springframework.context.annotation.inter…