当前位置: 首页 > news >正文

Java Nacos与Gateway的使用

Java系列文章目录

IDEA使用指南

Java泛型总结(快速上手详解)

Java Lambda表达式总结(快速上手详解)

Java Optional容器总结(快速上手图解)

Java 自定义注解笔记总结(油管)

Java 抽象知识笔记总结(油管)


文章目录

  • Java系列文章目录
  • 一、前言
  • 二、学习内容:
  • 三、问题描述
  • 四、解决方案:
    • 4.1 父子项目的设置
      • 4.1.1父工程配置
      • 4.1.2 子工程配置
    • 4.2 微服务、负载均衡与灰度发布
    • 4.2.1 新建微服务
  • 五、总结:
    • 5.1 学习总结:

一、前言

  • 近期学习Gateway与Nacos的实操笔记总结
  • 通过Nacos观察gateway的作用

二、学习内容:

  • Gateway实操学习
  • Nacos实操学习
  • Knif4j配置
  • 均衡负载
  • 灰度发布策略
  • 微服务知识学习

三、问题描述

  • 实操经验不丰富

四、解决方案:

4.1 父子项目的设置

4.1.1父工程配置

  • 加入Package配置
  • 加入Moudle配置子项目
  • 删除依赖

在这里插入图片描述

4.1.2 子工程配置

删除的都已有父工程管理

  • 删除配置
  • 删除依赖管理
  • 指定父工程

在这里插入图片描述

4.2 微服务、负载均衡与灰度发布

4.2.1 新建微服务

  • 网关服务注意一定要加上gateway与负载均衡依赖

在这里插入图片描述

网关名字记得改

在这里插入图片描述

  • 为了方便观察运行时把SpringBoot加入Services管理

在这里插入图片描述

  • 运行端口为8080的服务

在这里插入图片描述

  • 新建服务

在这里插入图片描述

  • 之后修改要改的端口与内容再次运行即可

端口要改不然冲突

在这里插入图片描述

  • 我们发现Nacos的nacos-demo服务实例已变为两个

看上张图片,因为我们又运行了一个服务

在这里插入图片描述

  • 微服务配置注意看Path

在这里插入图片描述

  • 测试通过网关访问服务实例

注意测试负载均衡访问的是微服务所以端口号是9091同时路径别忘写

在这里插入图片描述

在这里插入图片描述


五、总结:

5.1 学习总结:

不管谁访问经由网关即可访问实例

请添加图片描述

Spring Cloud Gateway 是一个用于构建 API 网关的框架,提供了多种服务路由、过滤和负载均衡的功能

动态路由:

  • 支持通过配置文件或编程方式设置路由。
  • 可以根据请求的路径、请求方法、查询参数等进行路由匹配。

过滤器:

  • 提供了预定义的过滤器(如请求头、请求参数、限流等)。
  • 用户可以自定义过滤器来处理请求和响应的各种需求。

负载均衡:

  • 支持与 Spring Cloud LoadBalancer 集成,实现对后端服务的负载均衡。
  • 可以配置不同的策略,如轮询、随机等。

断路器支持:

  • 可以与 Spring Cloud Circuit Breaker 集成,提供服务熔断功能,提高系统的健壮性。

安全与认证:

  • 支持集成 Spring Security,为 API 提供安全认证机制。 可以对访问进行监控和限制,保证系统安全。

响应式编程:

  • 基于 Spring WebFlux 构建,实现非阻塞的 API 调用,提高系统吞吐量。

监控和追踪:

  • 通过集成 Spring Boot Actuator 进行运行时监控。
  • 支持分布式追踪(如 Sleuth 和 Zipkin),帮助追踪请求流动。

应用场景

  • 微服务架构: 在微服务架构中,作为服务的入口,聚合多个服务的 API。
  • API 管理: 提供统一的 API 接入点,简化客户端的访问方式。
  • 安全层: 集中管理微服务的安全措施,对外提供单一的认证和授权方式。

配置文件参考:

