gpt4 book ai didi

php - 如何在微服务环境中处理文件上传?

转载 作者:可可西里 更新时间:2023-10-31 23:45:01 26 4
gpt4 key购买 nike

我正在努力决定如何、何时以及在何处处理用户上传的文件。我们处于微服务环境(PHP + Linux)中,以便在未来几个月内部署新系统。一个关键组件是传入文件。

目前我看到有 3 个选项(也许更多我还不知道)。它们如下:

(1)

[CLIENT:file] -> 
[GATEWAY API
FILE STORAGE HANDLER ->
[a: MICROSERVICE-News]
[b: MICROSERVICE-Authors]
[c: MICROSERVICE-Logger]
] -> {response}`

在这种情况下,网关 API 旨在处理与存储服务(S3、GCS)的直接对话、设置文件名、验证等。当收到存储确认后,它会将文件名和其他数据传递给其他根据需要微服务。我认为这总体上是有益的,因为文件一收到就被处理,并且可能会失败而不会影响其他任何东西。然而,它确实增加了网关的复杂性,并且可能会在高峰时段迅速减慢速度。

(2)

[CLIENT:file] ->
[GATEWAY API
[a: MICROSERVICE-Files]
[b: MICROSERVICE-News]
[c: MICROSERVICE-Authors]
[d: MICROSERVICE-Logger]
] -> {response}

在这种情况下,文件由网关 API 接收,然后必须将其传递给文件微服务。这可能是有益的,因为它消除了网关的可见性,并提供了在不影响网关的情况下轻松地在服务内部进行更改的灵 active 。这样做的主要缺点是现在单个文件被处理两次,需要计算额外的资源。

(3)

[CLIENT:file] -> 
[FILE API] -> {response} ->
[CLIENT] ->
[GATEWAY API
[a: MICROSERVICE-News]
[b: MICROSERVICE-Authors]
[c: MICROSERVICE-Logger]
] -> {response}

在这种情况下,客户端负责将文件发送到单独的服务并使用响应发送到网关 API。从资源的角度来看,这减轻了 Gateway API 的巨大负担,并允许它只关注数据,而不是文件。这样做的主要缺点是客户端可以向网关 API 发送错误或恶意信息,并且需要额外的验证以确保文件有效且存在。它还会在未来造成服务和客户之间潜在的一致性问题。

我可能缺少其他选项,很想知道是否有其他选项。有没有人有这方面的经验?您是如何解决或处理微服务架构中的文件的?

最佳答案

我认为对于这些架构问题,没有万能的解决方案,它始终取决于您的环境和质量目标。

如果您更喜欢封装而不是性能,那么请使用解决方案 (2)。您可能需要考虑为文件服务使用基于客户端的服务发现机制,而不是成熟的 API 网关,以减少网关上的负载。

如果您更喜欢性能并且客户端在您的控制之下,那么您可以使用解决方案 (3)。

不过,我会避免使用解决方案 (1)。微服务有一个原则“将智能保留在端点”,意思是避免将逻辑放入 API 网关等基础设施组件中。

关于php - 如何在微服务环境中处理文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47782247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com