本博客 猫叔的博客,转载请申明出处
阅读本文约“4 分钟”
适读人群:Java 初级
为什么要设计网关?
上网搜罗了一下,觉得别人说的挺好,就引用了一下,在使用微服务的时候,不同的功能业务会集成一个服务群,而网关是基于服务群上的一个服务层,也是单独暴露给客户端的 APIs。
客户端对微服务的依赖直接使重构服务变得困难。一种直观的方法是将这些服务隐藏在一个新的服务层后面,并提供针对每个客户端的 APIs。
这个聚合器服务层也称为 API 网关,它是解决这个问题的一种常见方法。
引用下图,原文出处。
SpringCloud 的网关
zuul1.X(阻塞)
- 架构:
通过 servlet 做处理,并通过多个 Groovy Filter 做链过滤请求
- 现状:
目前比较少,但是对于实时业务还是可以稳定使用
- 应用场景:
简单业务,逻辑简单,实时业务,cpu 型业务
- 使用方式:
引入 maven 包,使用注解的形式,可以在配置文件配置
zuul2.X(非阻塞)
- 架构:
2.0 引入了 Netty 服务,实现非阻塞与高并发的处理能力
- 现状:
官方停止维护,非阻塞
- 应用场景:
大数据、队列类型、高并发、io 型业务
- 使用方式:
引入 maven 包,使用注解的形式,可以在配置文件配置
Gateway(非阻塞)
- 架构:
与 zuul2.0 一致,不上图
- 现状:
SpringCloud 官方维护,因为 zuul2.X 停止维护,所以基于 2.X 的同架构版本
- 应用场景:
大数据、队列类型、高并发、io 型业务
- 使用方式:
引入 maven 包,路由注解(route-》path-》filters-》uri)或者以配置的形式
公众号:Java 猫说
学习交流群:728698035
现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。