前言
上一篇 SpringCloud Alibaba 入坑(二)Nacos 配置中心
上篇文章介绍了nacos作为配置注册中心,本文将介绍下组件Sentinel的用法。
服务雪崩
微服务架构中经常会出现多个服务级联调用的情况,如下图所示:A作为服务提供者,B作为服务消费者,B调用A,C又调用B,D又调用C,如果A出现问题,那么可能导致B调用失败,B出现问题又会导致C调用失败,这样问题不断向上延伸,导致整个系统不可用,也就是服务雪崩了。
导致服务雪崩原因有很多,比如:流量激增、缓存问题、硬件故障、程序bug、线程长时间等待等。
Sentinel是啥?
Sentinel翻译过来就是哨兵,从字面上理解就是国家如果出现了任何的状况,他会第一时间出现,把危险拦在外面。
阿里巴巴的Sentinel组件就是分布式系统的哨兵,它从流量控制、熔断降级、负载保护等多个方面对系统进行保护。
Sentinel的主要特性:
Sentinel VS Hystrix
在SpringCloud Netflix中有一个类似的组件:Hystrix 豪猪,下面我们把哨兵和豪猪进行对比:
可以看到Sentinel的功能更加完善,它的最大特点是有一套Web控制台界面,方便监控和配置各种限流规则,而且Hystrix早已停止更新了,显然Sentinel是它的最佳替代者。
安装Sentinel
到Sentinel官网下载jar包,这里使用的版本是1.8.0
https://github.com/alibaba/Sentinel/releases
运行Sentinel的前提是安装了Java环境,Windows系统中打开cmd命令行,切换到jar包所在目录,输入:
java -jar sentinel-dashboard-1.8.0.jar
就可以看到Sentinel的启动日志
在浏览器输入 http://localhost:8080 就可以看到控制台界面,账号密码默认都是sentinel
登录进去会发现:啥都没有
使用Sentinel
下面我们在之前的nacos案例基础上加入Sentinel,还没了解过nacos的,上面有链接哦。
1、给provider-service服务添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
2、application.yml
server:
port: 8888
spring:
application:
name: provider-service
cloud:
nacos:
discovery:
server-addr: 192.168.7.188:8848
sentinel:
transport:
dashboard: 192.168.7.188:8080 # sentinel 控制台的地址
port: 8719 # sentinel的端口
management:
endpoints:
web:
exposure:
include: '*'
3、添加测试的控制器
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello(){
return "hello sentinel!!";
}
}
4、启动nacos服务,再启动sentinel控制台,然后启动provider-service服务
在nacos里面可以看到该服务
5、在浏览器上输入:http://localhost:8888/hello
然后我们会发现Sentinel的控制台,出来东西了
这就表示我们成功启动了Sentinel,并且用它监控了我们服务的接口调用情况。
总结
今天简单介绍了Sentinel这个哨兵的入门使用方法,当然更重要的是如何使用Sentinel来实现限流、熔断、降级等操作,这将在下篇文章中介绍,如果文章对你有帮助,点个赞吧:)
大家如果需要学习其他Java知识点,戳这里 超详细的Java知识点汇总