3.6 Spring Cloud 实战集成 Sentinel 熔断限流| 学习笔记

简介: 快速学习 3.6 Spring Cloud 实战集成 Sentinel 熔断限流。

开发者学堂课程【Spring Cloud 微服务架构设计与开发实战 3.6 Spring Cloud 实战集成 Sentinel 熔断限流】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/60/detail/1099


3.6 Spring Cloud 实战集成 Sentinel 熔断限流

 

内容介绍

一、阿里巴巴 Sentinel 熔断限流工具

二、阿里巴巴 Sentinel 分布式架构

三、阿里巴巴 Sentinel 实战 SpringCloud 下一节课

 

这节课主要讲的是比较重要的技术 sentinel 来解决熔断限流问题,就像早期的京东淘宝服务器,在双十一时候有时会出现卡死或者瘫痪的时候就需要升级服务器扩大集群,用限流的办法,或者是熔断的办法来保证服务器的正常操作是对于保护系统来说十分重要的策略。

 

一、阿里巴巴 Sentinel 熔断限流工具

1.Alibaba 微服务组件 Sentinel

(1)Sentinel:分布式系统的流量防卫兵(要能监控流量,监控错误,区于某个设置条件来做熔断)

(2)Sentinel:哨兵,流量控制、熔断降级、系统负载保护等多维

度保护服务的稳定性。

保护:保护系统的可控性。

2.Sentinel 新特性

(1)丰富的应用场景: Sentinel 承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。(这里是阿里项目最有说服力的一个地方)

(2)完备的实时监控: Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至500台以下规模的集群的汇总运行情况。

(3)广泛的开源生态: Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。

(Sentinel 并不是只针对 spring cloud,他是针对整个 jar war 分布式的一个生态,服务于多种分布式的一个场景)

(4)完善的 SPI 扩展点: Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。

3.Sentinel 对比 Hystrix

对比内容

Sentinel

Hystrix

 

隔离策略

信号量隔离

线程池隔离/信号量隔离

熔断降级策略

基于响应时间或失败比率

基于失败比率

实时指标实现

滑动窗口

滑动窗口(基RxJava)

规则配置

支持多种数据源

支持多种数据源

扩展性

多个扩展点

插件的形式

基于注解的支持

支持

支持

限流

基于QPS,支持基于调用关

不支持

流量整形

支持慢启动、匀速器模式

不支持

系统负载保护

支持

不支持

控制台

开箱即用,可配置规则、查看秒级监控、机器发现等

不完善

常见框架的适配

Servlet、Spring Cloud、Dubbo、gRPC等

Servlet、Spring Cloud Netflix

 


二、阿里巴巴 Sentinel 分布式架构

1. Sentinel 的逻辑架

实时监控

(熔断限流的基础,监控指标才能判断他是否是熔断)

机器发现

 

规则配置

Sentinel控

制台

SpringCloud

流量控制

线程数隔离

 

慢调用降级

 

调用链路

 

Dubbo

 

速率控制

集群限流

 

异常熔断

 

系统自适应保护

 

gRPC

 

调用关系限流

 

热点限流

 

削峰填谷

 

来源访问控制

ServiceMesh

(它的工作层次更偏向底层的网络调度,与其他的不太一样)

动态规则配置(ZooKeeper,Nacos,Apollo)

2. Sentinel 的开源生态

image.png

他的生态较为完善,对接了各种不同的分布式场景,nginx 也可以集成,基本对接了所有的技术。

 

三、阿里巴巴 Sentinel 实战 SpringCloud 下一节课

首先,如果想熔断微服务,将 Sentinel 的调度端先改造一下。首先 Sentinel 的依赖包,

<dependency>

<groupId>com.alibaba.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-sentinel</artif<version>2.2.3.RELEASE</ version>

</ dependency>

这里对应的依赖要加进来,其次看制作中心,首先采集数据

#监控数据源要暴露地址

management.endpoints.web.exposure.include=*

其次要配 Sentinel 的地址,

#sentinel

spring.cloud.sentinel.transport.dashboard=127.0.0.1:8080feign.sentinel.enabled=true

指的是可以单独和 sentinel 集成没有可以单独去搜 sentinel,去下载。其次是找到 quick start,找到并加入它的包:

image.png