spring.application.name=nacos-demo
server.port=8080spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
spring.cloud.nacos.config.contextPath=/nacos
# 设置配置中心服务端地址spring.cloud.nacos.config.server-addr=localhost:8848
# Nacos 配置中心的namespace。需要注意,如果使用 public 的 namcespace ,请不要填写这个值,直接留空即可
spring.cloud.nacos.config.namespace=nacos-demo
spring.config.import=nacos:datatest.properties?refresh=true
# Nacos帮助文档: https://nacos.io/zh-cn/docs/concepts.html# Nacos认证信息
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
# Nacos 服务发现与注册配置,其中子属性 server-addr 指定 Nacos 服务器主机和端口spring.cloud.nacos.discovery.server-addr=localhost:8848
# 注册到 nacos 的指定 namespace,默认为 public
spring.cloud.nacos.discovery.namespace=nacos-demo
spring.application.name=gateway
server.port=9091knife4j.gateway.discovery.enabled=true
knife4j.gateway.enabled=true
knife4j.gateway.tags-sorter=order
knife4j.gateway.operations-sorter=order
knife4j.gateway.strategy=discoverspring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
spring.cloud.nacos.config.contextPath=/nacos
spring.cloud.nacos.config.server-addr=localhost:8848
spring.config.import=nacos:datatest.properties?refresh=true
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.server-addr=localhost:8848
spring.cloud.nacos.discovery.namespace=nacos-demospring.cloud.gateway.globalcors.cors-configurations.[/**].allowed-origin-patterns=*
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedHeaders=*
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowCredentials=true
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[0]=GET
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[1]=POST
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[2]=PUT
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[3]=OPTIONS
spring.cloud.gateway.globalcors.cors-configurations.[/**].allowedMethods[4]=DELETE
spring.cloud.gateway.discovery.locator.enabled=truespring.cloud.gateway.routes[0].id=nacos-demo
spring.cloud.gateway.routes[0].uri=lb://nacos-demo
spring.cloud.gateway.routes[0].predicates[0]=Path=/nacos_demo/**
spring.cloud.gateway.routes[0].filters[0]=StripPrefix=1

依赖参考:

 <dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-gateway-spring-boot-starter</artifactId><version>4.4.0</version></dependency></dependencies>
 <dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-gateway-spring-boot-starter</artifactId><version>4.4.0</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>annotationProcessor</scope></dependency></dependencies>

(后续有遇到问题再添加)


声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【一文搞懂】Rewind AI是什么?Rewind AI能干嘛?全网最全指南!
  • Web自动化测试:UI自动化框架结构以及思路!
  • 【机器学习之深度学习】深度学习和机器学习的关系以及深度学习的应用场景
  • PHP、JavaScript代码审计工具
  • 如何 让git commit 自动生成 submodules 改动的提交说明?
  • 基于Python中PyQt5实现简易浏览器的设计与实现
  • 项目管理者必读:全生命周期系统选择技巧
  • Python 3 集合(Sets)
  • 解析 Vue 中的app.version、 app.provide 与 app.runWithContext :原理、应用与实例剖析
  • Sol盗u、sol链上的USDT盗窃:警惕恶意智能合约
  • iOS ------ 事件响应链
  • 跨域:安全分步实施指南
  • 制作好的excel报表设置打开密码或忘记密码怎么办?
  • Visual Studio Code安装与C/C++语言运行(上)
  • 《乳腺密度高的女性中,使用AI辅助的乳腺X线筛查与补充筛查超声的比较研究》| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统
  • .pyc 想到的一些问题
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • 【159天】尚学堂高琪Java300集视频精华笔记(128)
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • LeetCode18.四数之和 JavaScript
  • SpiderData 2019年2月25日 DApp数据排行榜
  • Vue2.0 实现互斥
  • webgl (原生)基础入门指南【一】
  • 浮动相关
  • 构建二叉树进行数值数组的去重及优化
  • 离散点最小(凸)包围边界查找
  • 使用 Docker 部署 Spring Boot项目
  • 双管齐下,VMware的容器新战略
  • 突破自己的技术思维
  • 硬币翻转问题,区间操作
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • ‌JavaScript 数据类型转换
  • #如何使用 Qt 5.6 在 Android 上启用 NFC
  • (2)(2.10) LTM telemetry
  • (Windows环境)FFMPEG编译,包含编译x264以及x265
  • (ZT)一个美国文科博士的YardLife
  • (转)3D模板阴影原理
  • (转)四层和七层负载均衡的区别
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 直连SAP HANA数据库
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .net8.0与halcon编程环境构建
  • @antv/x6 利用interacting方法来设置禁止结点移动的方法实现。
  • @ComponentScan比较
  • @EventListener注解使用说明
  • @ohos.systemParameterEnhance系统参数接口调用:控制设备硬件(执行shell命令方式)
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • []sim300 GPRS数据收发程序