zuul
解决问题:
不同的微服务一般会有不同的网络地址,客户端在访问这些微服务时必须记住几十甚至几百个地址,这对于客户端方来说太复杂也难以维护。

如果让客户端直接与各个微服务通讯,可能会有很多问题:
客户端会请求多个不同的服务,需要维护不同的请求地址,增加开发难度
在某些场景下存在跨域请求的问题
加大身份认证的难度,每个微服务需要独立认证
因此,我们需要一个微服务网关,介于客户端与服务器之间的中间层,所有的外部请求都会先经过微服
务网关。客户端只需要与网关交互,只知道一个网关地址即可,这样简化了开发还有以下优点:
1、易于监控
2、易于认证
3、减少了客户端与各个微服务之间的交互次数

一、微服务网关概述
1、 什么是微服务网关
API网关是一个服务器,是系统对外的唯一入口。API网关封装了系统内部架构,为每个客户端提供
一个定制的API。API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入微服务,在
网关层处理所有的非业务功能。通常,网关也是提供REST/HTTP的访问API。服务端通过API-GW注册和
管理服务。
2、 作用和应用场景
网关具有的职责,如身份验证、监控、负载均衡、缓存、请求分片与管理、静态响应处理。当然,最主
要的职责还是与“外界联系”。
3、常见的API网关实现方式
3.1 Kong
基于Nginx+Lua开发,性能高,稳定,有多个可用的插件(限流、鉴权等等)可以开箱即用。
问题:只支持Http协议;二次开发,自由扩展困难;提供管理API,缺乏更易用的管控、配置方
式。
3.2 Zuul
Netflix开源,功能丰富,使用JAVA开发,易于二次开发;需要运行在web容器中,如Tomcat。
问题:缺乏管控,无法动态配置;依赖组件较多;处理Http请求依赖的是Web容器,性能不如
Nginx;
3.3 Traefik
Go语言开发;轻量易用;提供大多数的功能:服务路由,负载均衡等等;提供WebUI
问题:二进制文件部署,二次开发难度大;UI更多的是监控,缺乏配置、管理能力;
Spring Cloud Gateway
SpringCloud提供的网关服务
3.4 Nginx+lua实现
使用Nginx的反向代理和负载均衡可实现对api服务器的负载均衡及高可用
问题:自注册的问题和网关本身的扩展性
二、zuul网关
1、zuul概述
ZUUL是Netflix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用,Zuul组件的
核心是一系列的过滤器,这些过滤器可以完成以下功能:
动态路由:动态将请求路由到不同后端集群
压力测试:逐渐增加指向集群的流量,以了解性能
负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求
静态响应处理:边缘位置进行响应,避免转发到内部集群
身份认证和安全: 识别每一个资源的验证要求,并拒绝那些不符的请求。Spring Cloud对Zuul进行
了整合和增强。
Spring Cloud对Zuul进行了整合和增强
2、快速入门
2.1 搭建zuul网关服务
导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
开启网关代理
@EnableZuulProxy
@SpringBootApplication
@EnableZuulProxy
public class ZuulServerApplication {
public static void main(String[] args) {
SpringApplication.run(ZuulServerApplication.class, args);
}
}
application.yml配置转发规则
server:
port: 7000 #服务端口
spring:
application

本文详细介绍了微服务网关的重要性和常见实现,重点讲解了Netflix的Zuul,包括其作用、快速入门、面向服务的路由、过滤器机制以及存在的问题。通过实例展示了Zuul的配置和自定义过滤器的编写,同时讨论了Zuul的替代方案。
最低0.47元/天 解锁文章
797

被折叠的 条评论
为什么被折叠?



