服务网关是微服务架构中一个不可或缺的部分。通过服务网关统一向外系统提供REST API
的过程中,除了具备服务路由、均衡负载功能之外,它还具备了权限控制等功能。Spring Cloud
Netflix
中的Zuul就担任了这样的一个角色,为微服务架构提供了前门保护的作用,同时将权限控制这些较重的非业务逻辑内容迁移到服务路由层面,使得服务集群主体能够具备更高的可复用性和可测试性。
路由在微服务体系结构的一个组成部分。例如,/可以映射到您的Web应用程序,/api/users
映射到用户服务,并将/api/shop
映射到商店服务。Zuul
是Netflix
的基于JVM
的路由器和服务器端负载均衡器。
Netflix使用Zuul进行以下操作:
Zuul
的规则引擎允许基本上写任何JVM语言编写规则和过滤器,内置Java
和Groovy
。
服务网关 = 路由转发 + 过滤器
1、路由转发:接收一切外界请求,转发到后端的微服务上去;
2、过滤器:在服务网关中可以完成一系列的横切功能,例如权限校验、限流以及监控等,这些都可以通过过滤器完成(其实路由转发也是通过过滤器实现的)。
上述所说的横切功能(以权限校验为例)可以写在三个位置:
第一种,缺点太明显,基本不用;
第二种,相较于第一点好很多,代码开发不会冗余,但是有两个缺点:
而服务网关恰好可以解决这样的问题:
所以,需要服务网关!!!
引入服务网关后的微服务架构如上,总体包含三部分:服务网关、open-service和service。
1、总体流程:
2、引入网关的注意点
3、服务网关基本功能
4、技术选型
笔者准备自建一个轻量级的服务网关,技术选型如下:
新建项目 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
版权归原创作者所有,任何形式转载请联系作者
springcloud(十六):服务网关 zuul 快速入门
原文:https://www.cnblogs.com/sqkj0529/p/12777115.html