简单使用nacos、openFeign和Sentinel(建议看源码和截图一起看)

1、Nacos

1、下载nacos,可以从结尾获取压缩包和源码

2、下方图例是两个服务程序注册成功到注册中心,并且配置从配置中心拉取,成功访问数据库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、nacos中配置项里的内容

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: "jdbc:mysql://127.0.0.1:3306/train?characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai"
    username: root
    password: ...
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher


mybatis-plus:
  mapper-locations: classpath*:/mapper/*Mapper.xml
  type-aliases-package: com.fs.train.po
  configuration:
    map-underscore-to-camel-case: true

logging:
  level:
    com.fs.train: debug

swagger:
  enable: true

#数据中台HRestful API请求
feign:
  client:
    config:
      default:
        #日志打印级别
        loggerLevel: basic
        #跨服务接口请求超时
        readTimeout: 20000
        #跨服务请求连接超时
        connectTimeout: 20000



2、openFeign

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、Sentinel

(1)从官网下载 jar 包 下载地址 (或者结尾地址去拿但和你版本不一定匹配)https://github.com/alibaba/Sentinel/releases

首先寻找合适的版本 可以参考 阿里官方的版本对应 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

我的是这个版本
在这里插入图片描述
在这里插入图片描述
(2)启动

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

在这里插入图片描述
在这里插入图片描述
账号/密码: sentinel/sentinel

(3)结合SpringBoot配置,并开启规则持久化

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>

<!--        独立引入如下依赖,来申明 sentinel 的规则数据存储在 nacos 中。-->
<dependency>  
 <groupId>com.alibaba.csp</groupId>  
 <artifactId>sentinel-datasource-nacos</artifactId> 
</dependency>

bootstrap.yml

server:
  port: 9001
spring:
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848
        namespace: c93d6194-9008-4c77-a0b0-e36db74e438e
      config:
        server-addr: localhost:8848
        namespace: c93d6194-9008-4c77-a0b0-e36db74e438e
        file-extension: yaml #指定配置格式
    sentinel:
      transport:
        port: 9003
        dashboard: localhost:9003
      datasource:
        # 名称随意
        flow:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-flow-rules
            groupId: SENTINEL_GROUP
            rule-type: flow
        degrade:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-degrade-rules
            groupId: SENTINEL_GROUP
            rule-type: degrade
        system:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-system-rules
            groupId: SENTINEL_GROUP
            rule-type: system
        authority:
          nacos:
            server-addr: localhost:8848
            dataId: ${spring.application.name}-authority-rules
            groupId: SENTINEL_GROUP
            rule-type: authority
  application:
    name: ncop-service-provider
  profiles:
    active: dev

注意:
亲测使用了改造后的sentinel包,配置sentinel.datasource下规则的namescape和data-type无效!!!不能配置这两玩意

nacos配置中心的流控规则

[
  {
    // 资源名
    "resource": "testBlockHandler",
    // 针对来源,若为 default 则不区分调用来源
    "limitApp": "default",
    // 限流阈值类型(1:QPS;0:并发线程数)
    "grade": 1,
    // 阈值
    "count": 2,
    // 是否是集群模式
    "clusterMode": false,
    // 流控效果(0:快速失败;1:Warm Up(预热模式);2:排队等待)
    "controlBehavior": 0,
    // 流控模式(0:直接;1:关联;2:链路)
    "strategy": 0,
    // 预热时间(秒,预热模式需要此参数)
    "warmUpPeriodSec": 10,
    // 超时时间(排队等待模式需要此参数)
    "maxQueueingTimeMs": 500,
    // 关联资源、入口资源(关联、链路模式)
    "refResource": "rrr"
  }
]

(4)流量控制

    @SentinelResource(value = "testBlockHandler", blockHandler = "blockHandler")
    @GetMapping("/getList")
    public String getList(){
        return "hello,我来啦";
    }

    public String blockHandler(BlockException t){
        return "不是,你谁啊!!!!";
    }

注意:
1、流控要用blockHandler = “。。”来标注
2、流控方法的返回类型和参数类型要和原函数相同,并且参数还要加也该BlockException

官方文档
在这里插入图片描述

4、代码和安装包

https://gitee.com/truth123/train-for-spring-cloud-alibaba
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NacosOpenFeign、Gateway和Sentinel都是微服务架构中常用的开源工具。 Nacos(Naming and Configuration Service)是一个动态服务发现、配置管理和服务治理平台。它提供了服务注册和发现、配置管理和动态路由等功能,使得微服务架构中的各个服务能够自动注册并通过服务名进行发现。通过Nacos,我们可以方便地进行服务的注册与发现,以及实时更新配置信息。 OpenFeign是一个基于Java的声明式服务调用客户端。它内置了Ribbon和Hystrix,可以自动处理服务的负载均衡和容错。通过使用注解和接口代理,OpenFeign可以简化服务间的调用,在代码中只需要定义接口和方法的声明,而无需手动实现具体的服务调用逻辑。 Gateway是一个高性能的API网关,用于将外部客户端的请求路由到后端的不同服务。通过配置路由规则和过滤器链,Gateway可以完成请求的转发并进行相应的处理。它具有动态路由、请求限流、熔断降级、安全认证等功能,可以提高系统的可靠性和稳定性。 Sentinel是一个流量控制和流量治理框架,用于实现对微服务架构中各个服务的流量控制和实时监控。它提供了实时的监控、熔断降级、系统保护和流量统计等功能,并且具备高度可扩展性。通过使用Sentinel,我们可以对服务的流量进行实时监控和管理,保证系统的稳定性和可靠性。 综上所述,Nacos提供了服务发现和配置管理,OpenFeign简化了微服务间的调用,Gateway实现了高性能的API网关,Sentinel用于流量控制和治理。这些工具的结合使用可以帮助我们构建可靠、稳定的微服务架构,并提升系统的性能和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值