【问题标题】:How to handle private files in a microservice如何在微服务中处理私有文件
【发布时间】:2017-01-03 11:32:00
【问题描述】:

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

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

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

我想知道是否有人在微服务环境中存储私有文件的最佳做法,以及优缺点的最佳方法是什么。

【问题讨论】:

    标签: service backend microservices data-storage


    【解决方案1】:

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

    费用:

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

    好处:

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

    结论:

    如果不与业务人员实际交谈并讨论有关这种过渡的风险,就无法回答这些问题。

    【讨论】:

    • 感谢 IlliakaillI 的回答
    猜你喜欢
    • 2020-11-24
    • 2020-11-14
    • 2018-10-30
    • 1970-01-01
    • 2017-11-09
    • 2020-02-27
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    相关资源
    最近更新 更多