springcloud(十六):服务网关 zuul 快速入门

时间:2020-04-26 10:49:34   收藏:0   阅读:50

服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud Netflix中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。

路由在微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users映射到用户服务,并将/api/shop映射到商店服务。ZuulNetflix的基于JVM的路由器和服务器端负载均衡器。

Netflix使用Zuul进行以下操作:

Zuul的规则引擎允许基本上写任何JVM语言编写规则和过滤器,内置JavaGroovy

什么是服务网关

服务网关 = 路由转发 + 过滤器

1、路由转发:接收一切外界请求,转发到后端的微服务上去;

2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。

为什么需要服务网关

上述所说的横切功能(以权限校验为例)可以写在三个位置:

第一种,缺点太明显,基本不用;
第二种,相较于第一点好很多,代码开发不会冗余,但是有两个缺点:

而服务网关恰好可以解决这样的问题:

所以,需要服务网关!!!

服务网关技术选型

技术分享图片

 

 

引入服务网关后的微服务架构如上,总体包含三部分:服务网关、open-service和service。

1、总体流程:

2、引入网关的注意点

3、服务网关基本功能

4、技术选型

笔者准备自建一个轻量级的服务网关,技术选型如下:

Spring Cloud Zuul

简单使用

新建项目 spring-cloud-zuul-service

添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zuul</artifactId>
</dependency>

开启服务注册

在程序的启动类 ZuulApplication 通过 @EnableZuulProxy 开启 Zuul 服务网关

技术分享图片
 1 package io.ymq.example.zuul;
 2 
 3 import org.springframework.boot.SpringApplication;
 4 import org.springframework.boot.autoconfigure.SpringBootApplication;
 5 import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
 6 
 7 @EnableZuulProxy
 8 @SpringBootApplication
 9 public class ZuulApplication {
10 
11     public static void main(String[] args) {
12         SpringApplication.run(ZuulApplication.class, args);
13     }
14 }
技术分享图片

添加配置

配置文件 application.yml

技术分享图片
 1 spring:
 2   application:
 3     name: zuul-service
 4 
 5 server:
 6   port: 9000
 7 
 8 
 9 zuul:
10   routes:
11     blog:
12         path: /ymq/**
13         url: https://www.ymq.io/about
技术分享图片

 

测试访问

配置说明:

浏览器访问:http://127.0.0.1:9000/ymq 重定向到我的博客

 

 

作者:搜云库技术团队 
出处:https://www.souyunku.com 
首发微信公众号:搜云库技术团队,微信号ID:souyunku 
版权归原创作者所有,任何形式转载请联系作者

原文:https://www.cnblogs.com/sqkj0529/p/12777115.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!