SpringCloud 执行请求
步骤1: 运行 netflix-eureka-naming-server。
步骤2: 在端口 8000 上运行 currency-exchange-service 。
步骤3: 在端口 8100 上运行 currency-conversion-service 。
步骤4: 运行 netflix-zuul-api-gateway-server。
步骤5: 打开浏览器并调用URL http://localhost:8761 。它显示了在Eureka命名服务器上注册的所有服务。
步骤6 : 调用URL http://localhost:8000/currency-exchange/from/EUR/to/INR 。我们得到了响应,但是请求没有通过Zuul API网关。
让我们通过Zuul API网关调用请求。我们使用以下URL: http://localhost:8765/{application-name}/{uri} 。端口 8765 是Zuul API网关服务器的默认端口。
在我们的示例中, 应用程序名称是 currency-exchange-server和 URI 是 /currency-exchange/from/EUR/to/INR 。因此,完整的URL如下所示:
http://localhost:8765/currency-exchange-service/currency-exchange/from/EUR/to/INR
步骤7: 复制上面的URL并将其粘贴到浏览器中。我们得到与上述相同的响应,但此时,请求正在通过 Zuul API网关。
我们还可以看到在Zuul API Gateway服务器上打印的请求内容。该请求将打印请求URI。
我们已经通过Zuul API网关发送了请求,而不是直接调用微服务。
在微服务调用之间设置Zuul API网关
在上一步中,我们使用了直接URL通过Zuul API Gateway代理执行currency-exchange-service。当我们使用URL http://localhost:8765/currency-exchange-service/currency-exchange/from/EUR/to/INR ,它使用端口8765作为API网关的代理。
在此部分中,我们将货币称为-调用货币兑换服务的计算服务(currency-conversion-service)。到目前为止,我们正在直接致电该服务。现在,我们将通过Zuul API网关调用它,而不是直接调用currency-exchange-service。
步骤1: 选择项目 currency-conversion-service 。
步骤2: 打开 CurrencyExchangeServiceProxy.java 文件。
步骤3: 使用带有属性 name="netflix-zuul-api-gateway-server"的注释 @FeignClient 启用 假冒。
@FeignClient(name="netflix-zuul-api-gateway-server")
记住: 删除或注释 CurrencyExchangeServiceProxy.java 文件中的所有其他注释@FeignClient。
步骤4: 为Zuul API网关服务器定义 映射。
@GetMapping("/currency-exchange-service/currency-exchange/from/{from}/to/{to}")
步骤5: 运行 netflix-eureka-naming-server,currency-exchange-server和 netflix-zuul-api-gateway-server 的顺序相同。
记住: 确保所有 四个服务均正常运行。
步骤6: 打开浏览器并调用URL http://localhost:8100/currency-converter-feign/from/USD/to/INR/quantity/1000 。它返回以下响应:
让我们查看 NetflixZullApiGatewayServerApplication的日志。
步骤7: 单击控制台图标旁边的箭头,然后选择 NetflixZullApiGatewayServerApplication。
它显示了几个日志,如下图所示。
步骤8: 再次刷新URL。它在控制台上显示单个日志。
每当我们通过Feign调用CurrencyClaculationService(currency-converter-service)时,都会通过API Gateway服务器进行路由。网关执行一个名为 ZuulLoggingFilter 的过滤器,该过滤器调用currency-exchange-server。
现在,让我们拦截 currency converter-service 和 currency-exchange-service之间的调用 。这意味着当我们调用URL时,API网关会执行 两次。
- 第一次,API网关在我们调用currency-conversion-service时执行。这意味着在执行currency-conversion-service之前。通过API网关路由的currency-conversion-service。
- 第二次 API网关在currency-conversion-service调用货币兑换服务时执行。这意味着在执行 currency-conversion-service 之后之后,在 currency-exchange-service 执行之前之前。货币兑换服务也通过API网关路由。
让我们在我们的项目中实现拦截。
发送请求 http://localhost:8765 API网关访问 。 URI将为 /{application-name}/{uri}。完整的URL如下所示:
http://localhost:8765/currency-conversion-service/currency-converter-feign/from/USD/to/INR/quantity/100 0
调用上述网址。它返回与URLhttp://localhost:8100/currency-converter-feign/from/USD/to/INR/quantity/1000 返回相同的响应。
我们在日志中看到日志记录过滤器执行了 两次。 首次调用 货币转换器服务, 第二次调用 货币转换器服务称为 currency-exchange-service 。
在本节中,我们已经通过Zuul API网关服务器执行了这两项服务。
下一章:SpringCloud 分布式跟踪
分布式跟踪分布式跟踪是一种监视和分析应用程序的技术,尤其是使用微服务体系结构构建的应用程序。也称为分布式请求跟踪。开发人员使用分布式跟踪来调试和优化代码。分布式跟踪提供了一个地方,我们可以看到"特定请求正 ...