Sentinel简介


Sentinel是阿里开源的项目,提供了流量控制,熔断降级,系统负载包含等多个维度来保障服务之间的稳定性。

Sentinel主要特性:

Sentinel与Hystrix的区别:

关于Sentinel与Hystrix的区别详细:https://developer.aliyun.com/article/633786

总结:

 Hystrix常用的线程池隔离会造成线程上下文切换的overhead比较大;Hystrix使用的信号量对某个资源调用的并发数进行控制,效果不错,但是无法对满调用进行自动降级;Sentinel通过并发线程数的流量控制提供信号量隔离的功能。此外Sentinel支持熔断降级维度更多,可对多种指标进行流控、熔断,且提供了实时监控和控制面板,功能更为强大。

Sentinel分为两个部分:

  • 核心库(java客户端)不依赖任何框架/库,能够运行于所有java运行时环境,同时对Dubbo/Spring Cloud等框架也有较好的支持。
  • 控制台(Dashboard)基于Spring Boot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器。

1,下载sentinel Dashboard,https://github.com/alibaba/sentinel/releases

2,cmd 运行java -jar sentinel-dashboard-1.7.1.jar。

3,访问http://localhost:8080,账户密码都是sentinel。

 简单使用

1,新建项目

2,POM文件

    <dependencies>
        <!--nacos客户端 服务注册-->
        <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
        <!--sentinel 流量监控,服务熔断,服务降级等-->
        <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>
        <!--持久化-->
        <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId> </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--web 监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>

3,YML文件

server:
  port: 6001
spring:
  application:
    name: sentienel-dashboard-service
 cloud: nacos: discovery: #nacos服务注册中心地址 server-addr: localhost:8848 sentinel: transport: #sentinel dashboard 地址 dashboard: localhost:8080 #默认8179端口 port: 8179

#监控暴露 启动服务访问http://localhost:port/actuator/sentinel会返回json信息,说明已经整合好了Sentinel
management:
  endpoints:
    web:
      exposure:
        include: "*"

4,主启动类

@SpringBootApplication
@EnableDiscoveryClient public class SentinelDashboard6001Main {
    public static void main(String[] args) {
        SpringApplication.run(SentinelDashboard6001Main.class,args);
    }
}

5,业务类

@RestController
public class SentinelController {
    @GetMapping("/testA")
    public String getA(){
        return "test A";
    }

    @GetMapping("/testB")
    public String getB(){
        return "test B";
    }
}

访问http://localhost:6001/testB

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM