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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tang86100/article/details/78895084

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

路由网关就是整个微服务的统一入口,看看第一张的架构图,项目的前端做成了动静分离,静态文件、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。

猜你喜欢

转载自blog.csdn.net/tang86100/article/details/78895084
今日推荐