之后在E盘启动他的 jar 包找到他的监控面板,之后在浏览器8080登录,此时还没有实现监控,接下来调用微服务,来触发一次监控、数据采集,这个程序是9001 8087。熔断主要是和 sentinel 来对接起来,之后用改造过的9002启动,通过9002端口结合熔断的一个配置来实现熔断操作,9002与9001区别是9001的点熔端没有启用熔断。此时就有一些程序了比如实时监控等,包括请求次数等。流控规则:里面主要是有熔断限流等。此时用 hello java.调用,此时就在实时监控看到两个地方在调用并且变化是不一样的。此时如果触发熔断,在hi的上面加一个流控,阈值类型选择 QPS,单机阈值达到一个时就触发,这个只对 hi 起作用。此时这个 hi,此时就实现熔断最高就是一次。Hello 还是正常的。所以说 sentinel 控制台1.8.0是十分强大的工具,有监控,有降级,有热点,有授权等一系列工具,

和 spring cloud 也是十分支持。

相关文章
|
4天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
26 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
23天前
|
IDE API 开发工具
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
Alibaba Cloud API Toolkit for VSCode 是集成了 OpenAPI 开发者门户多项功能的 VSCode 插件,开发者可以通过这个插件方便地查找API文档、进行API调试、插入SDK代码,并配置基础环境设置。我们的目标是缩短开发者在门户和IDE之间的频繁切换,实现API信息和开发流程的无缝结合,让开发者的工作变得更加高效和紧密。
沉浸式集成阿里云 OpenAPI|Alibaba Cloud API Toolkit for VS Code
|
18天前
|
Dart Android开发
鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
本文介绍了在OpenHarmony平台上集成WebView的两种方法:一是使用第三方库`flutter_inappwebview`,通过配置pubspec.lock文件实现;二是编写原生ArkTS代码,自定义PlatformView,涉及创建入口能力、注册视图工厂、处理方法调用及页面构建等步骤。
36 0
|
2月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
47 2
zabbix agent集成percona监控MySQL的插件实战案例
|
3月前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
49 1
|
3月前
|
JSON 数据管理 关系型数据库
【Dataphin V3.9】颠覆你的数据管理体验!API数据源接入与集成优化,如何让企业轻松驾驭海量异构数据,实现数据价值最大化?全面解析、实战案例、专业指导,带你解锁数据整合新技能!
【8月更文挑战第15天】随着大数据技术的发展,企业对数据处理的需求不断增长。Dataphin V3.9 版本提供更灵活的数据源接入和高效 API 集成能力,支持 MySQL、Oracle、Hive 等多种数据源,增强 RESTful 和 SOAP API 支持,简化外部数据服务集成。例如,可轻松从 RESTful API 获取销售数据并存储分析。此外,Dataphin V3.9 还提供数据同步工具和丰富的数据治理功能,确保数据质量和一致性,助力企业最大化数据价值。
151 1
|
3月前
|
C# Windows 开发者
当WPF遇见OpenGL:一场关于如何在Windows Presentation Foundation中融入高性能跨平台图形处理技术的精彩碰撞——详解集成步骤与实战代码示例
【8月更文挑战第31天】本文详细介绍了如何在Windows Presentation Foundation (WPF) 中集成OpenGL,以实现高性能的跨平台图形处理。通过具体示例代码,展示了使用SharpGL库在WPF应用中创建并渲染OpenGL图形的过程,包括开发环境搭建、OpenGL渲染窗口创建及控件集成等关键步骤,帮助开发者更好地理解和应用OpenGL技术。
183 0
|
3月前
|
开发者 前端开发 开发框架
JSF与移动应用,开启全新交互体验!让你的Web应用轻松征服移动设备,让用户爱不释手!
【8月更文挑战第31天】在现代Web应用开发中,移动设备的普及使得构建移动友好的应用变得至关重要。尽管JSF(JavaServer Faces)主要用于Web应用开发,但结合Bootstrap等前端框架,也能实现优秀的移动交互体验。本文探讨如何在JSF应用中实现移动友好性,并通过示例代码展示具体实现方法。使用Bootstrap的响应式布局和组件可以确保JSF页面在移动设备上自适应,并提供友好的表单输入和提交体验。尽管JSF存在组件库较小和学习成本较高等局限性,但合理利用其特性仍能显著提升用户体验。通过不断学习和实践,开发者可以更好地掌握JSF应用的移动友好性,为Web应用开发贡献力量。
48 0
|
3月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
76 0
|
3月前
|
JavaScript 开发者
从零基础到实战应用:Angular入门指南带你一步步构建你的第一个Web应用——全面介绍环境搭建、项目创建、组件开发与应用集成
【8月更文挑战第31天】本文档是针对初学者的Angular入门指南。通过详细步骤与示例代码,教你如何使用Angular CLI搭建开发环境、创建新项目、添加及配置组件,并运行首个应用。Angular是由Google开发的强大Web框架,专为高效构建复杂单页应用设计。按照本指南操作,你将能够快速上手Angular,开启Web应用开发之旅。
84 0