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

1.Sentinel服务器容错

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


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


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

1.简单入门使用
1.1安装sentinel控制台

安装完成后直接用java命令运行(需要注意的是这样并不会将数据永久存储,如果你运行的sentinel关闭所有的数据这些就会消失)
在这里插入图片描述

1.2导入依赖

在本次项目的shop-order中

<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            <version>2021.1</version>
        </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
在这里插入图片描述

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通过浏览器进入控制台

在这里插入图片描述
当启动测试案例,不停的刷新,这边就可以监控
在这里插入图片描述

1.6实现一个限流接口

在这里插入图片描述
当超过设置的流控之后就会出现
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值