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

时间:2016-12-31 13:48:21

标签: service backend microservices data-storage

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

我们现在正在构建一个新服务,该服务的私有数据的一部分是服务存储并用于其业务逻辑的文件,我们是否应该使用FileService来存储和获取文件或处理在服务内部存储和获取文件。

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

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

1 个答案:

答案 0 :(得分:1)

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

费用:

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

优点:

  • 每次存储文件或重试的逻辑发生变化时,您都不必重新部署所有相关组件。
  • 如果有必要,您可以在将来更轻松地转移到其他云提供商,而无需重新部署。
  • 它可以在异构环境中重用,其中可以使用不同的技术堆栈实现其他组件

结论:

如果不与商界人士实际交谈并讨论围绕这种转变的风险,就无法回答这些问题。