spring cloud快速入门教程(四)路由网关Zuul

本文介绍了在Spring Cloud架构中,Zuul作为路由网关的作用和重要性。它充当所有微服务的统一入口,提供请求转发、负载均衡等功能,简化了前端请求配置,增强了系统的可靠性和分散业务压力的能力。通过创建新的模块并配置Zuul,实现了微服务的路由功能。启动Zuul后,可以通过其端口访问其他微服务,如访问localhost:8091/service-product/getConfig获取数据。

现在服务也统一注册管理了,配置也统一管理了,我们就可以疯狂的开发各项微服务了,是不是还觉得少了点什么?前端怎么访问到相应服务?这就用到路由网关了。

路由网关就是整个微服务的统一入口,看看第一张的架构图,项目的前端做成了动静分离,静态文件、html页面、css文件和js文件都放在了web服务器(Nginx或Apache),

如果微服务都是单台部署,web服务器直接找到对应的服务看起来也没多大问题,如果单个微服务挂了呢?就任凭系统返回500么,所以,真实的部署环境中每个微服务都应该有负载均衡或者备用服务的,用这种方式提升大象系统的可靠性,同时也分可以分散业务处理的压力,如果这样,前端的请求地址配置起来就会显得非常乱,而且不知道什么时候请求哪一个服务,路由网关的作用就显现出来了,通过路由的配置,访问同一个资源,路由网关就会帮你把请求转到最适合的微服务中去。

我们来实现一下路由网关,第一步都是一样的,创建module,命名gateway,引入依赖包:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.0.RELEASE</version>
</parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Camden.SR2</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-eureka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-zuul</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>
在resource目录下城建配置文件application.yml,写入以下内容:

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8090/eureka/
spring:
  application:
    name: gateway
server:
  port: 8091
zuul:
  routes:
    service-user: /service-user/**
    service-product: /service-product/**
    config-client: /config-client/**
看过前面章节内容的都已经很眼熟了,只有zuul那块是新内容,routes下面的内容是路由的映射,例如service-product:/service-product/**,表示所有的/service-product/**资源请求都会交给spring.application.name为service-product的微服务处理,清晰合理的管理了各种微服务资源。

再来实现他的微服务主程序:

package com.tzy.gateway;

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 Main {

    public static void main(String[] args){
        SpringApplication.run(Main.class,args);
    }
}
@EnableZuulProxy表示该应用是路由代理

此时,Zuul的配置已成功,延续上一节的内容,再启动路由网关(Eureka只要先启动就ok,其他后启动的会自动注册上),访问地址localhost:8091/service-product/getConfig,还是会获得到password的内容,这里要注意访问的是Zuul的端口号8091。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值