• SpringcloudAlibabaSentinel


    简介

    Alibaba出版,分布式系统的流量防卫兵,以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。
    特征:

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

    Sentinel 的使用可以分为两个部分:

    • 核心库(Java 客户端):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持(见 主流框架适配)。
    • 控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。
      image
      官网地址:https://github.com/alibaba/Sentinel/wiki/介绍

    代码(Sentinel是针对消费端,故服务提供端代码不需要任何修改)

    • 消费端POM引入依赖
             <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
            </dependency>
    
    • 消费端YML添加
        sentinel:
          transport:
            # 配置Sentinel dashboard地址
            dashboard: localhost:8080
            # 默认8719端口,键入被占用会自动从8719+1,直到找到未被占用的端口
            port: 8719
    
    • 添加接口
        @GetMapping("/getSentinel")
        public String getSentinel(){
            
            return "Sentinel demo!";
        }
    

    客户端启动

    客户端下载地址:
    链接:https://pan.baidu.com/s/10N9wOaeNj7PasaZKpExBaw
    提取码:lxoi
    启动命令: java -jar sentinel-dashboard-1.8.3.jar

    添加限流设置

    OpenFeign

    简介

    OpenFeign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用OpenFeign,可以做到使用HTTP请求访问远程服务,就像调用本地方法一样的,开发者完全感知不到这是在调用远程方法,更感知不到在访问HTTP请求,用法其实就是编写一个接口,在接口上添加注解即可。
    可以简单理解它是借鉴Ribbon的基础之上,封装的一套服务接口+注解的方式的远程调用器。
    官网地址:https://spring.io/projects/spring-cloud-openfeign

    代码

    • pom依赖
           <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
                <version>2.2.5.RELEASE</version>
            </dependency>
    
    • yml配置
    #设置feign客户端超时时间(OpenFeign默认支持ribbon)
    ribbon:
      #指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间
      ReadTimeout: 5000
      #指的是建立连接后从服务器读取到可用资源所用的时间
      ConnectTimeout: 5000
    # 激活Sentinel对OpenFeign的支持
    feign:
      sentinel:
        enabled: true
    
    • 添加注解
    //添加此注解
    @EnableFeignClients
    
    • 添加消费端接口
    
     @GetMapping("/getFeign/{id}")
        public String getFeign(@PathVariable Integer id){
            return service.getFeign(id+"");
        }
    
    • 添加Feign接口
    @Service
    //表示远程调用服务名称
    @FeignClient(value = "nacos-config",fallback = OpenFeignServiceImpl.class)
    public interface OpenFeignService {
    
        /**
         * 此方法表示远程调用info/{id}接口
         */
        @GetMapping("/getFeign/{id}")
        public String getFeign(@PathVariable String id);
    
    }
    
    • 添加服务降级接口
    @Component
    public class OpenFeignServiceImpl implements OpenFeignService {
        @Override
        public String getFeign(String id) {
            return "服务降级,请稍后访问!";
        }
    }
    
    • 添加服务提供端请求接口
       @GetMapping("/getFeign/{id}")
        public String getFeign(@PathVariable String id){
            return "Feign进行访问,传入ID:"+id;
        }
    

    测试

    测试成功

    Gitee地址

    https://gitee.com/zhuayng/foundation-study/tree/develop/OtherFrame/SpringCloudAlibaba/nacos-spring-cloud-example/nacos-spring-cloud-discovery-example

  • 相关阅读:
    apk应用签名获取
    git强制推送命令
    Maven 将本地jar包添加到本地仓库
    关于Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin的解决方案
    启动React-Native项目步骤
    Git初始化本地项目并提交远程仓库基础操作
    You have not accepted the license agreements of the following SDK components: [Android SDK Build-Tools 26.0.1, Android SDK Platform 26]
    kenkins安装
    Linux关闭防火墙和SELinux
    Linux下nginx安装配置
  • 原文地址:https://www.cnblogs.com/xiaofengshan/p/15889379.html
Copyright © 2020-2023  润新知