3. 7 Spring Cloud 网关 Zuul 集成 Nacos 注册中心| 学习笔记

简介: 快速学习 3. 7 Spring Cloud 网关 Zuul 集成 Nacos 注册中心。

开发者学堂课程【Spring Cloud 微服务架构设计与开发实战 :3. 7 Spring Cloud 网关 Zuul 集成 Nacos 注册中心】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/60/detail/1100


3.7 Spring Cloud 网关 Zuul 集成 Nacos 注册中心

 

内容介绍

一、 网关 Zuul 集成 Nacos 注册中心

二、 实战操作

 

一、网关 Zuul 集成 Nacos 注册中心

本节课主要讲解 Spring Cloud 网关 Zuul 如何集成 Nacos 注册中心。Nacos 的功能十分强大,在前面的课程中已经学习过。

本节课主要对整体的 Spring Cloud 微服务架构做升级改造,这里包括微服务从基础开发到配置优化,集成原理以及设计模式,还有使用最新框架改造的过程。Spring Cloud2.0,2.1等版本也可以逐步进化。

//引用必须修改 Zuul 的配置代码

server.port=8201

spring.application.name=taobao-nacos-microservice。

#Nacos

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

调用,检查 zuul 是否上线,通过 zuul 能否调用后台的微服务,路由规则有没有变掉,如果变掉就比较麻烦。

 

二、实战操作

通过 zuul 测试微服务 API 调用

//zuul 加 Nacos 的引用,因为 zuul 不是和 eureak 进行集成,而是和 Nacos 进行集成。

//从中心地址修改配置。

spring.application.name=zuulproxy

server.port=10000

#Nacos

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

在这里还需要使用到 @EnableDiscoveryClient。

保证之前的 Nacos 中心起来,必须有熔断,一般在 zuul 上做代理,所以有可能在 zuul 上做熔断。

如果从0开始改造项目,需要注意版本问题,目前使用的版本是2.3.7,Nacos 用的版本是2.2.3,会有版本差别的问题,过高的版本可能会不支持。Nacos 和 zuul 的兼容性也需要注意。

查看之前使用的 zuul 版本是2.3.7

//修改配置可以通过直接复制代码进行改造,项目命名为javaSpringCloud000000zuulproxyNacos,将 Nacos 的代码复制过来,然后修改配置文件,要注意版本兼容性。只修改配置文件即可,其他内容都不用进行修改。

//修改配置文件,删除掉 eureak 相关的代码。

spring.application.name=zuulproxy

server.port=10000

#nacos

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

运行报错,原因是 eureak 没有删除掉。理论上这里不需要 eureak,只需要 Nacos。

重新启动,运行报错,报错信息的意思是:考虑在 config 中定义一个接口,这个配置没有。出错原因是默认的包名和自己定义的包名重名了,对包名进行修改,改为 cn.alibaba。

重新启动,运行成功。查看注册中心,zuulproxy 上线了,通过 zuul 可以调后台的淘宝服务。调用方法:原来输的是10000,这里需要修改 zuul 的调动策略。如果使用 localost:10000/microservice/hello 调用就会出错。

正确的调用是把微服务地址放在中间,加上参数  hi,如下所示:localost:10000/Taobao-nacos-microservice/hi 通过网关调用,加上服务偏移,服务实际的方法名,即可调用成功。

调用 hello 的方法:

localost:10000/Taobao-nacos-microservice/hello/java 

或者:localost:10000/Taobao-nacos-microservice/hello/1

或者:localost:10000/Taobao-nacos-microservice/hello/frank

或者:localost:10000/Taobao-nacos-microservice/hello/Alibaba

调用结果:只上了两个服务实例也实现了负载均衡。 

以上即是实现了注册中心和网关代理的集成,并且对其做了升级改造。

相关文章
|
数据可视化 Java BI
将 Spring 微服务与 BI 工具集成:最佳实践
本文探讨了 Spring 微服务与商业智能(BI)工具集成的潜力与实践。随着微服务架构和数据分析需求的增长,Spring Boot 和 Spring Cloud 提供了构建可扩展、弹性服务的框架,而 BI 工具则增强了数据可视化与实时分析能力。文章介绍了 Spring 微服务的核心概念、BI 工具在企业中的作用,并深入分析了两者集成带来的优势,如实时数据处理、个性化报告、数据聚合与安全保障。同时,文中还总结了集成过程中的最佳实践,包括事件驱动架构、集中配置管理、数据安全控制、模块化设计与持续优化策略,旨在帮助企业构建高效、智能的数据驱动系统。
618 1
将 Spring 微服务与 BI 工具集成:最佳实践
|
XML 人工智能 Java
Spring Boot集成Aviator实现参数校验
Aviator是一个高性能、轻量级的Java表达式求值引擎,适用于动态表达式计算。其特点包括支持多种运算符、函数调用、正则匹配、自动类型转换及嵌套变量访问,性能优异且依赖小。适用于规则引擎、公式计算和动态脚本控制等场景。本文介绍了如何结合Aviator与AOP实现参数校验,并附有代码示例和仓库链接。
883 0
|
Java 关系型数据库 数据库连接
Spring Boot项目集成MyBatis Plus操作PostgreSQL全解析
集成 Spring Boot、PostgreSQL 和 MyBatis Plus 的步骤与 MyBatis 类似,只不过在 MyBatis Plus 中提供了更多的便利功能,如自动生成 SQL、分页查询、Wrapper 查询等。
1280 2
|
监控 Cloud Native Java
Spring Integration 企业集成模式技术详解与实践指南
本文档全面介绍 Spring Integration 框架的核心概念、架构设计和实际应用。作为 Spring 生态系统中的企业集成解决方案,Spring Integration 基于著名的 Enterprise Integration Patterns(EIP)提供了轻量级的消息驱动架构。本文将深入探讨其消息通道、端点、过滤器、转换器等核心组件,以及如何构建可靠的企业集成解决方案。
1048 0
|
Java Spring 容器
SpringBoot自动配置的原理是什么?
Spring Boot自动配置核心在于@EnableAutoConfiguration注解,它通过@Import导入配置选择器,加载META-INF/spring.factories中定义的自动配置类。这些类根据@Conditional系列注解判断是否生效。但Spring Boot 3.0后已弃用spring.factories,改用新格式的.imports文件进行配置。
1634 0
|
人工智能 Java 测试技术
Spring Boot 集成 JUnit 单元测试
本文介绍了在Spring Boot中使用JUnit 5进行单元测试的常用方法与技巧,包括添加依赖、编写测试类、使用@SpringBootTest参数、自动装配测试模块(如JSON、MVC、WebFlux、JDBC等),以及@MockBean和@SpyBean的应用。内容实用,适合Java开发者参考学习。
1587 0
|
前端开发 Java 数据库
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 介绍
本课介绍Spring Boot集成Thymeleaf模板引擎。Thymeleaf是一款现代服务器端Java模板引擎,支持Web和独立环境,可实现自然模板开发,便于团队协作。与传统JSP不同,Thymeleaf模板可以直接在浏览器中打开,方便前端人员查看静态原型。通过在HTML标签中添加扩展属性(如`th:text`),Thymeleaf能够在服务运行时动态替换内容,展示数据库中的数据,同时兼容静态页面展示,为开发带来灵活性和便利性。
689 0
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
1325 0
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
795 4