1
本博客 猫叔的博客,转载请申明出处

阅读本文约 “4分钟”

适读人群:Java初级

为什么要设计网关?

上网搜罗了一下,觉得别人说的挺好,就引用了一下,在使用微服务的时候,不同的功能业务会集成一个服务群,而网关是基于服务群上的一个服务层,也是单独暴露给客户端的APIs。

客户端对微服务的依赖直接使重构服务变得困难。一种直观的方法是将这些服务隐藏在一个新的服务层后面,并提供针对每个客户端的APIs。

这个聚合器服务层也称为API网关,它是解决这个问题的一种常见方法。

引用下图,原文出处

Image

SpringCloud的网关

zuul1.X(阻塞)

  • 架构:

通过servlet做处理,并通过多个Groovy Filter做链过滤请求

Image

  • 现状:

目前比较少,但是对于实时业务还是可以稳定使用

  • 应用场景:

简单业务,逻辑简单,实时业务,cpu型业务

  • 使用方式:

引入maven包,使用注解的形式,可以在配置文件配置

zuul2.X(非阻塞)

  • 架构:

2.0引入了Netty服务,实现非阻塞与高并发的处理能力

image

  • 现状:

官方停止维护,非阻塞

  • 应用场景:

大数据、队列类型、高并发、io型业务

  • 使用方式:

引入maven包,使用注解的形式,可以在配置文件配置

Gateway(非阻塞)

  • 架构:

与zuul2.0一致,不上图

  • 现状:

SpringCloud官方维护,因为zuul2.X停止维护,所以基于2.X的同架构版本

  • 应用场景:

大数据、队列类型、高并发、io型业务

  • 使用方式:

引入maven包,路由注解(route-》path-》filters-》uri)或者以配置的形式

公众号:Java猫说

学习交流群:728698035

现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。

Image Text


Java猫说
1.3k 声望930 粉丝

现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。