我的问题:图片上传是否在单个节点上的多个 cloudlet 之间同步?
我认为这里存在术语问题。
Cloudlet:由 RAM 和 CPU 使用率组成的复合资源单元。1 Cloudlet = 128MB RAM 和大约。200MHz 中央处理器。服务器(Jelastic 将其称为“节点”)通常使用多个小云;例如,它可能在任何给定时刻使用几 GB RAM 和/或几 GHz CPU。
更多详细信息,请访问http://kb.layershift.com/introducing-cloudlets
每个节点都是一个独立的(虚拟)服务器,有自己的文件系统。因此,如果您有一个 NGINX PHP 应用程序服务器,它使用 1 个或 100 个 cloudlet 都没有关系(请记住,这只是 RAM 和 CPU 消耗的衡量标准!),它有 1 个文件系统和所有文件成功写入将可用于任何后续请求。
如果我水平扩展到多个节点会发生什么?
对,这里你要小心。如果您的应用程序正在写入本地文件系统,则在处理多个水平扩展的服务器时会出现问题。这是一个非常典型的扩展问题,每个应用程序都必须处理。
如果我们只是在谈论静态资源(例如图像),那么处理此问题的最佳和最简单的方法之一就是将所有这些资源上传到单个服务器。例如,如果你有 4 个 NGINX PHP 服务器——假设它们对 your-application.com 进行负载平衡——你可能会创建其中一个服务器(或者可能是一个完全独立的环境)images.your-application.com
因此,您执行对 images.your-application.com 的上传,并在您希望显示这些上传的图像时直接在 HTML 中引用它。
请记住,images.your-application.com 仅负责提供实际图像;所以它真的很轻,应该可以通过垂直缩放来处理一个体面的体积——这在 Jelastic 上是完全自动的。
当您需要扩展 images.your-application.com 时,最简单的方法是采用 CDN 服务(CloudFlare、Incapsula 等)。这将使 images.your-application.com 仅处理尚未缓存在 CDN 中的上传和少量下载流量。