使用场景演示 | 学习笔记

简介: 快速学习使用场景演示,介绍了使用场景演示系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【微服务实战-服务熔断 - Sentinel 使用场景演示】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/618/detail/9424


使用场景演示

 

内容介绍:

一、 启动控制台

二、 Spring Cloud Web 应用接入

三、 Spring Cloud Gateway 网关接入

四、 Dubbo 服务接入

五、 手动埋点

 

一、 启动控制台

首先要演示这几个场景,需要启动 sentinel 的控制台,从控制台上查看实时的监控限流效果,并且在控制台上实时的配置流控降级规则。

下载控制台 jar 包

https://github.com/alibaba/Sentinel/releases

设置启动参数并启动

java -Dserver.port=8080 I

-Dcsp.sentinel.dashboard.server=localhost:8080 l

-Dproject.name=sentinel-dashboard l

-jar sentinel-dashboard.jar

访问 sentinel 控制台

http://localhost:8080

访问控制台后出现的登录页面,默认账号、密码都是 sentinel

操作演示:

在命令行里输入控制台的启动参数,通过 jar 包的形式来启动控制台。

控制台启动成功以后,可以在浏览器中访问对应的地址。输入默认的用户名和密码,默认的用户名和密码都是 sentinel。

登录以后,就可以看到 sentinel 的控制台。sentinel 的控制台自身也作为一个普通的web 应用接入 sentinel,所以可以在 sentinel 的控制台上看到控制台本身的应用。可以看到 sentinel 控制台,所有的外部接口以及一些外部接口的实时监控。

 

二、 Spring Cloud Web 应用接入

Spring Cloud Web 应用接入 sentinel 只需要利用 Spring Cloud 的阿里巴巴即可快速接入 sentinel。

首先引入依赖

com.alibaba.cloud

spring-cloud-starter-alibaba-sentinel

2.1.0.RELEASE


通过 Spring 配置文件配置 Sentinel 相关参数

spring.application.name=web-api-demo

spring.cloud.sentinel.transport.dashboard=localhost:8080

