宁波做网站建设推广广推科技(北京)有限公司

news/2025/10/7 20:54:17/文章来源:
宁波做网站建设推广,广推科技(北京)有限公司,济南市城乡建设局官网,优秀网站建设排名公司✅作者简介#xff1a;大家好#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式#xff0c;持续分享Java技术内容。 #x1f34e;个人主页#xff1a;Meteors.的博客 #x1f49e;当前专栏#xff1a;Java微服务 ✨特色专栏#xff1a; 知识分享 大家好我是 Meteors., 向往着更加简洁高效的代码写法与编程方式持续分享Java技术内容。 个人主页Meteors.的博客 当前专栏Java微服务 ✨特色专栏 知识分享 本文内容【2.3】Java微服务sentinel服务哨兵 ** ps **   阅读这篇文章如果有问题或者疑惑欢迎各位在评论区提问或指出 ----------------------------------------------------------  目录  -------------------------------------------------------------- 目录 一、内容 二、Sentinel介绍 1.背景 2. 介绍 3. 特性 三. Sentinel的历史 四. Sentinel与Hystrix的对比 五. Sentinel核心 六、Sentinel控制台 1. 介绍 2. 功能 3. 文档 4. 控制台安装 1进入下载页面 2下载jar包 3将jar包移动到合适目录并启动 七.  客户端接入控制台 1. 添加依赖 1父工程中添加​编辑 2子工程中添加 3添加配置文件  4重启服务并发送一次请求 2. 定义资源 ps资源属性 3. 定义规则 1流量控制规则 2熔断降级规则 3热点参数规则 4授权规则 5系统保护规则 6动态规则扩展 1. 支持 2. 本地文件中设置方式Demo 八. RestTemplate支持 1. 配置异常类 2. RestTemplate的声明位置加上注解 3.注释掉之前在方法上的声明 4. 增加流控进行测试 九. OpenFeign支持 1. 添加依赖 2. 开启Sentinel 参考文献 --------------------------------------------------------------------------------------------------------------------------------- 一、内容 二、Sentinel介绍 1.背景     Netflix中多项开源产品已进入维护阶段不再开发新的版本就目前来看是没有什么问题的。但是从长远角度出发我们还是需要考虑是否有可替代产品使用。比如本文中介绍Alibaba Sentinel就是一款高性能且轻量级的流量控制、熔断降级可替代方案。是一款面向云原生微服务的高可用流控防护组件 Hystrix目前状态不在主动开发当前处于维护模式  ——摘录自Hystrix官网 2. 介绍     随着微服务的流行服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件主要以流量为切入点从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。摘录自Sentinel官网 3. 特性 Sentinel 具有以下特征 丰富的应用场景Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景例如秒杀即突发流量控制在系统容量可以承受的范围、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时监控Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据甚至 500 台以下规模的集群的汇总运行情况。 广泛的开源生态Sentinel 提供开箱即用的与其它开源框架/库的整合模块例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。 完善的 SPI 扩展点Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。 三. Sentinel的历史 2012 年Sentinel 诞生主要功能为入口流量控制。2013-2017 年Sentinel 在阿里巴巴集团内部迅速发展成为基础技术模块覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。2018 年Sentinel 开源并持续演进。2019 年Sentinel 朝着多语言扩展的方向不断探索推出 C 原生版本同时针对 Service Mesh 场景也推出了 Envoy 集群流量控制支持以解决 Service Mesh 架构下多语言限流的问题。2020 年推出 Sentinel Go 版本继续朝着云原生方向演进。2021 年Sentinel 正在朝着 2.0 云原生高可用决策中心组件进行演进同时推出了 Sentinel Rust 原生版本。同时我们也在 Rust 社区进行了 Envoy WASM extension 及 eBPF extension 等场景探索。2022 年Sentinel 品牌升级为流量治理领域涵盖流量路由/调度、流量染色、流控降级、过载保护/实例摘除等同时社区将流量治理相关标准抽出到 OpenSergo 标准中Sentinel 作为流量治理标准实现。 四. Sentinel与Hystrix的对比 SentinelHystrix隔离策略信号量隔离并发线程数限流线程池隔离/信号量隔离熔断降级策略基于响应时间、异常比率、异常数基于异常比率实时指标实现滑动窗口LeapArray滑动窗口基于 RxJava规则配置支持多种数据源支持多种数据源扩展性多个扩展点插件的形式基于注解的支持支持支持调用链路信息支持同步调用不支持限流基于 QPS / 并发数支持基于调用关系的限流有限支持流量整形支持慢启动、匀速器模式不支持系统负载保护支持不支持控制台开箱即用可配置规则、查看秒级监控、机器发现等较为简单常见框架的适配Servlet、Spring Cloud、Dubbo、gRPC 等Servlet、Spring Cloud Netflix 五. Sentinel核心 Sentinel 的使用可以分为两个部分 核心库Java 客户端不依赖任何框架/库能够运行于 Java 7 及以上的版本的运行时环境同时对 Dubbo / Spring Cloud 等框架也有较好的支持见 主流框架适配。 控制台Dashboard控制台主要负责管理推送规则、监控、集群限流分配管理、机器发现等。 六、Sentinel控制台 1. 介绍      Sentinel 提供一个轻量级的开源控制台它提供机器发现以及健康情况管理、监控单机和集群规则管理和推送的功能。这里我们将会详细讲述如何通过简单的步骤就可以使用这些功能。 2. 功能 Sentinel 控制台包含如下功能: 查看机器列表以及健康情况收集 Sentinel 客户端发送的心跳包用于判断机器是否在线。监控 (单机和集群聚合)通过 Sentinel 客户端暴露的监控 API定期拉取并且聚合应用监控信息最终可以实现秒级的实时监控。规则管理和推送统一管理推送规则。鉴权生产环境中鉴权非常重要。这里每个开发者需要根据自己的实际情况进行定制。 3. 文档 控制台 · alibaba/Sentinel Wiki · GitHubA powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件) - 控制台 · alibaba/Sentinel Wikihttps://github.com/alibaba/Sentinel/wiki/%E6%8E%A7%E5%88%B6%E5%8F%B0 4. 控制台安装 1进入下载页面 2下载jar包 3将jar包移动到合适目录并启动 执行命令注意版本要改为自己的可以使用tab键补全 java -Dserver.port8080 -Dcsp.sentinel.dashboard.serverlocalhost:8080 -Dproject.namesentinel-dashboard -jar sentinel-dashboard-1.8.5.jar 七.  客户端接入控制台 1. 添加依赖 1父工程中添加 !-- 父工程添加如下依赖 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2.2.5.RELEASE/version/dependency 2子工程中添加 !-- 在子工程中导入依赖 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId/dependency 3添加配置文件  sentinel:transport:port: 8719dashboard: localhost:8080 4重启服务并发送一次请求 然后刷新控制台就有显示了  2. 定义资源  ps资源属性 Field说明默认值resource资源名资源名是限流规则的作用对象count限流阈值grade限流阈值类型QPS 模式1或并发线程数模式0QPS 模式limitApp流控针对的调用来源default代表不区分调用来源strategy调用关系限流策略直接、链路、关联根据资源本身直接controlBehavior流控效果直接拒绝 / 排队等待 / 慢启动模式不支持按调用关系限流直接拒绝clusterMode是否集群限流否 重启服务后刷新控制台就有显示资源了 3. 定义规则 1流量控制规则 不推荐和这一样在控制台进行设置这里的设置重启服务后会消失推荐使用动态规则 请求超过设置触发限流方法上文的method1 2熔断降级规则 熔断降级规则是远程调用奔溃了就会调用熔断降级触发方法上文的method2 3热点参数规则 热点参数规则是一种更细粒度的流控规则它允许将规则具体到参数上 4授权规则     根据调用来源来判断该次请求是否被允许这时可以调用Sentinel的来源访问控制的功能。来源访问根据资源的请求来源origin限制资源是否通过。 设置禁止访问的来源 添加配置类 /*** 自定义来源处理规则*/ Component public class MyRequestOriginParser implements RequestOriginParser {Overridepublic String parseOrigin(HttpServletRequest httpServletRequest) {return httpServletRequest.getParameter(userName);} }5系统保护规则     系统保护规则是从应用级别的入口流量进行控制从单台机器的总体 Load、RT、入口 QPS 和线程数四个维度监控应用数据让系统尽可能跑在最大吞吐量的同时保证系统整体的稳定性。     系统保护规则是应用整体维度的而不是资源维度的并且仅对入口流量生效。入口流量指的是进入应用的流量EntryType.IN比如 Web 服务或 Dubbo 服务端接收的请求都属于入口流量。 系统规则支持以下的阈值类型 Load仅对 Linux/Unix-like 机器生效当系统 load1 超过阈值且系统当前的并发线程数超过系统容量时才会触发系统保护。系统容量由系统的 maxQps * minRt 计算得出。设定参考值一般是 CPU cores * 2.5。CPU usage1.5.0 版本当系统 CPU 使用率超过阈值即触发系统保护取值范围 0.0-1.0。RT当单台机器上所有入口流量的平均 RT 达到阈值即触发系统保护单位是毫秒。线程数当单台机器上所有入口流量的并发线程数达到阈值即触发系统保护。入口 QPS当单台机器上所有入口流量的 QPS 达到阈值即触发系统保护。 6动态规则扩展 1. 支持 Sentinel 目前支持以下数据源扩展 Pull-based: 动态文件数据源、Consul, EurekaPush-based: ZooKeeper, Redis, Nacos, Apollo, etcd 2. 本地文件中设置方式Demo 在yml文件中进行配置 datasource:ds1:file:file: classpath:flowRule.jsondata-type: jsonrule-type: flow 增加并配置JSON文件  重启项目后调用接口 八. RestTemplate支持 Spring Cloud Alibaba Sentinel 支持对 RestTemplate 调用的服务进行服务保护。需要在构造 RestTemplate Bean 时添加 SentinelRestTemplate 注解。 1. 配置异常类 /*** sentinel异常工具类*/ public class ExceptionUtil {// 服务流量控制处理public static ClientHttpResponse handleException(HttpRequest request,byte[] body,ClientHttpRequestExecution execution,BlockException exception) {exception.printStackTrace();return new SentinelClientHttpResponse(JSON.toJSONString(new Order(333L, 333L, 333, 333, 3L, new ArrayList())));}// 服务熔断降级处理public static ClientHttpResponse fallback(HttpRequest request,byte[] body,ClientHttpRequestExecution execution,BlockException exception) {exception.printStackTrace();return new SentinelClientHttpResponse(JSON.toJSONString(new Order(444L, 444L, 444, 444, 4L, new ArrayList())));} } 2. RestTemplate的声明位置加上注解 SentinelRestTemplate(blockHandler handleException, blockHandlerClass ExceptionUtil.class,fallback fallback, fallbackClass ExceptionUtil.class) 3.注释掉之前在方法上的声明  4. 增加流控进行测试   九. OpenFeign支持 1. 添加依赖 !-- spring cloud openfeign 依赖 -- dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId /dependency !-- spring cloud alibaba sentinel 依赖 -- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId /dependency 2. 开启Sentinel yml文件中添加两处地方 # feign 开启 sentinel 支持 feign:sentinel:enabled:true cloud:sentinel:transport:port:8719dashboard:localhost:8080 创建异常注解 /*** 服务熔断降级处理可以捕获异常*/ Component publicclass ProductServiceFallbackFactory implements FallbackFactoryProductService {// 获取日志在需要捕获异常的方法中进行处理Logger logger LoggerFactory.getLogger(ProductServiceFallbackFactory.class);Overridepublic ProductService create(Throwable throwable) {returnnew ProductService() {Overridepublic Product selectProductById(Integer id) {return new new Order(333L, 333L, 333, 333, 3L, new ArrayList());}};}} 服务接口类中添加注解即可 FeignClient(value user-service, fallbackFactory ProductServiceFallbackFactory.class) 参考文献 home | Sentinelhomehttps://sentinelguard.io/zh-cn/index.html微服务系列之Sentinel服务哨兵今日份视频来啦通过视频学习可真是一点不累快点进来 ~https://mp.weixin.qq.com/s?__bizMzA4MDEwNTI1NAmid2459057627idx1sn2c4b1d9d98b6ea847face29de41d3872chksm88cfc792bfb84e84a792ffaa1dd464603297e99f3eccb28f379794875daf985f2835376501d5cur_album_id1337276895993430016scene189#wechat_redirect 最后 相关内容会陆续更新希望文章对你有所帮助

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

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

