最近管点闲事浪费了不少时间,感谢网友<代码> libinwalan> 代码的留言提醒。及时纠正路线,继续跟大家一起学习春云阿里巴巴。
纳科作为注册中心和配置中心的基础教程,到这里先告一段落,后续与其他结合的内容等讲到的时候再一起拿出来说,不然内容会有点跳跃。接下来我们就来一起学习一下春云阿里巴巴下的另外一个重要组件:哨兵。
前哨的官方标题是:分布式系统的流量防卫兵。从名字上来看,很容易就能猜到它是用来作服务稳定性保障的。对于服务稳定性保障组件,如果熟悉春云的用户,第一反应应该就是Hystrix。但是比较可惜的是Netflix已经宣布对Hystrix停止更新。那么,在未来我们还有什么更好的选择呢?除了春云官方推荐的resilience4j之外,目前春云阿里巴巴下整合的哨兵也是用户可以重点考察和选型的目标。
前哨的功能和细节比较多,一篇内容很难介绍完整,所以下面我会分多篇来一一介绍前哨的重要功能。本文就先从限流入手,说说如何把哨兵整合到春云应用中,以及如何使用哨兵仪表板来配置限流规则。通过这个简单的例子,先将这一套基础配置搭建起来。
前哨的使用分为两部分:
-
<李> sentinel-dashboard:与hystrix-dashboard类似,但是它更为强大一些。除了与hystrix-dashboard一样提供实时监控之外,还提供了流控规则,熔断规则的在线维护等功能。李>
<李>客户端整合:每个微服务客户端都需要整合铁卫军的客户端封装与配置,才能将监控信息上报给仪表板展示以及实时的更改限流或熔断规则等。李>
下面我们就分两部分来看看,如何使用Sentienl来实现接口限流。
本文采用的阿里巴巴版春云本是0.2.1,可以查看依赖发现当前版本使用的是铁卫军1.4.0。为了顺利完成本文的内容,建议挑选同版本的哨兵仪表板来使用是最稳妥的。
下载地址:sentinel-dashboard-1.4.0。jar
其他版本:哨兵/发布
同以往的春云教程一样,这里也不推荐大家跨版本使用,不然可能会出现各种各样的问题。
通过命令启动:
java jar sentinel-dashboard-1.4.0.jar >之前sentinel-dashboard不像纳科的服务端那样提供了外置的配置文件,比较容易修改参数。不过不要紧,由于sentinel-dashboard是一个标准的弹簧引导应用,所以如果要自定义端口号等内容的话,可以通过在启动命令中增加参数来调整,比如:<代码> -Dserver。端口=8888> 代码。
默认情况下,sentinel-dashboard以8080端口启动,所以可以通过访问:<代码> localhost: 8080> 代码来验证是否已经启动成功,如果一切顺利的话,可以看到如下页面:
第一步:在春云应用的<代码>砰的一声。xml> 代码中引入春云阿里巴巴的哨兵模块:
& lt; dependencies> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-web & lt;/dependency> & lt; dependency> & lt; groupId> org.springframework.cloud & lt; artifactId> spring-cloud-starter-alibaba-sentinel & lt;/dependency> & lt; dependency> & lt; groupId> org.projectlombok & lt; artifactId> lombok & lt; version> 1.18.2 & lt; optional> true & lt;/dependency> & lt; dependency> & lt; groupId> org.springframework.boot & lt; artifactId> spring-boot-starter-test & lt; scope> test & lt;/dependency> & lt;/dependencies>第二步:在春云应用中通过<代码> spring.cloud.sentinel.transport。仪表板> 代码参数配置哨兵仪表板的访问地址,比如:
spring.application.name=alibaba-sentinel-rate-limiting server.port=8001 #哨兵仪表板 spring.cloud.sentinel.transport.dashboard=localhost: 8080 >之前第三步:创建应用主类,并提供一个其他接口,比如:
@SpringBootApplication 公开课TestApplication { 公共静态void main (String [] args) { SpringApplication.run (TestApplication.class, args); } @Slf4j @RestController 静态类TestController { @GetMapping (“/hello”) 公共字符串hello () { 返回“didispace.com”; } } }春云阿里巴巴使用哨兵实现接口限流