spring.cloud.sentinel.filter.url-patterns=/*

配置控制台的地址配置以后 spring cloud 外部应用可以自动的接入 sentinel 的控制台。

Spring Cloud 阿里巴巴支持 Spring Web、Spring WebFlux、RestTemplate

Demo 地址: https//github.com/sentinel-group/sentinel-guides/tree/master/sentinel-guide-spring-cloud

演示 Spring Cloud Web 应用的 Demo:

根据 Demo 地址上下载 demo 源码,demo 应用一共分为几个模块,包括一天要演示的全部的场景。Demo-gateway 是一个 spring cloud gateway 的网关,作为最上层的流量入口,去访问底层的一些服务。

Web-api-demo,则是我们要演示的外部应用。dubbo- provider 则会启动一个dubbo 的服务提供端。Web 服务会通过 dubbo 的电容端来调 dubbo- provide,这今天 demo 的一个基本结构。

演示 Web-api-demo:

Web-api-demo 是一个基本的 web 应用。web 应用中引入了 Spring Cloud、阿里巴巴、sentinel。引入之后,在 spring cloud 的配置文件中进行相关的配置。

演示 web 应用的限流:

首先,由于 web 应用需要调 dubbo 服务,因此先启动 dubbo- provide 端。启动以后,再启动 web 应用,web 应用里的 controller 有两个 API。在 web 应用启动之后,可以调这两个 API。API 在9669端口,调 demo Time 这个 API 可以看到有成功的返回值。

刚才已经在 spring 的配置文件中配置了电脑的相关配置。刷新控制台就能看到 web应用。

在 web 应用中能看到刚才第二个 web 接口。由于 web 应用,也是通过调 double 服务端的形式来返回值的,所以也能看到对应的 double 服务。

若希望对 default 进行限流。可以在+流控配置一个流控规则。

新增流控规则

资源名:/demo/time

针对来源:default

阈值类型:QPS

单机阈值:1

是否集群:否

快速地访问 demo Time,可以看到返回了 Blocked by sentinel ( flow limiting)的限流的这样一个默认页面,代表流量被限制。再来多刷新几次,可以看到限流是生效的。

可以在实时监控页面。看到刚才的请求的请求调量。它是横为一的。代表我们的流量被限制到了 QPS 为一的。

 

三、 Spring Cloud Gateway 网关接入

Spring Cloud Gateway 网关接入只需要在 Spring Cloud Gateway 中引入 spring cloud starter alibaba sentinel 以及 spring cloud alibaba Gateway 这两个依赖。

引入依赖,自动生效

com.alibaba.cloud

spring-cloud-starter-alibaba-sentinel

2.1.0.RELEASE


com.alibaba.cloud

spring-cloud-alibaba-sentinel-gateway

2.1.0.RELEASE


引入这两个以后,Spring Cloud Gateway 网关就会自动接入 sentinel,在配置文件中配置的路由会自动纳入 sentinel 的管控之中。

接入控制台还需要在 spring 配置文件中配一下 sentinel 的相关参数,指定控制台的地址以及应用名称。

通过 Spring 配置文件配置 Sentinel 相关参数

spring.application.name=demo-gateway

spring.cloud.sentinel.transport.dashboard=localhost:8080

Demo地址: https/Igithub.com/sentinel-group/sentinel-guides/tree/master/sentinel-guide-spring-cloud

支持路由维度和自定义API维度的监控和限流

演示Spring Cloud Gateway网关接入sentinel的使用:

通过 Gateway 获取 Demo,Spring Cloud Gateway 应用,是一个非常简单的应用,直接通过依赖接入 spring cloud gateway。同时引入 Spring Cloud 的阿里巴巴的相关依赖,直接接入 sentinel 的相关知识。在 spring 的配置文件中,配置了应用名,以及路由。

可以看到有两个路由, foo-service-route 路由和 httpbin-route 路由。

访问8090/demo/time,访问几次之后,可以在控制台上看到 gateway 的应用,以及对 foo-service-route 路由的访问量。

设置 demo-gateway 的流控规则

API 类型:Route ID

API 名称:foo-service-route

针对请求属性: 打开

参数属性:URL 参数

URL 参数名称:ua

阈值类型:QPS

QPS 阈值:1

间隔: 2秒

流控方式:快速失败

Burst size:0

设置之后,访问8090/demo/time,因为没有带参数,故限流无效,带上参数后,限流生效。

这就是 gateway 网关限流基本的使用。

 

四、 Dubbo 服务接入

Dubbo 服务接入只需要引入 adapter 依赖。

引入整合依赖,自动接入 Sentinel

com.alibaba.csp

sentinel-apache-dubbo-adapter

1.6.3


引入控制台通信相关依赖

com.alibaba.csp

sentinel-transport-simple-http

1.6.3


设置启动参数,接入控制台

-Dcsp.sentinel.dashboard.server=localhost:8080

-Dproject.name=dubbo-provider

image.png

Demo地址: https:/Igithub.com/sentinel-group/sentinel-guides/tree/master/sentinel-guide-spring-cloud

Dubbo Provider

QPS 模式限流

按调用来源限流

Dubbo Consumer

控制调用的并发数

服务降级

dubbo-provider 是 dubbo 的提供方,提供 hello 和 time 2个服务

访问外部接口,在 foo-dubbo-provider 中的簇点链路,可以看到应用下的实时调用数据。

Dubbo 生产支配支持服务和服务方法两个力度的流控降级。

foo-dubbo-provider 可以对服务占用进行限制以及降级的服务。

在 dubbo-provider 端配置 K8s 流控规则,保护流控本身。

在 Consumer 端可以配置流控和流控降级规则。


五、手动埋点(手动定义资源)

未安装 sentinel 和 dubbo,却想使用流控降级的方法。

引入依赖

com.alibaba.cloud

spring-cloud-starter-alibaba-sentinel

2.1.0.RELEASE


通过 API 或注解方式埋点

原始 API: SphU.entry(resource),埋点的资源名即为控制台上的资源名。

注解:@SentinelResource

Entry entry = null;

try {

entry = SphU.entry("HelloWorld");

/受保护的业务逻辑

} catch (BlockException e){

//限流处理逻辑

// fallback

} finally {

If (entry != null){

entry.exit();}

@SentinelResource(blockHandler = "fooBlockHandler"")

public String hello(String msg){return "hello " +msg; }

相关文章
Threejs入门进阶实战案例(6):对象的通用属性/函数
Threejs入门进阶实战案例(6):对象的通用属性/函数
51 0
|
6月前
|
Android开发 开发者 Kotlin
FragmentFactory :功能详解&使用场景
FragmentFactory :功能详解&使用场景
160 0
|
6月前
|
前端开发 数据处理
【前端学习】—多种方式实现数组拍平(十一)
【前端学习】—多种方式实现数组拍平(十一)
|
NoSQL Java Redis
【项目实战典型案例】15.登录之后我加入的课程调用接口报错
【项目实战典型案例】15.登录之后我加入的课程调用接口报错
【项目实战典型案例】15.登录之后我加入的课程调用接口报错
|
JSON 小程序 JavaScript
小程序学习笔记 | 如何实现左滑删除效果?
小程序学习笔记 | 如何实现左滑删除效果?
|
前端开发
前端学习案例-一个简单的++ --的原生问题
前端学习案例-一个简单的++ --的原生问题
38 0
前端学习案例-一个简单的++ --的原生问题
|
前端开发
前端学习案例1-a++和++a区别
前端学习案例1-a++和++a区别
80 0
前端学习案例1-a++和++a区别
|
前端开发
前端学习案例1-实战例子的介绍
前端学习案例1-实战例子的介绍
87 0
前端学习案例1-实战例子的介绍
|
前端开发
前端学习案例2-对象的封印
前端学习案例2-对象的封印
40 0
前端学习案例2-对象的封印
|
前端开发
前端学习案例18-对象封印
前端学习案例18-对象封印
41 0
前端学习案例18-对象封印