搭建Zuul路由网关服务

        Zuul作为路由网关服务,可以实现负载均衡,将对外服务API接口统一聚合,做身份认证等功能。下面小白通过自己学习时的工程示例,向大家简要的说一下zuul路由网关的url路由功能和负载均衡功能。

这里搭建一个简单的Zuul,利用一些以前的工程,并重新设定服务名称和调用关系。

工程列表如下

zuul服务工程列表

上面9个工程,旨在测试路由转发和zuul的负载均衡能力,其中第二个工程zuul-service是第一次新建工程,其它工程均是前面工程改名称、重置端口号和程序名称而来,故这里重点介绍zuul-service工程,其它工程请翻阅之前博文,或留言沟通。

zuul-service工程,先看下pom.xml文件

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
		</dependency>

需要的依赖有web、eureka和zuul。其中:我们需要将网关服务注册到服务注册中心,需要eureka服务;需要开启zuul的路由功能,需要zuul服务;需要将网关服务作为web来进行访问,需要web服务。

zuul-service工程是一个springboot工程,也有自己的启动类application

package com.zuul.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

/**
 * 添加@EnableEurekaClient注解,开启EurakaClient功能
 * 添加@EnableZuulProxy注解,开启Zuul功能
 * @author PC
 */
@EnableZuulProxy
@EnableEurekaClient
@SpringBootApplication
public class ZuulServiceApplication {

	public static void main(String[] args) {
		SpringApplication.run(ZuulServiceApplication.class, args);
	}
}

其中@SpringBootApplication注解标注该类是一个springboot工程启动类;@EnableZuulProxy注解,开启Zuul服务功能;@EnableEurekaClient注解,开启EurekaClient功能,即服务注册功能。

zuul-service工程的配置文件,是工程的重点,url的路由转发就在这里配置

# 服务注册中心地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

# 设置程序端口号为5000,服务名为zuul-service
server.port=5000
spring.application.name=zuul-service

# 将以"/hiapi"开头的url路由到eureka-client服务
zuul.routes.hiapi.path=/hiapi/**
zuul.routes.hiapi.serviceId=eureka-client
# 将以"/ribbonapi"开头的url路由到eureka-ribbon-client服务
zuul.routes.ribbonapi.path=/ribbonapi/**
zuul.routes.ribbonapi.serviceId=eureka-ribbon-client
# 将以"/feignapi"开头的url路由到eureka-feign-client服务
zuul.routes.feignapi.path=/feignapi/**
zuul.routes.feignapi.serviceId=eureka-feign-client

这里,重点介绍的有程序端口号5000,后续为整合工程向外暴露的统一端口号

zuul.routes.hiapi.path 将要映射的url路径,zuul.routes.hiapi.serviceId 映射后的服务名称

zuul.routes.hiapi.path=/hiapi/**
zuul.routes.hiapi.serviceId=eureka-client

表示,将/hiapi/** 开头的url路由到eureka-client服务上面

同理,将"/ribbonapi"开头的url路由到eureka-ribbon-client服务,将"/feignapi"开头的url路由到eureka-feign-client服务

如此,便可以将所有url统一请求到网关服务,然后再路由到各自的服务

我们看到的请求便是 http://localhost:5000/hiapi/** ,http://localhost:5000/ribbonapi/** 和 http://localhost:5000/feignapi/**

按顺序,依次启动1-9工程,待工程都启动完毕后,在注册中心可以看到

eureka-client 有两个服务实例,属于集群环境,zuul-ribbon-service有两个服务实例,属于集群环境。但是看调用关系,eureka-client属于网关直接调用,而zuul-ribbon-service是eureka-ribbon-client调用的,前者会利用网关自己的负载均衡能力,后者是利用ribbon的负载均衡能力。

测试

在浏览器地址栏输入 http://localhost:5000/hiapi/hi,可以看到

端口8762 和 端口8768两个实例均在提供服务,以此证明zuul进行了负载均衡。

在浏览器地址栏输入 http://localhost:5000/ribbonapi/hi?name=lee ,可以看到

端口8767和端口8766的两个实例均在提供服务,不过这里是使用ribbon的负载均衡能力

在浏览器地址栏输入 http://localhost:5000/feignapi/hello,可看到

这里,仅有url的路由功能

以上,便是zuul路由网关服务的一个简单示例,初学,言辞不严谨之处或错误之处欢迎指出,谢谢。

猜你喜欢

转载自blog.csdn.net/magi1201/article/details/85859287
今日推荐