Spring Cloud Gateway是基于春季5,项目反应堆和弹簧靴2的API网关。它是Spring Cloud Microservice生态系统的主要组成部分之一。SpringCloud Gateway主要负责路由接口请求的路由分布,并支持扩展此外,值得一提的是,诸如请求安全验证,流量监视和流量控制之类的操作值得一提的是,弹簧云网关使用非块I/O模型默认情况下实现请求路由分布。对于某些I/O时间 -与Java中使用的其他同步阻塞I/O模型相比,消耗请求与I/O模型的网关相同,并发处理的数量较高。值为呼叫,数据库操作等)导致线程自由并可以继续处理其他请求。
作为API网关,Spring Cloud Gateway提供的功能也非常强大。它集成了负载平衡,动态路由,访问控制,当前限制熔化,掩埋监视和其他功能的支持。如果现有的微服务系统基于Java生态,甚至春季生态,它非常适合使用Spring Cloud Cloud Cater Wateway作为API应用程序网关,允许聚合可以管理多个微服务API和统一的外部世界输出。
同时,遵循春季家族的传统,Spring Cloud Gateway还旨在提供一种简单有效的方法来扩展API路线和请求注意点。对于已经熟悉春季或春季靴的开发人员,春季云网关学习成本成本不高。利用注释和自动化配置的特征与基础框架,并不难使用和扩展。
使用Spring Cloud Gateway快速构建API网关,但是在此之前,首先引入一些使用Spring Cloud Gateway框架涉及的特殊概念,以加深对Spring Cloud Gateway的理解,以方便以后使用。
在了解上面的三个概念之后,如果您查看上面的图片,您可以清楚地看到Spring Cloud Gateway对客户端请求的处理过程,这有助于我们充分利用Spring Cloud Gateway。
应该注意的是,弹簧云网关的过滤器以有序的方式执行。均匀地确定执行顺序,其订单值的大小。值越小,优先级就越高。
在知道Spring Cloud Gateway的整体处理请求过程之后,我们现在快速基于Spring Cloud Gateway构建API网关。看看在实际应用中需要注意哪些地方。应该注意的是,本文中使用的弹簧云网关属于最新的里程碑版本2.2.3,相应的弹簧启动版本为2.3.1,弹簧云版本是Hoxton.sr6.S.sr6.使用Spring Initializr来选择相应版本并依靠一个新项目。为了实现请求的路由,显示了网关的效果,并分别显示了用户服务应用程序和订单服务应用程序的应用程序,每个应用程序都提供了可callable API接口。
用户服务曝光端口8071,提供 /用户 /获取接口:
同样,订单服务暴露于端口8061,提供 /订单 /获取接口:
接下来,这两个服务接口通过Spring-Cloud-Gateway-Quick启动项目的Spring Cloud Gateway聚合。首先,查看Spring Cloud Gateway API方法的实现:
接下来,我们必须通过Spring Cloud Gateway收集项目中的两个服务接口。首先,让我们看一下Spring Cloud Gateway API方法的实现:
上述代码已达到API路线的功能。快吗?同时,可以开始使用网关应用程序统一访问用户服务和订购服务:
返回API实现的代码,该方法定义了用户服务器和订单服务的两个ID,并设置匹配请求的主张以及真实的目标请求地址。此处的路由主张在这里采用路径的规则匹配。只要原始请求地址符合相应的规则,即使它与此路线匹配,弹簧云门也支持丰富的断言,例如主机匹配,请求身体字段匹配,请求数据匹配等,足以满足规则定制路由断言。
因为使用API是程序中的硬编码方法定义了程序中的路由规则,因此可伸缩性很差,并且不容易维护。因此,建议使用更多的实施:配置。在应用程序中配置它。
使用上述配置,重新启动网关应用程序还可以完成先前API方法的效果。由于路由规则被转移到配置文件,因此对于API的管理非常方便,这也提供了可能的动态路由。当然,需要动态路由。除路由配置外,还需要附加扩展来实现路由规则的动态刷新。它涉及Spring Cloud Gateway的更高级用法。本文将不会详细重复。或参考其他在线实施信息。
为了能够请求或响应API,Spring Cloud Gateway提供了过滤器组件来实现此功能,并且构建了许多强大的功能-In.in。此外,该过滤器分为两个类别:全局过滤器和网关过滤器。对于全局过滤器,与该路由的所有请求将由全局过滤器处理;虽然网关滤波器仅在指定的路由上显示,但它将播放。
Spring Cloud Gateway的默认全局过滤器是8:
并且网关滤波器更多,并且由相应的工厂类构建,例如用于熔化的HyStrixGateWayFilterFactory.filter。
首先,查看如何自定义全局过滤器。代码实现相对简单:
这可以在所有路由中添加一个全局过滤器。与全局过滤器的定义不同,必须在指定的路由上声明网关过滤器,然后才能生效。请参阅Gateway Interceptor中的官方构建,并自定义一个简单的网关拦截器工厂进行授权。
如果要在用户服务路由下使用它,则需要在应用程序上添加以下配置。Properties配置文件:
这里的名称必须与MyauthgatewayfilterFactory类一致。Spring Cloud Gateway将自动缝制AuthgateWayFilterFactory,以找到相应的网关滤波器。如果找不到,它将导致起点失败。
配置后,重新启动网关应用程序。这是使用原始方法请求用户服务。它无法再访问。它只会返回验证授权失败的信息。它发挥了作用。
在这里,我们将自定义全局拦截器和网关拦截器。通常,我们将在网关拦截器上扩展自定义,并将其与内置的滤镜结合使用。
最后,将完整的实施代码上传到gitlab:https://github.com/wrcj12138aaa/spring-cloud-gateway-quick-start。有兴趣的朋友也可以参考它。