【问题标题】:Serving static files in a microservices environment?在微服务环境中提供静态文件?
【发布时间】:2018-06-04 21:49:02
【问题描述】:

为部署在微服务架构(生产中)中的应用程序提供静态文件的首选方式是什么?

为了简单起见,假设我有 3 个应用程序服务器和一个将请求转发到这些服务器的负载平衡器。

  • 负载平衡器是否应存储文件并根据请求立即提供服务?或者..
  • 负载均衡器是否应将静态文件请求转发到不同的应用程序实例(每个请求到不同的实例)?

对此有最佳实践吗?

【问题讨论】:

  • 来自 CDN。它似乎与 MS 正交
  • 您需要提供更多细节,因为有很多方法可以做到这一点,并且没有正确的方法。这些静态文件是什么,它们将如何使用?您的服务的使用模式是什么(每秒读取峰值,您的用户是否在地理上分布,等等)?您是否需要控制对这些静态文件的访问?你在优化你的工作是为了什么(例如可扩展性,或者为少量用户快速推出一些东西等)?

标签: microservices devops system-design


【解决方案1】:

最佳做法是将其存储在用于静态内容的服务中,例如 blob 存储(在云中,这将是 Azure 存储、S3 等)。如有必要,利用 CDN 改善最终用户的延迟和吞吐量。

但正如其他人评论的那样,有很多方法可以根据您的特定要求来处理这个问题。

【讨论】:

    【解决方案2】:

    正如其他 cmets/answers 中所述,有很多方法可以处理这个问题。这在很大程度上取决于您实际需要什么(版本控制、访问控制、http 标头、CDN)。

    特别针对您的问题,如果是我,我不会在负载均衡器上部署这些文件,因为较新版本的静态文件需要负载均衡器停机。相反,我会构建非常简单的 Nginx/Caddy 容器,它们的唯一目的是提供这些文件,并让 LB 将流量路由到这些容器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-18
      • 2018-10-11
      • 2012-01-26
      • 2020-03-04
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多