服务容错--sentinel入门

目录

 

1、服务雪崩效应

2、常见容错方案

3、常见的容错组件

4、Sentinel入门

4.1、什么是Sentinel

4.2、微服务集成Sentinel

4.3、安装Sentinel控制台

4.3.1、下载jar包

4.3.2、启动控制台

4.3.3、微服务接入Sentinel控制台

4.3.4、实现一个接口的限流


1、服务雪崩效应

在分布式系统中,由于网络原因或者自身的原因,服务一般无法保证100%可用。如果一个服务出现了问题,调用这个服务就会出现线程阻塞的情况。此时若有大量的请求涌入,就会出现多条线程阻塞等待,进而导致服务瘫痪。

由于服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩效应”。

2、常见容错方案

雪崩发生的原因多种多样,我们无法从源头上杜绝雪崩的发生,只有做好足够的容错,保证在一个服务发生问题时,不会影响到其它服务的正常运行。

常见的容错思路

服务容错--sentinel入门_第1张图片

服务容错--sentinel入门_第2张图片

服务容错--sentinel入门_第3张图片服务容错--sentinel入门_第4张图片

服务容错--sentinel入门_第5张图片

3、常见的容错组件

服务容错--sentinel入门_第6张图片

服务容错--sentinel入门_第7张图片

4、Sentinel入门

4.1、什么是Sentinel

Sentinel(分布式系统的流量防卫兵)是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。

Sentinel具有以下特征:

  • 丰富的应用场景: Sentinel承接了阿里巴巴进10年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。
  • 完备的实时监控:Sentinel提供了实时的监控功能。通过控制台可以看到接入应用的单台机器秒级数据,甚至500台以下规模的集群的汇总运行情况。
  • 广泛的开源生态:Sentinel提供开箱即用的与其它开源框架/库的整合模块,例如与Spring Cloud、Dubbo、gRPC的整合。只需要引入相应的依赖并进行简单的配置即可快速地接入Sentinel。
  • 完善的SPI扩展点:Sentinel提供简单易用、完善的SPI扩展接口。您可以通过实现扩展接口来快速的定制逻辑。例如定制规则配置、适配动态数据源等。

Sentinel分为两个部分:

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

4.2、微服务集成Sentinel

为微服务集成Sentinel非常简单,只需要加入Sentinel的依赖即可。

        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-sentinel
        

 

至此,微服务集成Sentinel就完成了。下面新建一个Controller用于测试:

package cn.jack.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class OrderController3 {

    @RequestMapping("/order/message1")
    public String message1() {
        return "message1";
    }

    @RequestMapping("/order/message2")
    public String message2() {
        return "message2";
    }
}

4.3、安装Sentinel控制台

Sentinel提供一个轻量级的控制台,它提供机器发现、单机资源实时监控以及规则管理等功能。

4.3.1、下载jar包

下载地址:https://github.com/alibaba/Sentinel/releases

服务容错--sentinel入门_第8张图片

4.3.2、启动控制台

# 直接使用jar命令启动项目(控制台本身是一个SpringBoot项目)
java -Dserver.port=9393 -Dcsp.sentinel.dashboard.server=localhost:9393 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.0.jar

通过浏览器访问http://localhost:9393/进入控制台。默认用户名密码是sentinel/sentinel

服务容错--sentinel入门_第9张图片

4.3.3、微服务接入Sentinel控制台

修改微服务(我的微服务是shop-order)的配置文件application.yml,在里面加入有关控制台的配置

spring:
    cloud:
        sentinel:
            transport:
                port: 9394  # 跟sentinel控制台交互的端口,随意指定一个未使用的端口即可
                dashboard: localhost:9393 # 指定控制台服务的地址

启动微服务,就可以在sentinel控制台看到我们的微服务了。(如果刷新后还是看不到,先访问微服务的任意接口,然后再刷新sentinel控制台页面)

服务容错--sentinel入门_第10张图片

4.3.4、实现一个接口的限流

通过控制台为/order/message1接口添加一个流控规则

服务容错--sentinel入门_第11张图片

服务容错--sentinel入门_第12张图片

通过浏览器快速频繁访问message1接口(ctrl+r),观察效果

服务容错--sentinel入门_第13张图片

 

你可能感兴趣的:(微服务,sentinel,服务容错,接口限流,微服务)