点我点我:项目github地址。
1、简介。
路由是微服务体系结构的一个组成部分。例如 /
可以映射到您的Web应用程序,/api/users映射到用户服务,/api/shop映射到商店服务。Zuul是Netflix的基于JVM的开发的路由和服务器端负载均衡器。总之一句话就是:“配置了路由网关,即可将微服务的接口统一通过网关请求、过滤”。
2、ZUUL项目搭建。
新建maven module,命名为micro-service-zuul,父项目指向micro,打包方式选择jar,新建方式选择“maven-archetype-webapp”。
pom.xml引入SpringBoot基础包、spring-cloud-starter-eureka、javax.servlet-api,pom.xml依赖包导入、引入ZUUL网关所需依赖spring-cloud-starter-zuul、spring-cloud-zuul-ratelimit,如下图:
在src/main/java目录下新建com.xiudoua.study.micro包,在此包下新建一个ZuulApplication.java类,main方法添加@SpringCloudApplication(注:并非为@SpringBootApplication)、@EnableZuulProxy、如下图:
在src/main/resources目录下新建application.properties文件(此处可新建application.properties或者application.yml文件做配置均可),文件结构如下:
#标注服务名称
spring.application.name=zuul
#标注服务端口号
server.port=8089
#配置指向Eureka注册中心的地址
eureka.client.serviceUrl.defaultZone=http://localhost:8080/eureka/
#ZUUL指向服务配置
zuul.routes.apiAdd.path=/apiAdd/**
zuul.routes.apiAdd.serviceId=add
zuul.routes.apiMultiply.path=/apiMultiply/**
zuul.routes.apiMultiply.serviceId=multipl
zuul.routes.apiFeign.path=/apiFeign/**
zuul.routes.apiFeign.serviceId=feign
#显示注册客户端主机和端口号
spring.cloud.client.ipAddres=http://localhost/
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${spring.application.name}:${spring.application.instance_id:${server.port}}
eureka.instance.preferIpAddress=true
注:如上application.properties文件
zuul.routes.apiAdd.path=/apiAdd/**
zuul.routes.apiAdd.serviceId=add
部分代码标注,代表通过zuul网关访问注册中心的add服务,一律以apiAdd匹配。例如add服务本身访问路径为:http://localhost:8083/addTwoNum?a=12&b=5,则通过网关访问即可为:http://localhost:8089/apiAdd/addTwoNum?a=12&b=5 。3、通过zuul访问service-add、service-multipl、service-feign。
将micro-eureka、micro-service-add、micro-service-multipl(打包并复制修改为multipl.jar、multipl2.jar)、micro-service-feign、micro-service-zuul打jar包放置在E:/jar/0407,如下图:
分别以dos命令(java -jar ***.jar)启动eureka.jar、zuul.jar、add.jar、multipl.jar、multipl2.jar、feign.jar。
预计通过zuul测试访问结构如下:
微服务 | 直接访问 | zuul访问 | 返回结果 |
add | localhost:8083/addTwoNum?a=2&b=5 | localhost:8089/apiAdd/addTwoNum?a=2&b=5 | 公用调用a+b方法返回 结果为:7 |
multipl | localhost:8084/multiplyTwoNum?a=2&b=5 或者localhost:8085/multiplyTwoNum?a=2&b=5 |
localhost:8089/apiMultipl/addTwoNum?a=2& b=5 |
访问主体:http://localhost 端口:8084 计算结果:10 或者 访问主体:http://localhost 端口:8085 计算结果:10 |
feign | http://localhost:8087/multiplyTwoNum?a=2&b=5 | http://localhost:8089/apiFeign/multiplyTwoNum‘ ?a=2&b=5 |
随机放回: 访问主体:http://localhost 端口:8084/8085 计算结果:10 |
访问结构图如下:
Eureka注册中心服务注册如下图:
分别通过http://localhost:8089/apiAdd/addTowNum?a=2&b=5、http://localhost:8089/apiFeign/multiplTowNum?a=2&b=5、“http://localhost:8089/apiFeign/multiplTowNum?a=2&b=5”即可测试通过ZUUL网关的访问。