api - 在 API 或微服务文件系统上存储文件
问题描述
我在一个应用程序上工作,该应用程序由
- 前端应用
- API,我喜欢将其视为网关
- 处理业务逻辑和数据库工作的微服务
在实现类似文件存储的功能时,为了上传小文件和大文件,我只是假设我会将这些文件存储在微服务的文件系统中,并将路径与元数据一起保存到微服务的数据库中。
因为微服务没有实现任何 Http API 端点,所以我通过我的 API 网关上传文件。但是在意识到将这些文件从 API 传输到微服务以及提供相同的服务需要做多少工作之后,我只是将它们存储在 API 的文件系统中并将路径保存到微服务的数据库中。
这种方法可以吗?
我的 API网关从它自己的文件系统存储和提供文件,这很奇怪吗?如果是这样,我应该在上传时将文件从 API 传输到微服务,即使考虑到文件可能很大 - 还是微服务本身应该实现特定的 API?
我希望这个问题不会被解释为基于意见的-我想知道考虑到前端-api-微服务模式,哪种方法最好,以及是否有任何架构标准可以解决这种情况,以及是否有任何方法有它的陷阱。
解决方案
根据以上评论
API 网关
网关的目的是重定向请求并处理诸如身份验证、日志记录等横切关注点。它不应该做更多的事情。网关必须具有高可用性,网关出现任何问题都意味着您无法访问相关服务。
上传文件
文件上传应由微服务本身处理。您的网关将仅用于传递和获取流。根据您系统的性质,如果您使用云存储,您可以使用“代客钥匙”之类的模式。 https://docs.microsoft.com/en-us/azure/architecture/patterns/valet-key
推荐阅读
- typescript - 如何为可以访问 Vuex this.$store 的 Vue.js 创建一个 Utils 类
- javascript - 如何在 JavaScript 中的 Chart js 下为多轴循环?
- javascript - 让 Fomantic-UI (Angular-JS) 侧边栏独立运行
- python - Python 中的 Rank.Avg(来自 Excel)函数是什么?
- python - GCP 云功能未正确接收/确认 PubSub 消息
- amazon-web-services - 如何在 CloudFormation 中获取手动创建的 dynamodb 表的 streamArn
- python - pygame中大小不同的精灵的碰撞
- javascript - 如何正确阻止 Node.JS 服务器应用程序中的 IP 地址?
- python - 基于多列的 UTC 到 PDT/CDT/EDT 熊猫
- python - 搜索相应对象的最有效方法?