学会使用Spring Cloud Gateway

253 阅读4分钟

简介

首先,我们将了解什么是 "Spring Cloud Gateway"。Spring Cloud Gateway提供了一个库,用于在Spring和Java之上构建API网关。API网关是多个微服务的单一入口点。另一方面,我们可以理解,任何外部系统都不能直接访问所有其他微服务。它只能通过一个共同的入口来访问其他微服务,即Spring Cloud API网关。它提供了一种灵活的方式,根据一些标准来路由请求。此外,它还关注跨领域的问题,如安全、弹性和监控。

在世界微服务领域,spring cloud网关成为整个系统的一个组成部分。这是因为网关代理了实际的端点,并作为一个单一的累积服务暴露在众多服务的支持下,而客户根本没有线索。这不仅是所需的安全模式,也因为这种隔离,服务也变得松散耦合。

Spring云网关的架构

春天云网关的架构

基本上,Spring云网关由3个主要部分组成。

  • 路线
  • 谓词
  • 过滤

路线。

它包括目的地URI,一个必须满足的条件--或者用技术术语来说,谓词,以及一个或多个过滤器。另一方面,我们可以说,我们希望一个特定的请求被路由到的目的地。

谓词。

简而言之,Spring Cloud Gateway中的Predicate是一个测试给定请求是否满足某个条件的对象。对于每个路由,我们可以定义一个或多个前置词,如果满足了这些前置词,我们就会在安装任何过滤器后接受配置的后端请求。

过滤器。

过滤器是一个用来拦截你的应用程序的HTTP请求和响应的对象。通过使用过滤器,我们可以在两个实例中执行两个操作 - 在向控制器发送请求之前。在向客户端发送响应之前。

用于Spring Cloud Gateway的工具。

  • 用于http调用的命令行客户端
  • Java IDE
  • 命令行,如zsh、bash、DOS命令或PowerShell
  • 一个网站和诊断工具,它可以将Http GET请求数据转换为JSON响应

第1步:创建一个项目

使用start.spring.io下载spring cloud gateway项目,并按以下方式提取。

httpstart.spring.io/starter.zipdependencies==cloud-gateway,actuator baseDir==spring-cloud-gateway-demo | tar -xzvf -。

我们可以通过构建和运行代码并检查Spring Boot执行器端点,轻松检查项目是否正常工作。

./mvnw package spring-boot:run

你的spring boot应用程序现在正在运行。到浏览器中,在URL栏中输入http://localhost:8080/actuator/health。结果,你会得到一个JSON格式的消息{"status":"UP"} ,表明一切工作正常。

现在通过ctrl+c停止你的服务器,让我们回到下一节。

第2步:向网关添加重新路由指令

在这一步,你需要在IDE中打开src/main/java/com/example/demo/DemoApplication.java,并添加以下方法。

@Bean
public RouteLocator myRoutes(RouteLocatorBuilder builder) {
    return builder.routes()
        // Add a simple re-route from: /get to: http://httpbin.org:80
        // Add a simple "Hello:World" HTTP Header
        .route(p -> p
        .path("/get") // intercept calls to the /get path
        .filters(f -> f.addRequestHeader("Hello", "World")) // add header
        .uri("http://httpbin.org:80")) // forward to httpbin
        .build();
}

这里我们要为我们的网关建立一个新的路由。任何对http: // localhost: 8080 / get的请求都将与这个路由命令相匹配,我们对请求的两处修改也将被完成。filter()方法处理诸如添加或改变标题的事情,在我们的例子中,将Hello header设置为World 。此外,uri()方法将我们的请求重定向到新的主机。值得注意的是,在转发消息时,路由/查找路由会被保存。

现在之后编译你的新代码并再次启动服务器。

./mvnwpackage spring-boot:run

现在让我们走向测试部分。

第3步:测试你的新网关

为了测试网关,发送一个HTTP GET请求到http://localhost:8080/get,看看它显示了什么。

http localhost:8080/get -print=HhBb

你会得到这样的响应:

结论

基本上在这篇博客中,我们了解了Spring云网关的基本知识。现在你需要有一个正在运行的Spring云网关应用程序,并且你已经学会了如何将你收到的应用程序转移到另一个存储库。你可以使用这个过程将你的网关应用程序的请求自动转移到任何其他服务。