微服务和VUE入门教程(4):网关zuul的搭建

微服务和VUE入门教程(4):网关zuul的搭建

微服务和VUE入门教程(0): 着手搭建项目
微服务和VUE入门教程(1): 搭建前端登录界面
微服务和VUE入门教程(2): 注册中心
微服务和VUE入门教程(3): user微服务的搭建
微服务和VUE入门教程(4):网关zuul的搭建
微服务和VUE入门教程(5): 前后端交互
微服务和VUE入门教程(6):连接数据库-mybatis
微服务和VUE入门教程(7):配置中心-config
微服务和VUE入门教程(8):前端主页的编写
微服务和VUE入门教程(9): token验证-token后端生成以及前端获取
微服务和VUE入门教程(10): token验证-前端登录拦截以及token过期提醒
微服务和VUE入门教程(11): mybatis 动态查询
微服务和VUE入门教程(12):前端提示搜索框的实现
微服务和VUE入门教程(13): token验证-zuul拦截与验证
微服务和VUE入门教程(14): 热部署
微服务和VUE入门教程(15): 课堂小知识
微服务和VUE入门教程(16): zuul 熔断
微服务和VUE入门教程(17): VUE 响应拦截器
微服务和VUE入门教程(18): 前端接口模块化
微服务和VUE入门教程(19): VUE组件化–子组件向父组件通信
微服务和VUE入门教程(20): VUE组件化–父组件向子组件通信
微服务和VUE入门教程(21): springboot中定时器-Schedule
微服务和VUE入门教程(22): 页面长时间未操作自动退出登录
微服务和VUE入门教程(23): 微服务之间的调用
微服务和VUE入门教程(24): 微服务之断路器
微服务和VUE入门教程(25): 微服务之Hystrix-dashboard
微服务和VUE入门教程(26): 微服务之turbine
微服务和VUE入门教程(27):VUE前端工程打包

1.网关是什么?

在这里插入图片描述

找了一个图,从上图可以看出:我们发出的请求是先到了网关中,由网关进行分发到各个微服务中。网关就像一个门,一群羊(即请求)要进属于自己的羊圈(即微服务),首先通过网关来决定要去哪个羊圈(微服务)。

2.网关的作用?

由上图可知,当存在服务网关,前端程序通过服务网关调用后台服务,同时我们也可以在网关层进行各种操作,比如限流、权限校验等。此外,网关还有负载均衡的功能。

3.网关的编写

对于网关的选择,我们使用的是zuul网关组件。

1.新建my-zuul新module

参考新建注册中心过程,新module命名为my-zuul。

2.父项目pom文件的修改

在父项目的pom文件中引入zuul的依赖

<!--zuul-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
	<version>2.1.3.RELEASE</version>
</dependency>

3.修改my-zuul的pom文件

在my-zuul的pom文件中引入两个配置依赖

    <dependencies>
    	<!--注册到注册中心-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
		<!--zuul依赖-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
    </dependencies>

4.新建配置文件

在src/main/resources文件夹中新建application.yml文件,编写配置信息,先编写基本的配置信息,待往后慢慢丰富。

spring:
  application:
    name: my-zuul

server:
  port: 8803

eureka:
  client:
    service-url:
      defaultZone: http://localhost:8801/eureka/

zuul:
  prefix: /api
  routes:
    my-user: /user/**

可以看出,zuul的配置信息和普通的微服务user大体上是一样的,都有微服务名字,端口号,注册中心相关信息。但是增加了zuul自己的配置。

prefix是指以后前端访问后端接口的url上要加上api的前缀,routes下面显示了路由转发的信息,举例来说:假如my-user微服务有个接口(/hello),我们想通过网关来访问这个接口,那么前端访问的url将会是 http://localhost:8803/api/user/hello 。网关检测到 /api的前缀,将会根据/use来查找相应的微服务,从而访问真正的接口(/hello)。

5.编写启动文件

在src/main/jave目录下新建con.zuul包,在这个包中新建ZuulApplication.class文件。

package com.zuul;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.zuul.EnableZuulProxy;

@SpringBootApplication
@EnableDiscoveryClient
@EnableZuulProxy
public class ZuulApplication {
    public static void main(String[] args) {
        SpringApplication.run(ZuulApplication.class);
    }
}

对比my-user的启动文件,我们发现zuul的启动文件多了@EnableZuulProxy的注解,来声明这是一个网关。

6.验证

我们通过测试网关转发来访问接口。

6.1.新建controller文件

在my-user的java/com.uesr中新建controller文件夹,在controller文件夹中新建UserController类。my-user目录结构为
在这里插入图片描述

6.2.修改UserController代码
package com.user.controller;

import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.*;

@RestController
@CrossOrigin  //支持跨域
public class UserController {
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String hello(){
        System.out.println("hell0");
        return "hello world";
    }
}
6.3. 验证

重启my-user微服务,在浏览器中访问: http://localhost:8802/hello
在这里插入图片描述

咦,好熟悉的“hello world".

接下来,我们访问:http://localhost:8803/api/user/hello

在这里插入图片描述

哇,也能访问到哎。这时候在去看看前面的解析,是不是有种恍然大明白的感觉。8803是zuul的接口,我们并没有直接访问my-user这个微服务,而是zuul通过/api前缀,和/user自动寻找到my-user微服务,并且去微服务中找/hello这个接口。

虽然看起来有些麻烦,但这其中的好处在以后的开发过程中会越来越明显的。

4.总结

网关有很多很多作用,我们这里只是演示了一个接口转发的例子,路由还可以进行负载均衡,身份验证,在未来的开发中会一步一步接触到的。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值