今天和大家聊一下微服务网关 Spring Cloud Gateway。Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于Spring 5.0、Spring Boot 2.0 和Project Reactor 等组件技术,Spring Cloud Gateway的性能和功能表现都很优异。
笔者去年也写了几篇关于Spring Cloud Gateway的文章。从当时最先基于 v2.0.0.M8
,之后体验了RC版本,然后是 v2.0.0.RELEASE
,也曾撸过一遍源码,对网关的原理与实现还是比较熟悉的。最近抽空看了看最新的版本 v2.1.0.RELEASE
,在功能上有一些迭代,功能愈加完善。这次特地分享Spring Cloud Gateway的应用实战。本次分享基于的Spring Cloud Gateway版本为 v2.0.2.RELEASE
,对应的Spring Cloud的版本为 Greenwich.RELEASE
。
微服务最早是由Martin Fowler与James Lewis于2014年共同提出。时至今日,微服务架构已经成为了主流的架构模式。微服务架构风格是一种使用一系列粒度较小的服务来开发单个应用的方式 。
当使用单体应用程序架构时,客户端(web和移动端)通过向后端应用程序发起一次REST调用来获取数据。负载均衡器将请求路由给N个相同的应用程序实例中的一个。然后应用程序会查询各种数据库表,并将响应返回给客户端。微服务架构下,单体应用被切割成多个微服务,如果将所有的微服务直接对外暴露,势必会出现安全方面的各种问题。
在微服务架构中,API网关是一个服务,是系统的唯一入口。从面向对象设计的角度看,它与外观模式类似。API网关封装了系统内部架构,为每个客户端提供一个定制的API。它可能还具有其它职责,如身份验证、监控、负载均衡、限流、降级与应用检测。