6、SpringCloud从看不懂到放弃,第五章

编程

SpringCloud从看不懂到放弃,第五章

一、zuul路由网关

1、zuul概述

	简述:外部接口的统一访问网关.

Zuul包含了对请求的路由和过滤两个最主要的功能:

其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础而过滤器功能则负责对请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础.Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。

注意:Zuul服务最终还是会注册进Eureka

提供=代理+路由+过滤三大功能

2、zuul基本配置

1》、新建cloud-zuul-9527 module

2》、POM

zuul服务也是要整合进eureka中的

<dependencies>

<!-- zuul路由网关 -->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-zuul</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-eureka</artifactId>

</dependency>

<!-- actuator监控 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-actuator</artifactId>

</dependency>

<!-- hystrix容错-->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-hystrix</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-config</artifactId>

</dependency>

<!-- 日常标配 -->

<dependency>

<groupId>com.lee</groupId>

<artifactId>cloud-api</artifactId>

<version>${project.version}</version>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-jetty</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

</dependency>

<!-- 热部署插件 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>springloaded</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-devtools</artifactId>

</dependency>

</dependencies>

3》、YML新增

server:

port: 9527

spring:

application:

name: cloud-zuul-gateway

eureka:

client:

service-url:

defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka

instance:

instance-id: gateway-9527.com

prefer-ip-address: true

info:

app.name: cloud

author.name: lee

app.function: 网关

build.artifactId: $project.artifactId$

build.version: $project.version$

4》、HOST配置修改

127.0.0.1   zuul9527.com

5》、主启动类

package com.lee.cloud;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@EnableZuulProxy

@SpringBootApplication

public class Zuul_9527_App {

public static void main(String[] args) {

SpringApplication.run(Zuul_9527_App.class,args);

}

}

测试:

①、启动3个eureka集群

②、启动cloud-provider-dept-8001服务提供者

③、一个路由cloud-zuul-9527

④、访问:

不用路由:http://localhost:8001/dept/get/1

启用路由:http://zuul9527.com:9527/cloud-dept/dept/get/1

注意:zuul和feign或ribbon没有多大关系。feign、ribbon http://localhost7001/consumer/xxx之类的访问和zuul.com:9521/cloud-dept/xxxx访问没有关系。在实际项目中feignibbon这些服务的消费方一般也是以服务的提供发而存在的。

3、zuul路由访问映射规则

3.1>、原因:

before:

http://zuul9527.com:9527/cloud-dept/dept/get/1访问路径中cloud-dept微服务名称容易暴露出来,所以我们要将其隐藏置换。

修改:YML

 zuul: 

routes:

mydept.serviceId: microservicecloud-dept #微服务实例名称

mydept.path: /mydept/** #映射名称

测试:

http://zuul9527.com:9527/mydept/dept/list

3.2>、原因:

before:

http://zuul9527.com:9527/cloud-dept/dept/get/1 还能看到,上面这一步只做了置换,没做隐藏

修改YML

忽略单个:

zuul:

ignored-services: cloud-dept

忽略多个:

zuul:

ignored-services: "*"

测试:

http://zuul9527.com:9527/cloud-dept/dept/get/1

3.3>、原因:

设置一个公共的前缀名

修改YML

zuul: 

prefix: /lee

测试:

http://zuul9527.com:9527/lee/mydept/dept/list

如果这样访问不了,可能是yml的问题,在POM文件中引入

<dependency>

<groupId>org.yaml</groupId>

<artifactId>snakeyaml</artifactId>

<version>1.25</version>

</dependency>

即可

二、分布式配置中心

未完待续。。。。

以上是 6、SpringCloud从看不懂到放弃,第五章 的全部内容, 来源链接: www.h5w3.com/z/510495.html

回到顶部