微服务网关Zuul

Zuul简介#

ZUUL是Netflflix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用,Zuul组件的
核心是一系列的过滤器,这些过滤器可以完成以下功能:
  动态路由:动态将请求路由到不同后端集群
  压力测试:逐渐增加指向集群的流量,以了解性能
  负载分配:为每一种负载类型分配对应容量,并弃用超出限定值的请求
  静态响应处理:边缘位置进行响应,避免转发到内部集群
  身份认证和安全: 识别每一个资源的验证要求,并拒绝那些不符的请求。
Spring Cloud对Zuul进行了整合和增强

搭建Zuul网关服务器#

(1)创建工程导入依赖#

在IDEA中创建ZUUL网关工程 shop_zuul_server ,并添加相应依赖
<dependency>
  <groupId>org.springframework.cloud</groupId>
  <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
  <version>2.1.0.RELEASE</version>
</dependency>

(2)编写启动类#

创建启动类 ZuulServerApplication
@SpringBootApplication
@EnableZuulProxy   // 开启Zuul的网关功能
public class ZuulServerApplication {
  public static void main(String[] args) {
      SpringApplication.run(ZuulServerApplication.class, args);
  }
}
@EnableZuulProxy : 通过 @EnableZuulProxy 注解开启Zuul网管功能

(3)编写配置#

创建配置文件 application.yml ,并添加相应配置
  server:
    port: 8080 #服务端口
  spring:
    application:
      name: api-gateway #指定服务名

Zuul网关存在的问题#

在实际使用中我们会发现直接使用Zuul会存在诸多问题,包括:
  性能问题
    Zuul1x版本本质上就是一个同步Servlet,采用多线程阻塞模型进行请求转发。简单讲,每来一个请求,Servlet容器要为该请求分配一个线程专门负责处理这个请求,直到响应返回客户端这个线程才会被释放返回容器线程池。如果后台服务调用比较耗时,那么这个线程就会被阻塞,阻塞期间线程资源被占用,不能干其它事情。我们知道Servlet容器线程池的大小是有限制的,当前端请求量大,而后台慢服务比较多时,很容易耗尽容器线程池内的线程,造成容器无法接受新的请求。
  不支持任何长连接,如websocket
posted @   1640808365  阅读(118)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2019-07-29 多态、以及常用的关于类的方法(isinstance、issubclass、slots等)运算符重载的实现、上下文管理等
点击右上角即可分享
微信分享提示
主题色彩