微服务实战(九)接入Sentinel 控制台可视化观测流控效果

本章主要内容

1、部署Sentinel控制台

2、控制台和SpringCloud GateWay 的连接

3、在控制台中查看流控效果

Sentinel控制台的启动

首先去Sentinel的官网下载最新的控制台Jar包

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

使用命令启动,其中 -Dserver.port=8080 用于指定 Sentinel 控制台端口为 8080

注意机器上的JDK应为1.8+

java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar

我这儿为了避免和其他应用冲突,改为9001。

我是在windows上运行的,所以我写了个bat脚本来双击执行。

cd D:\Dev\workspace_csdn\
java -Dserver.port=9001 -Dcsp.sentinel.dashboard.server=localhost:9001 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.7.1.jar

成功运行起来

默认用户密码为 sentinel / sentinel

客户端连接Sentinel控制台

我们在上一章中的gateway网关工程中集成了Sentinel客户端来对API进行了限流,接下来就可以把客户端和控制台对接起来,这样就能在控制台中可视化地观测服务限流和熔断情况了。

首先在网关工程 (combat-gateway)中引入 控制台依赖

<dependency>
	<groupId>com.alibaba.csp</groupId>
	<artifactId>sentinel-transport-simple-http</artifactId>
</dependency>

然后启动我们的网关工程,启动前在【Run】-【Run Configuartion】 中加入 VM参数

-Dcsp.sentinel.dashboard.server=127.0.0.1:9001 -Dcsp.sentinel.app.type=1

-Dcsp.sentinel.dashboard.server 配置运行中的控制台IP:端口  

-Dcsp.sentinel.app.type 设置当前应用为 网关类型  (因为我们是在gateway中使用sentinel)

然后我们针对上一章节写的接口进行测试

http://127.0.0.1:9000/nacos-provider/loadBanlance/print

以下代码实现 并发20 , 间隔1秒  的持续请求

package com.zjf.combat.sentinel;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class TestSentinel {

	public static void main(String[] args) throws InterruptedException {

		while(true) {
			for (int i = 0; i < 20; i++) {
				final int i1=i;
				new Thread(() ->{
						System.out.println((System.currentTimeMillis()/1000)+
"---"+i1+"---"+sendGetRequest("http://127.0.0.1:9000/nacos-provider/loadBanlance/print"));
				}).start();
			}
			Thread.sleep(1000);
		}
	}

	public static String sendGetRequest(String getUrl) {
		StringBuffer sb = new StringBuffer();
		InputStreamReader isr = null;
		BufferedReader br = null;
		try {
			URL url = new URL(getUrl);
			URLConnection urlConnection = url.openConnection();
			urlConnection.setAllowUserInteraction(false);
			isr = new InputStreamReader(url.openStream());
			br = new BufferedReader(isr);
			String line;
			while ((line = br.readLine()) != null) {
				sb.append(line);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			try {
				br.close();
				isr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return sb.toString();
	}
}

不同于上一章节的是,我们不用再到日志中去看了,直接在控制台中就可以看流控情况啦!

可以非常直观地看到,Sentinel把流量限制在 5 QPS (每秒允许5次请求),其余的15 都被限制了。

发布了30 篇原创文章 · 获赞 123 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u011177064/article/details/104300290