php – 如何在微服务环境中处理文件上传?
作者:互联网
我正在尝试决定如何,何时以及在何处处理来自用户的上传文件.我们正处于MicroService环境(PHP Linux)中,以便在未来几个月内部署新系统.一个关键组件是传入文件.
目前正如我所看到的那样有三种选择(可能还有更多我尚未意识到的).它们如下:
(1)
[CLIENT:file] ->
[GATEWAY API
FILE STORAGE HANDLER ->
[a: MICROSERVICE-News]
[b: MICROSERVICE-Authors]
[c: MICROSERVICE-Logger]
] -> {response}`
在这种情况下,Gateway API旨在处理与存储服务(S3,GCS)的直接对话,设置文件名,验证等.当收到存储确认时,它会根据需要将该文件名和其他数据传递给其他MicroServices .我认为这对整体有益,因为文件在收到后立即处理,并且可以在不影响其他任何其他内容的情况下发生故障.然而,它确实增加了网关的复杂性,并且可能在高峰时间迅速减慢速度.
(2)
[CLIENT:file] ->
[GATEWAY API
[a: MICROSERVICE-Files]
[b: MICROSERVICE-News]
[c: MICROSERVICE-Authors]
[d: MICROSERVICE-Logger]
] -> {response}
在这种情况下,文件由Gateway API接收,然后必须将其传递给文件MicroService.这可能是有益的,因为它可以远离网关,并且提供了在服务内轻松进行更改的灵活性,而不会影响网关.这样做的主要缺点是现在单个文件被处理两次并且需要计算额外的资源.
(3)
[CLIENT:file] ->
[FILE API] -> {response} ->
[CLIENT] ->
[GATEWAY API
[a: MICROSERVICE-News]
[b: MICROSERVICE-Authors]
[c: MICROSERVICE-Logger]
] -> {response}
在这种情况下,客户端负责将文件发送到单独的服务并使用响应发送到Gateway API.从资源的角度来看,这会占用Gateway API的巨大负担,并且只允许它关注数据,而不关心文件.这样做的主要缺点是客户端可能会向Gateway API发送错误或恶意信息,并需要进行额外验证以确保文件有效且存在.它还会在服务和客户之间产生潜在的同余问题.
我可能会错过其他选项,并希望知道是否有.有没有人有这方面的经验,你是如何解决或处理MicroService架构中的文件?
解决方法:
[CLIENT:file] ->
[FILE API]
-> {response}
->
[a: MICROSERVICE-News]
[b: MICROSERVICE-Authors]
[c: MICROSERVICE-Logger]
] -> {publish}
您可以在此示例中跳过Gateway api.
You File api验证文件上载和数据内容.成功之后,您会向客户回复上传成功的情况.
稍后您将在微服务中处理上载,并使用某种发布者通知客户端此数据是否会在您的其他服务中添加新操作.
如果您的客户端依赖于数据处理,那么您有两个步骤.第一步是文件上传响应,告诉您文件已成功上传和验证.
在这里,您可以通过更改gui来响应此信息,或者仍然等待发布者信息.
Publisher将发送文件信息的成功或成功或错误,因此您可以完成与客户端的步骤
标签:php,api-design,microservices,file-handling 来源: https://codeday.me/bug/20190710/1426438.html