开发者学堂课程【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/h
ello
/
java
或者:localost:10000/Taobao-nacos-microservice/hello/1
或者:localost:10000/Taobao-nacos-microservice/hello/frank
或者:localost:10000/Taobao-nacos-microservice/hello/Alibaba
调用结果:只上了两个服务实例也实现了负载均衡。
以上即是实现了注册中心和网关代理的集成,并且对其做了升级改造。