使用IntelliJ IDEA创建Spring Cloud的路由网关Zuul

Eureka注册中心:《使用IntelliJ IDEA创建Spring Cloud服务注册中心

服务提供者创建:《使用IntelliJ IDEA创建Spring Cloud的Eureka Client

Ribbon实现负载均衡:《使用IntelliJ IDEA创建Ribbon项目实现负载均衡

集成Feign的项目:《使用IntelliJ IDEA创建集成Feign的项目简化服务调用的网络连接

Ribbon项目中使用Hystrix熔断器:《使用IntelliJ IDEA在Spring Cloud的Ribbon项目中使用Hystrix熔断器

Feign项目中使用Hystrix熔断器:《使用IntelliJ IDEA在Spring Cloud的Feign项目中使用Hystrix熔断器

熔断器可视化监控项目:《使用IntelliJ IDEA创建Spring Cloud的熔断器可视化监控项目

微服务架构中都必然会设计一个网关在里面,使得不用去关心后端具体有多少个服务,就只需知道一个网关,所有请求都往网关走,网关会根据请求中的一些特征,将请求转发给后端的各个服务。有一个网关之后,还有很多好处,比如可以做统一的降级、限流、认证授权、安全等。

Zuul的主要功能是路由转发和过滤器。例如将acyx/order转发到订单服务中,将acyx/product转发到商品服务中,将acyx/stock转发到库存服务中。Zuul默认和Ribbon结合实现了负载均衡的功能。针对过滤器,在Zuul中定义了四种不同生命周期的过滤器类型:pre:路由之前、routing:路由之时、post: 路由之后、error:发送错误调用,具体可以自定义Filter extends ZuulFilter,在run方法中添加过滤器的具体逻辑。

本文主要讲解Zuul的功能是路由转发。

创建Zuul项目

File---new---module---Spring Assistant

点击next

如下图,选择Zuul

点击Finish

配置Zuul项目

向pom.xml添加如下依赖,因为需要向eureka注册中心(acyxdiscovery)注册服务和获取其它服务相关信息

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

AcyxzuulApplication.java添加注解@EnableEurekaClient 、@EnableZuulProxy 注解

package com.acyx.zuul;

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;

@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class AcyxzuulApplication {

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

}

resources目录下新建application.yml,application.yml的功能和application.properties是一样的,但yml文件是树状结构,有更好的层次感,更易于理解。然后,删除原有的application.properties。如下图

application.yml

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8850
spring:
  application:
    name: acyx-zuul
zuul:
  routes:
    feign:
      path: /feign/** # 自定义的路由
      serviceId: acyx-feign # 指向的服务名称

测试项目

依次启动Eureka注册中心、acyxstock、acyxstocktwo、acyxfeignthree、acyxzuul,然后在浏览器中访问:http://127.0.0.1:8761

在浏览器中直接访问acyxfeignthree  : http://localhost:8102/homeFeign?name=test

刷新

再次刷新

此时,acyxfeignthree对应的acyx-feign服务是正常的。下面开始测试一下Zuul的路由网关功能。

在浏览器的新选项卡输入http://localhost:8850/feign/homeFeign?name=test

刷新

再次刷新

因此,说明Zuul路由网关起作用了。

猜你喜欢

转载自blog.csdn.net/chenbinqq/article/details/106034137