码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • springcloudalibaba架构(2):Sentinel服务容错与使用入门


    文章目录

    • 前言
    • Sentinel
      • sentinel-dashboard控制台
      • 微服务集成Sentinel

    前言

    在微服务架构中,我们将业务拆分成很多的服务,服务与服务之间可以互相调用,但是由于一些原因,服务并不能保证服务的100%可用,如果单个服务出现问题,调用这个服务就会出现网络延迟,此时如果有大量的请求,会形成任务堆积,导致服务雪崩。

    如何解决服务雪崩?
    Spring Cloud提供了一系列的组件。

    • Hystrix(已闭源): Netflix开源的延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,提供系统的可用性和容错性。
    • Resilience4J:一款非常轻量、简单,并且文档非常清晰、丰富的熔断工具,这是Hystrix官方推荐的替代品。不仅如此,Resilicence4j还原生支持Spring Boot 1.x/2.x,而监控也支持和prometheus等多款主流产品进行整合。
    • Sentinel :阿里开源的一款断路器实现,被阿里大规模使用,稳定可靠。

    本章代码已分享至Gtiee :https://gitee.com/lengcz/springcloudalibaba01.git

    Sentinel

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

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

    sentinel-dashboard控制台

    下载地址:https://github.com/alibaba/Sentinel/releases
    在这里插入图片描述
    启动dashboard,sentinel-dashboard 是一个springboot项目

    java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard-1.8.4.jar
    
    • 1

    直接访问 http://localhost:8080/,默认账号名sentinel,密码是sentinel
    在这里插入图片描述

    微服务集成Sentinel

    在order模块中

    1. 添加依赖(这一步已经整合好了sentinel)
     <dependency>
                <groupId>com.alibaba.cloudgroupId>
                <artifactId>spring-cloud-starter-alibaba-sentinelartifactId>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    1. 添加一个测试的controller
    /**
     * 服务容错示例
     */
    @RestController
    @Slf4j
    public class HelloController {
    
        @GetMapping("/hello1")
        public String hello() {
            log.info("say hello------------1");
            return "hello1";
        }
    
        @GetMapping("/hello2")
        public String hello2() {
            log.info("say hello------------2");
            return "hello2";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    1. 配置dashboard地址
    spring:
      cloud:
        sentinel:
          transport:
            port: 12345 #与控制台交流的端口,可随意指定,不冲突即可。
            dashboard: localhost:8080 # sentinel-dashboard的地址
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. 启动服务,dashboard没有显示我们的应用,因为dashboard使用的懒加载方式,需要请求一次order服务的接口(任意接口),即可。

    在这里插入图片描述
    可以看到实时请求的数据
    在这里插入图片描述

  • 相关阅读:
    dragTabs(vue)
    【微信小程序系列:四】前端利用wx.setStorageSync缓存设置有效时间
    Fedora安装并配置开启SSH服务相关命令
    hcie数通和云计算选哪个好?
    iNeuOS工业互联网操作系统,增加搜索应用、多数据源绑定、视图背景设置颜色、多级别文件夹、组合及拆分图元
    netty系列之:kequeue传输协议详解
    Cesium 实战 - 3dtile 数据与 I3S(ArcGIS 服务) 数据设置透明
    2022低代码发展趋势展望解读|全栈式低代码云平台将是行业标杆
    pxb 使用物理备份恢复数据库
    工具类Utils
  • 原文地址:https://blog.csdn.net/u011628753/article/details/126159621
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号