前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网关/Sentinel/nacos配置中心接入(9)-1024电商平台项目技术选择和创 建聚合工程项目【工业级PaaS云平台+SpringCloudAlibaba+JDK11综合项目实战】

网关/Sentinel/nacos配置中心接入(9)-1024电商平台项目技术选择和创 建聚合工程项目【工业级PaaS云平台+SpringCloudAlibaba+JDK11综合项目实战】

作者头像
高大北
发布2022-09-21 19:33:14
5490
发布2022-09-21 19:33:14
举报
文章被收录于专栏:java架构计划训练营

第三十六章 1024电商平台-Gateway网关引入和功能测试

第1集 1024电商平台网关Gateway项目开发和配置

简介:网关Gateway项目开发和配置

  • 依赖添加
代码语言:javascript
复制
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <!--添加nacos客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>


        <!--配置中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
  • 启动类配置
  • 路由映射配置
代码语言:javascript
复制
server:
  port: 8889

spring:
  application:
    name: api-gateway
  cloud:
    #注册中心地址
    nacos:
      discovery:
        server-addr: 112.74.55.160:8848
    gateway:
      routes: #数组形式
        - id: product-service  #商品服务 路由唯一标识
          uri: lb://xdclass-product-service  #从nocas进行转发
          order: 1 #优先级,数字越小优先级越高

          predicates: #断言 配置哪个路径才转发,前端访问路径统一加上XXX-server,网关判断转发对应的服务,如果是回调业务记得修改
            - Path=/product-server/**
          filters: #过滤器,请求在传递过程中通过过滤器修改
            - StripPrefix=1  #去掉第一层前缀,转发给后续的路径
            
      #开启网关拉取nacos的服务
      discovery:
        locator:
          enabled: true

#设置日志级别,ERROR/WARN/INFO/DEBUG,默认是INFO以上才显示
logging:
  level:
    root: INFO
    com.alibaba.nacos.client.config.impl: WARN
第2集 1024电商平台整体功能测试验证《上》

简介:1024电商平台整体功能测试验证《上》

  • 用户微服务验证
  • 优惠券微服务验证
  • 商品微服务验证
image-1660111359805
image-1660111359805
第3集 1024电商平台整体功能测试验证《下》

简介:1024电商平台整体功能测试验证《下》

  • 订单微服务验证
  • 大部业务功能都完成了,接下去就是微服务全家桶引入+容器编排部署

第三十七章 微服务配置中心引入和Sentinel限流配置

第1集 1024电商平台Nacos配置中心开发和配置

简介:微服务配置中心引入和配置

  • 配置中心引入-common项目添加
代码语言:javascript
复制
 <!--配置中心-->
       <dependency>
           <groupId>com.alibaba.cloud</groupId>
           <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
       </dependency>
  • 配置文件优先级讲解
    • 不能使用原先的application.yml, 需要使用bootstrap.yml作为配置文件
    • 配置读取优先级 bootstrap.yml > application.yml
  • 配置实操
    • 服务迁移配置
    • 增加bootstrap.yml
代码语言:javascript
复制
spring:
  application:
    name: xdclass-order-service
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848 #Nacos配置中心地址
        file-extension: yaml #文件拓展格式

  profiles:
    active: dev
  • 启动微服务服务验证
    • 测试是否可以获取配置
代码语言:javascript
复制
浏览器访问 
http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=xdclass-coupon-service-dev.yaml&group=DEFAULT_GROUP

部分同学如果出现 config dta not exist 建议重启nacos

除开上述问题,如果还是拉取不到配置(保持和课程版本,文件名一样先)

重新构建下项目 

mvn clean package -U

然后重启IDEA
  • dataId组成,在 Nacos Spring Cloud 中,dataId 的完整格式如下
代码语言:javascript
复制
${prefix}-${spring.profiles.active}.${file-extension}

prefix 默认为 spring.application.name 的值

spring.profiles.active 即为当前环境对应的 profile
当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

file-exetension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。
image-1660111416212
image-1660111416212
第2集 微服务Nacos配置中心迁移和功能验证

简介:1024电商平台Nacos配置中心开发和功能验证

  • 微服务配置迁移
  • 微服务功能验证
第3集 高并发下的限流神器Sentinel容器化部署

简介:Sentinel容器化部署

  • 什么是Sentinel
    • 阿里巴巴开源的分布式系统流控工具
    • 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性
    • 丰富的应用场景:消息削峰填谷、集群流量控制、实时熔断下游不可用应用等
    • 完备的实时监控:Sentinel 同时提供实时的监控功能
    • 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合
    image-1660111432393
    image-1660111432393
  • 文档:https://github.com/alibaba/Sentinel/wiki/控制台
  • Sentinel 分为两个部分
    • 核心库(Java 客户端)不依赖任何框架/库,能够运行于所有 Java 运行时环境,同时对 Dubbo、Spring Cloud 等框架也有较好的支持。
    • 控制台(Dashboard)基于 Spring Boot 开发,打包后可以直接运行,不需要额外的 Tomcat 等应用容器。
  • docker容器化部署sentinel
代码语言:javascript
复制
docker pull bladex/sentinel-dashboard:latest
  • 查看镜像
代码语言:javascript
复制
docker images
  • 启动Sentinel
代码语言:javascript
复制
docker run --name sentinel -d -p 8858:8858  镜像id
  • 访问Sentinel(记得检查防火墙或者网络安全组)
代码语言:javascript
复制
http://公网ip:8858

# 登录密码默认sentinel/sentinel
第4集 微服务整合Sentinel项目依赖配置

简介:微服务整合Sentinel项目依赖配置

  • common项目添加依赖(网关也需要添加)
代码语言:javascript
复制
<dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
  • 多个微服务接入Sentinel配置
代码语言:javascript
复制
spring:
  cloud:
    sentinel:
      transport:
        dashboard: 192.168.0.88:8858
        port: 9999 

#dashboard: 8858 控制台端口
#port: 9999 本地启的端口,随机选个不能被占用的,与dashboard进行数据交互,会在应用对应的机器上启动一个 Http Server,该 Server 会与 Sentinel 控制台做交互, 若被占用,则开始+1一次扫描
  • 微服务注册上去后,由于Sentinel是懒加载模式,所以需要访问微服务后才会在控制台出现
第5集 网关+微服务Sentinel限流实战和问题引出

简介:微服务Sentinel限流配置实战和问题引出

  • 优惠券列表接口限流配置
    • 其他的根据实际情况配置
  • 默认是在微服务内存中,重启后就丢失
    • 解决:持久化配置到配置中心Nacos, 并落地数据库
  • 流控协议不明显
    • Blocked by Sentinel (flow limiting)
  • 影响接口性能的点
    • 代码
    • CPU、内存
    • 带宽、IO
第6集 微服务整合Sentinel自定义降级异常数据开发实战

简介:微服务整合Sentinel自定义降级异常数据开发实战

异常种类

代码语言:javascript
复制
FlowException  //限流异常
DegradeException  //降级异常
ParamFlowException //参数限流异常
SystemBlockException //系统负载异常
AuthorityException //授权异常

【新版】实现BlockExceptionHandler并且重写handle方法

代码语言:javascript
复制
@Component
public class XdclassUrlBlockHandler implements BlockExceptionHandler {
    @Override
    public void handle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, BlockException e) throws IOException {
    
    }
}
第7集 生产环境-Sentinel流控规则持久化到nacos配置中心《上》

简介:微服务Sentinel流控规则持久化到nacos配置中心

代码语言:javascript
复制
<dependency>
           <groupId>com.alibaba.csp</groupId>
           <artifactId>sentinel-datasource-nacos</artifactId>
</dependency>
  • 配置持久化数据源
代码语言:javascript
复制
  #流控面板ip
    sentinel:
      transport:
        dashboard: 112.74.55.160:8858
    #流控规则持久化到nacos配置中心
      datasource:
        ds1:
          nacos:
            server-addr: 192.168.0.88:8848
            data-id: ${spring.application.name}.json
            group-id: DEFAULT_GROUP
            data-type: json
            rule-type: flow
  • 配置中心配置
代码语言:javascript
复制
[
    {
        "resource":"/test",
        "controlBehavior":0,
        "count":2,
        "grade":1,
        "limitApp":"default",
        "strategy":0
    },
    {
        "resource":"/api/coupon/v1/page_coupon",
        "controlBehavior":0,
        "count":1,
        "grade":1,
        "limitApp":"default",
        "strategy":0
    }
]
  • 解释
代码语言:javascript
复制
resource:资源名,
limitApp:流控针对的调用来源,若为 default 则不区分调用来源
grade:限流类型(QPS 或并发线程数),0代表根据并发数量来限流,1代表根据QPS来进行流量控制
count:限流阈值
strategy:调用关系限流策略
controlBehavior:流量控制效果(直接拒绝、Warm Up、匀速排队)
clusterMode:是否为集群模式,存在问题
第8集 生产环境-Sentinel流控规则持久化到nacos配置中心《下》

简介:微服务Sentinel流控规则持久化到nacos配置中心

  • 流控规则持久化测试
  • 如果再sentinel控制台修改了配置,会不会反向同步到nacos里???
    • 再sentinel控制台修改不会同步到nacos
    • 如果要修改策略,只能在nacos里面修改
  • 集群流控问题
  • 限流测试-重启微服务
  • 每个微服务都没做流控限制(优惠券微服务只是做了一个配置的例子)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第三十六章 1024电商平台-Gateway网关引入和功能测试
    • 第1集 1024电商平台网关Gateway项目开发和配置
      • 第2集 1024电商平台整体功能测试验证《上》
        • 第3集 1024电商平台整体功能测试验证《下》
        • 第三十七章 微服务配置中心引入和Sentinel限流配置
          • 第1集 1024电商平台Nacos配置中心开发和配置
            • 第2集 微服务Nacos配置中心迁移和功能验证
              • 第3集 高并发下的限流神器Sentinel容器化部署
                • 第4集 微服务整合Sentinel项目依赖配置
                  • 第5集 网关+微服务Sentinel限流实战和问题引出
                    • 第6集 微服务整合Sentinel自定义降级异常数据开发实战
                      • 第7集 生产环境-Sentinel流控规则持久化到nacos配置中心《上》
                        • 第8集 生产环境-Sentinel流控规则持久化到nacos配置中心《下》
                        相关产品与服务
                        对象存储
                        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档