博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Cloud Alibaba 极速通关 | 分布式系统的流量防卫兵 Sentinel
阅读量:4104 次
发布时间:2019-05-25

本文共 3288 字,大约阅读时间需要 10 分钟。

一、简介

Sentinel 是 Alibaba 的一个开源框架,是 Spring Cloud Alibaba 的一个子项目,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。

在这里插入图片描述在这里插入图片描述
和 Hystrix 的功能类似,但他和 Hystrix 的区别如下
在这里插入图片描述
以上图片来自网络

二、环境搭建

1、添加核心 maven 依赖
org.springframework.boot
spring-boot-starter-parent
2.2.5.RELEASE
Finchley.RELEASE
org.springframework.cloud
spring-cloud-alibaba-dependencies
0.9.0.RELEASE
pom
import
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-alibaba-sentinel
2、yml 配置文件
spring:  application:    name: sentinel  cloud:#    nacos:#      discovery:#        server-addr: localhost:8848    sentinel:      transport:        dashboard: localhost:8718      eager: trueserver:  port: 8889  tomcat:    max-threads: 20
3、示例代码
@RestControllerpublic class IndexController {
@RequestMapping("/index") public String index() {
return "index"; } @SentinelResource(value = "getIndexConsole",blockHandler = "getOrderQpsEx") @RequestMapping("/getIndexConsole") public String getIndexConsole() {
return "getIndexConsole"; } @SentinelResource(value = "getOrderConsole",fallback = "getFallBackEx") @RequestMapping("/getOrderConsole") public String getOrderConsole() {
try {
Thread.sleep(200); } catch (InterruptedException e) {
e.printStackTrace(); } return "getOrderConsole"; } public String getOrderQpsEx(BlockException e) {
return "接口已经被限流"; } public String getFallBackEx() {
return "接口已经被熔断"; }}

@SentinelResource 为配置失败后执行的方法,他有几个参数

fallback 服务降级(超时,异常)执行方法
blockHandler 限流/熔断执行方法

4、启动 sentinel 控制台

sentinel-dashboard 是官方提供的控制台,可以方便地通过界面的方式进行操作,下载地址

https://github.com/huangliangyun/alibaba-learning/blob/master/spring-cloud-alibaba/sentinel-dashboard-1.6.2.jar

下载之后通过以下命令启动

java -Dserver.port=8718 -Dcsp.sentinel.dashboard.server=localhost:8718 -Dproject.name=sentinel-dashboard -Dcsp.sentinel.api.port=8719 -jar sentinel-dashboard-1.6.2.jar

-Dserver.port=8718 控制台端口sentinel 控制台是一个 spring boot 程序,可以通过这个端口访问控制台。

-Dcsp.sentinel.dashboard.server=localhost:8718 向控制台发送心跳包的控制台地址,指定控制台后客户端会自动向该地址发送心跳包。
-Dproject.name=sentinel-dashboard 指定Sentinel控制台程序的名称
-Dcsp.sentinel.api.port=8719 客户端提供给Dashboard访问或者查看Sentinel的运行访问的参数,默认8719

5、访问控制台

启动控制台后,可访问以下地址,账号密码都是 sentinel

http://localhost:8718/#/dashboard

在这里插入图片描述

6、操作实例

在这里插入图片描述

我们可以添加一个限流规则
资源名 接口名称,比如在示例代码里面的 getIndexConsole
Qps 接口每秒最多处理几个请求
线程数 接口最多允许几个线程处理
单击阈值 如果数值为 2 表示每秒只能处理 2 个请求

代码下载

https://github.com/huangliangyun/alibaba-learning/tree/master/spring-cloud-alibaba

—— 完

最后,感谢您阅读我的文章,如果觉得对您有帮助,麻烦点点关注,您的鼓励和支持是我最大的动力,我会坚持每天更新,如果有什么错误,麻烦指正,最后祝您工作顺利,生活愉快!

ABOUT

公众号:【星尘Pro】

github:

推荐阅读

参考资料

https://github.com/alibaba/Sentinel

转载地址:http://ayfsi.baihongyu.com/

你可能感兴趣的文章
element ui 弹窗在IE11中关闭时闪现问题修复
查看>>
vue 遍历对象并动态绑定在下拉列表中
查看>>
Vue动态生成el-checkbox点击无法选中的解决方法
查看>>
python __future__
查看>>
MySQL Tricks1
查看>>
python 变量作用域问题(经典坑)
查看>>
pytorch
查看>>
pytorch(二)
查看>>
pytorch(三)
查看>>
pytorch(四)
查看>>
pytorch(5)
查看>>
pytorch(6)
查看>>
opencv 指定版本下载
查看>>
ubuntu相关
查看>>
C++ 调用json
查看>>
nano中设置脚本开机自启动
查看>>
动态库调动态库
查看>>
Kubernetes集群搭建之CNI-Flanneld部署篇
查看>>
k8s web终端连接工具
查看>>
手绘VS码绘(一):静态图绘制(码绘使用P5.js)
查看>>