微服务学习3——利用sentinel实现服务器的容错

1.Sentinel服务器容错

(本文参考黑马程序员项目)
个人仓库地址:https://gitee.com/jkangle/springboot-exercise.git


在服务器中,由于网络原因可能会出现线程阻塞的情况,当线程阻塞的时候如果有大量的请求涌入,就会造成当前的服务瘫痪,由于服务与服务之间的依赖关系,故障会出现传播的情况,这样会造成服务器的雪崩效应。


因此就需要一种容错方案。有一些常见的容错组件就很好的包含一些容错方案,例如阿里巴巴开源的一款断路由器实现sentinel.

1.简单入门使用

1.1安装sentinel控制台

安装完成后直接用java命令运行(需要注意的是这样并不会将数据永久存储,如果你运行的sentinel关闭所有的数据这些就会消失)
微服务学习3——利用sentinel实现服务器的容错_第1张图片

1.2导入依赖

在本次项目的shop-order中

<dependency>
            <groupId>com.alibaba.cloudgroupId>
            <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
            <version>2021.1version>
        dependency>
1.3修改配置文件
server:
  port: 8091

spring:
  application:
    name: service-order
  main:
    allow-circular-references: true
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
    sentinel:
      transport:
        dashboard: localhost:8080
      eager: true



  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/shop?characterEncoding=UTF-8
    username: root
    password:

  jpa:
    properties:
      hibernate:
        hbm2ddl:
          auto: update
        dialect: org.hibernate.dialect.MySQL5InnoDBDialect

可能出现如图的错误,这是因为存在依赖的循环,就是sentinel下的某一个类,循环依赖了(A中注入了B,B中也注入了A), 原因就是新版本的Spring默认不允许循环依赖!具体的分析看这位大佬的文章http://t.csdn.cn/6OeQp
微服务学习3——利用sentinel实现服务器的容错_第2张图片

1.4写一个测试案例
package org.example.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OrderController1 {
    @RequestMapping("/order/massage1")
    public String massage1(){
        return "massage1";
    }

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

1.5通过浏览器进入控制台

微服务学习3——利用sentinel实现服务器的容错_第3张图片
当启动测试案例,不停的刷新,这边就可以监控
微服务学习3——利用sentinel实现服务器的容错_第4张图片

1.6实现一个限流接口

微服务学习3——利用sentinel实现服务器的容错_第5张图片
当超过设置的流控之后就会出现
在这里插入图片描述

你可能感兴趣的:(Java学习笔记,微服务,学习,sentinel)