最近接触spring cloud alibaba,在学习sentinel限流这一节,通过sentinel-dashboard做控制台,教程写的很详细,下控制台jar包(sentinel-dashboard-1.6.0.jar 最新版下载地址:https://github.com/alibaba/Sentinel/releases)、代码敲、搞配置,一切进行的灰常顺利。然后是启动测试,这个我知道java -jar sentinel-dashboard-1.6.0.jar自信,默认端口号8080,浏览器输入localhost:8080,页面出来了(这么简单的事)。
看到这庆幸刚才的文档看的认真,这是1.6新增的登陆页面,用户名密码默认:sentinel(启动jar的时候可以通过命令重置用户密码端口号等信息,如:-Dserver.port=8888 -Dsentinel.dashboard.auth.username=sentinel -Dsentinel.dashboard.auth.password=123456 -Dserver.servlet.session.timeout=7200等等7200单位秒)。登陆成功,漂亮!
哎哟喂,空空如也,我忘记起服务了。。。。
赶紧客户端走起。
按教程来,引入关键jar包spring.cloud.sentinel.transport.dashboard,然后配置文件指定服务名,服务端口,控制台端口,客户端合控制台通讯的端口默认是8719改不改看自己,反正我没改。
spring.application.name=alibaba-sentinel-datasource-nacos server.port=6001 # sentinel dashboard spring.cloud.sentinel.transport.dashboard=192.168.100.145:8849
客户端也很简单,启来,然后访问几次接口之后盯着我的控制台准备欣赏优美曲线,想着怎么设置限流策略,好好玩一下。
结果刷新Sentinel 控制台毫无变化,对了 它是懒加载的再等一下多刷几次,应该会出来了。结果等了几分钟了咋回事,还不出来。看控制台日志没报错啊,一切正常。噫,奇怪了什么情况,是不是别人写的教程少了什么东西,把他的示例代码下下来试试,跑起来它的代码也是一样的在我的sentinel控制台不会出现服务列表 ,翻看sentinel官方文档,发现我们好像没用错啊。。。。。。中间穿插别的事情去了。今天终于闲下来思考一下到底怎么回事,期间联系了教程的作者他说他本地跑示例代码没问题,我就想啊会不会是我的spring.cloud.sentinel.transport.dashboard版本问题呢,这时想到当时整合这个jar包的时候出现一个奇怪的现象,必须要我指定它的版本否则pom报错,当时就给了一个合父依赖一样的版本号跑起来一切正常就没在意了。那试着改一下这个版本给它升级一下试试。重复慢动作:重启客户端,访问接口,刷新控制台,见证奇迹的时刻。。。
这个页面期待了几天了。。。。。真的是jar包的原因,为什么不报错呢/(ㄒoㄒ)/~~
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-alibaba-sentinel --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> <version>0.9.0.RELEASE</version> </dependency>
经测试这个的版本不能用低了。。。。。。。(经后续学习发现还是得用spring的才行,阿里的在后续集成中(sentinel+nacos)可能会有其他问题)
简单限流实现:点击簇点链路--流控--
- 阈值类型选择:QPS
- 单机阈值:2
综合起来的配置效果就是,该接口的限流策略是每秒最多允许2个请求进入。
保存后看流限规则:
然后刷新接口,验证一下限流效果
完整示例代码可以看下面链接:
本人准备这段时间整理一套spring cloud的系列文章,感兴趣的老板可以关注一下,大家一起学习交流。