1、Zuul是什么?
Zuul即网关,即代理。
2、Zuul的原始代理路径?
服务A:service-a 端口:8001 用户信息接口名称:/user/get
服务B:service-b 端口:8002
Zuul服务:myzuul 端口:9001 IP:192.168.1.250
访问服务A的原始代理路径如下:
http://192.168.1.250:9001/service-a/user/get?id=10
最终访问结果:
注意:这个时候暴露了我们的服务名称service-a,其实是很危险的。所以我们需要路由代理
3、zuul代理路由的几种配置方式
方式一:
zuul:
prefix: /me # 路由前缀
# ignored-services: provider-company # 方法一:忽略服务名称访问
ignored-services: "*" # 方法二:如果微服务比较多,则采用通配符的方式配置,进行忽略
routes:
provider-company: /company-proxy/** # 写法一: 左边服务名称、右边服务代理名称
方式二:
zuul:
prefix: /me # 路由前缀
# ignored-services: provider-company # 方法一:忽略服务名称访问
ignored-services: "*" # 方法二:如果微服务比较多,则采用通配符的方式配置,进行忽略
routes:
company.path: /company-proxy/** # 写法二
company.serviceId: provider-company # 写法二 path+serviceId组合,company为逻辑名称
没有Eureka管理
方式三:
zuul:
prefix: /me # 路由前缀
# ignored-services: provider-company # 方法一:忽略服务名称访问
ignored-services: "*" # 方法二:如果微服务比较多,则采用通配符的方式配置,进行忽略
routes:
company.path: /company-proxy/**
company.url: http://company-8101.com:8101/# 写法三,不建议采用,不方便负载均衡,没有Eureka管理
4、zuul禁止直接用服务名称访问
zuul:
prefix: /me # 路由前缀
# ignored-services: provider-company # 方法一:忽略服务名称访问
ignored-services: "*" # 方法二:如果微服务比较多,则采用通配符的方式配置,进行忽略
5、zuul使用
pom.xml
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>
App.java
package com.zemel.zuul;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
@SpringBootApplication
@EnableZuulProxy
public class Zuul9501App {
public static void main(String[] args) {
SpringApplication.run(Zuul9501App.class, args);
}
}
applicaiton.yml
server:
port: 9501
eureka:
client:
serviceUrl:
defaultZone: http://admin:[email protected]:7001/eureka,http://admin:[email protected]:7002/eureka,http://admin:[email protected]:7003/eureka
instance:
prefer-ip-address: true #访问地址显示
# 不建议修改以下两项
# lease-expiration-duration-in-seconds: 2 #心跳间隔时间(默认30s)
# lease-renewal-interval-in-seconds: 5 #如果现在超过了5s间隔(默认是90秒)
info:
app.name: geteway
company.name: www.zemel.cn
build.artifactId: $project.artifactId$
build.version: $project.version$
spring:
application:
name: zuul-gateway
zuul:
prefix: /me # 路由前缀
# ignored-services: provider-company # 方法一:忽略服务名称访问
ignored-services: "*" # 方法二:如果微服务比较多,则采用通配符的方式配置,进行忽略
routes:
#provider-company: /company-proxy/** # 写法一: 左边服务名称、右边服务代理名称
company.path: /company-proxy/** # 写法二
#company.serviceId: provider-company # 写法二 path+serviceId组合,company为逻辑名称
company.url: http://company-8101.com:8101/company/ # 写法三,不建议采用,不方便负载均衡,没有Eureka管理