相关文章

题解:CF1292E Rin and The Unknown Flower

传送门 一道有趣的思维题。 我们从最简单的情况开始考虑:如果还剩下 \(2\) 格电呢? 那么直接询问 \(\texttt{O}\) 和 \(\texttt{H}\),剩下的位置就是 \(\texttt{C}\)。 从以上的朴素做法中我们得到启发:能不能通过…

打印A3大小的PDF文件为A4幅面

Foxit 福昕打印pdf:放大150% 然后把每页旋转180度,保存,打印。方法一: 用 Acrobat Pro DC 旋转。 方法二: 用 illustrator,打开pdf,选择某页,旋转,保存

一个完整的网站建设怎么在58同城上做网站

linux服务器的字符集设置可能影响到网站页面出现 “???” 等问号乱码,还有可能导致文件中的汉字部分出现乱码。有两个原因 服务器没有安装 zh_CN.UTF-8 字符集,导致不支持中文!服务器虽然装了 zh_CN.UTF-8…

深入解析:SpringBoot-Thymeleaf

深入解析:SpringBoot-Thymeleafpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…

课程总结2

请看下列代码,你发现有什么特殊之处吗? public class MethodOverload { public static void main (String [] args) { System.out.println ("The square of integer 7 is" + square (7)); System.out.prin…

延安网站建设哪家专业深圳多区最新通知

‍作者|张祥威 编辑|德新 多位知情人士告诉HiEV,智能网联汽车准入试点通知,乐观预计将在一个月内发布。试点的推动,意味着国家层面的自动驾驶L3标准随之到来。 「L3标准内容大部分与主机厂相关,由工信部牵头,找了几家…

机器学习:集成学习概念、分类、随机森林 - 实践

机器学习:集成学习概念、分类、随机森林 - 实践2025-10-07 20:45 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display…

sudo docker exec -it backend bash 以交互方式(interactive)进入正在运行的 Docker 容器的命令行环境 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

解码查找算法与哈希表

查找基础概念 查找的定义 查找(又称搜索)是从一组数据中,找出 “关键字与目标值匹配” 的记录的操作;若找到则返回记录的位置(如数组下标),若未找到则返回 “不存在” 标识(如-1)。 查找效率的影响因素数据存…

完整教程:MySQL 如何判断某个表中是否存在某个字段

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025/10/7

2025/10/7休息一天

NVMe IP现状扫盲 - 指南

NVMe IP现状扫盲 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &qu…

山西正规网站建设推广如何分析网站流量

项目介绍 ChatTTS是一款专为优化对话场景而生的语音生成模型,尤其匹配大型语言模型(LLM)的交互需求,以及生成对话式音频、视频旁白等应用场景,无缝覆盖中英文双语。 通过汲取约100,000小时的高质量中英语音数据进行深…

字体设计教程网站好变装chinacd wordpress

泛型&#xff08;宽泛的&#xff0c;不确定的类型&#xff09; 使用场景&#xff1a;定义一个函数或类时&#xff0c;无法确定要使用的具体类型&#xff08;返回值、参数、属性的类型不能确定&#xff09;泛型使用时相当于一个参数 functiondemo<T>(arg: T): T{return …

第二次课动手动脑合集

文档: https://files.cnblogs.com/files/blogs/847696/动手动脑2.zip?t=1759839965&download=true 1.生成随机数 import java.util.Arrays; public class RandomGenerator { public static void main(String[] a…

网站时间轴品牌策划经典案例

示意图的特点 示意图表示的是大体上描述或表示物体的形状、相对大小、物体与物体之间的联系(关系),描述某器材或某机械的大体结构和工作的基本原理,描述某个工艺过程简单图示都叫做示意图。 示意图的特点就是简单明了,它突出了重点,忽略很多次要的细节。老师上课时在黑板…

课后实验2

public class MethodOverload { public static void main(String[] args) { System.out.println("The square of integer 7 is " + square(7)); System.out.println("\nThe square of double 7.5 is &q…

网站qq在线代码公主岭网站建设

非常高兴有机会向大家介绍CleanMyMac X 2024这款专业的Mac清理软件。它以其强大的清理能力、系统优化效果、出色的用户体验以及高度的安全性&#xff0c;在Mac清理软件市场中独树一帜。 CleanMyMac X2024全新版下载如下: https://wm.makeding.com/iclk/?zoneid49983 一、主要…

centos8的防火墙管理

开放一个tcp端口 firewall-cmd --zone=public --add-port=83/tcp --permanent 查看防火墙的状态 systemctl start firewalld.service

UCB-CS70_离散数学_个人笔记:Proofs 和 EECS 的联系及几种常见证明方法 - Zeeh

Proofs are very powerful and are in some ways like computer programs. Indeed, there is a deep historic link between these two concepts that we will touch upon in this course — the invention of compute…