Service 如何在微服务中处理私有文件

Service 如何在微服务中处理私有文件,service,backend,microservices,data-storage,Service,Backend,Microservices,Data Storage,我们正在进行一个后端项目,我们已经开始转向微服务开发。我们已经有了一些服务,其中之一是存储和获取文件的文件服务(使用底层AmazonS3存储)。FileService还提供文件校验和、身份验证和重试机制,用于跨服务和与客户端共享文件 我们现在正在构建一个新的服务,该服务的部分私有数据是该服务存储并用于其业务逻辑的文件,我们面临一个两难的问题:是应该使用FileService存储和获取文件,还是应该在服务内部处理文件的存储和获取 使用FileService的原因是我们免费获得服务中实现的所有功能(

我们正在进行一个后端项目,我们已经开始转向微服务开发。我们已经有了一些服务,其中之一是存储和获取文件的文件服务(使用底层AmazonS3存储)。FileService还提供文件校验和、身份验证和重试机制,用于跨服务和与客户端共享文件

我们现在正在构建一个新的服务,该服务的部分私有数据是该服务存储并用于其业务逻辑的文件,我们面临一个两难的问题:是应该使用FileService存储和获取文件,还是应该在服务内部处理文件的存储和获取

使用FileService的原因是我们免费获得服务中实现的所有功能(重试、校验和等)。 不使用它的原因是我们希望新服务能够自主工作,并且使用FileService将新服务绑定到它(它必须处理OAuth2身份验证以获取/上载文件,它必须在部署此服务时部署FileService和AuthService等)


我想知道是否有人有在微服务环境中存储私有文件的最佳实践,以及最佳的方法是什么,利弊如何。

将进程内文件服务组件转换为微服务肯定有优点也有缺点。您已经列出了其中的几个,但最重要的是,您必须创建一个适用于您的业务和领域的成本/收益分析矩阵。 这里没有“最佳实践”方法

费用:

  • 您可以增加响应时间吗?因为现在您必须传输两次文件:s3->fs microservice->client microservice
  • 节点之间失去连接的可能性有多大
  • 你的文件有多大?微服务之间不可靠的连接可能会成为一个问题
  • 您需要多久访问一次这些文件?也许您将失去使用本地缓存来加速进程的能力
  • 您是否同意实施和支持单独的auth microservice,或者您可以在防火墙中将此服务列为白名单
好处:

  • 您不必每次存储文件或重试的逻辑更改时都重新部署所有依赖组件
  • 如果有必要,您可以在将来更轻松地迁移到另一个云提供商,而无需重新部署每一次
  • 它可以在异构环境中重用,在异构环境中,其他组件可以使用不同的技术堆栈实现
结论:


如果不与商界人士进行实际交谈并讨论此类转型的风险,就无法回答这些问题

谢谢你的回答