天天看点

SpringCloud-----Zuul的代理转发

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

最终访问结果:

SpringCloud-----Zuul的代理转发

注意:这个时候暴露了我们的服务名称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管理


           

继续阅读