Laravel 9 微服务

问题描述 投票:0回答:1

我将在 Laravel 9 中使用 docker 上的通行证构建微服务,它将使用每个服务的数据库和 API 网关。所有请求都将流经 API 网关,在那里进行身份验证,然后将其转发到特定的微服务。

请注意,只有我的 API 网关可以公开访问,其他微服务不会公开,它们将在内部使用。

此外,这将托管在

AWS
上,并且可能会使用无服务器架构
Lambda
以及
Api Gateway
Fargate
尚未真正决定。

我有以下问题:

  1. API网关架构适合哪种授权类型?

  2. 我需要在API网关中编写来自所有微服务的所有路由吗?如果是,则意味着路由将被写入两次,即在 API 网关和单个微服务中,那么如何准确地编写 API 网关?

  3. 如果我想将来自不同 mciroservices 的数据合并为一个,我应该在 api 网关中执行此操作吗?

  4. 如何验证微服务之间的请求,因为我也希望它在内部安全,我应该使用护照中提供的公钥和私钥功能吗?如果是,当请求到达每个微服务时如何验证密钥?

amazon-web-services docker microservices laravel-passport laravel-9
1个回答
1
投票

我想你的系统看起来像这样:

System Architecture

@1 资助类型

授权类型不太依赖于您的 API 网关架构,而是更依赖于将使用 API 的客户端类型。您能详细说明一下吗?

@2 API网关中的路由

正如你所说,API网关将负责身份验证和路由。选择实施微服务架构的主要原因之一是将系统分解为更小的独立服务。 API 网关和服务之间存在依赖关系,但您可以使用通配符将这种依赖关系保持在可管理的级别。例如。所有匹配

/pets/*
的请求都会转到“宠物”服务。

@3 合并多个服务的数据

不应该在 API 网关中聚合来自多个微服务的数据以组装单个响应,因为这通常是某种业务逻辑的实现。 API 网关不应该实现业务逻辑,它应该验证和路由请求。

实现此类功能的正确方法是BFF(前端的后端),它基本上是实现所需行为的附加微服务。

它看起来像这样:System with BFF

@4内部认证

这也很难一概而论。但如果您愿意,您可以使用用户的授权令牌。验证此令牌的一种方法是仅检查微服务中的令牌是否尚未过期。如果 API 网关确保令牌总体上有效,则此方法有效。

如果您需要在没有用户上下文的情况下在微服务之间进行通信,那么您需要找到一种替代方法。

© www.soinside.com 2019 - 2024. All rights reserved.