微服务之Sentinel-第一章-初识入门

Sentinel概述

Sentinel (分布式系统的流量防卫兵) 是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点, 从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。
Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景, 例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。

Sentinel核心分为两个部分:

核心库(Java 客户端):能够运行于所有 Java 运行时环境,同时对Dubbo /Spring Cloud 等框架也有较好的支持。
控制台(Dashboard):基于 Spring Boot 开发,打包后可以直接运行。

一、雪崩问题

微服务调用链路中的某个服务故障,引起整个链路中所有微服务都不可用,这就是雪崩。
微服务之Sentinel-第一章-初识入门_第1张图片

1、解决雪崩问题的常见方式有四种

超时处理(服务故障处理)

设定超时时间,请求超过一定时间没有相应就返回错误信息,不会无休止的等待。
该方法只能缓解,不能根本解决问题。
微服务之Sentinel-第一章-初识入门_第2张图片

舱壁模式(服务故障处理)

限定每个业务能使用的线程数,避免耗尽整个tomcat的资源,因此也叫线程隔离
微服务之Sentinel-第一章-初识入门_第3张图片

熔断降级(服务故障处理)

有断路器统计业务执行的异常比例,如果超出阈值则会熔断该业务,拦截访问该业务的一切请求。
微服务之Sentinel-第一章-初识入门_第4张图片

流量控制(瞬间高并发预防)

显示业务访问的QPS,避免服务因流量的突增而故障。
属于预防手段。
微服务之Sentinel-第一章-初识入门_第5张图片

2、总结

什么是雪崩

微服务调用链路中的某个服务故障,引起整个链路中所有微服务都不可用。

如何避免因瞬间高并发流量而导致服务故障

  • 流量控制

如何避免因服务故障引起的雪崩问题

  • 超时处理
  • 线程隔离
  • 降级熔断

二、 服务保护技术对比

微服务之Sentinel-第一章-初识入门_第6张图片

三、认识Sentinel

Sentinel是分布式系统的流量卫兵,Sentinel以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。是阿里巴巴开源的一款微服务流量控制组件。
官网地址:https://sentinelguard.io/zh-cn/index.html
Sentinel具有以下特征:
微服务之Sentinel-第一章-初识入门_第7张图片

四、安装Sentinel

1、方法一:使用jar

下载

访问官网:https://github.com/alibaba/Sentinel/releases

sentinel-dashboard-1.8.4.jar

运行

端口默认是8080

java -jar sentinel-dashboard-1.8.4.jar
# 设置参数尤其是指定端口,必须两个都指定
nohup  java -Dserver.port=8858 -Dcsp.sentinel.dashboard.server=localhost:8858 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.4.jar &

命令详解:

1.nohup command &  #在后台运行
2.-Dserver.port=8858 #设置sentinel dashboard服务端口是8858
3.-Dcsp.sentinel.dashboard.server=localhost:8858 :# 指定要被哪个控制台监控(这里指定的是自己监控自己)
4.-Dproject.name=sentinel-dashboard # 指定实例名称(名称会在控制台左侧以菜单显示) 
#5,6不设置的时候初始账号密码都是sentinel
5.-Dsentinel.dashboard.auth.username=sentinel # 设置登录的帐号为:sentinel 
6.-Dsentinel.dashboard.auth.password=123456 # 设置登录的密码为:123456

新建start.bat



@echo off

cd E:\Program Files\Java\jdk1.8.0_131\bin

java -jar -Xms256m -Xmx256m -Dserver.port=8858 -Dcsp.sentinel.dashboard.server=127.0.0.1:8858 E:\dev\sentinel\sentinel-dashboard-1.8.4.jar
pause

访问

localhost:8080,默认的账号密码是sentinel
微服务之Sentinel-第一章-初识入门_第8张图片

修改端口、账号、密码

微服务之Sentinel-第一章-初识入门_第9张图片

2、方法二:docker安装

参考:https://blog.csdn.net/Blueeyedboy521/article/details/124599844
docker run --name sentinel -p 8858:8858 -d bladex/sentinel-dashboard:latest

五、微服务整合sentinel

1.引入sentinel依赖:


<dependency>
    <groupId>com.alibaba.cloudgroupId>
    <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
dependency>

2. 配置控制台地址

spring:
  cloud:
    sentinel:
      transport:
        dashboard: localhost:8080 # sentinel控制台地址

3.访问微服务的任意端点,触发sentinel监控

比如访问http://localhost:8088/order/101
如果出现sentinel 簇点链路为空白–不显示资源
微服务之Sentinel-第一章-初识入门_第10张图片
sentinel 必须跟微服务处在同一个局域网中。
因为 sentinel 机器列表里显示的服务IP地址为内网地址。
(While Nacos 可以在内网,也可以在外网)

正确的如下:微服务之Sentinel-第一章-初识入门_第11张图片
微服务之Sentinel-第一章-初识入门_第12张图片

你可能感兴趣的:(SpringCloud,微服务,java,spring,cloud)