1

我们有一个应用程序希望迁移到 Azure 以进行扩展。然而,在开始之前有一个地方让我担心:

我们有一个用户被定向到的网页。页面上的代码输出到数据库并生成 HTML 报告。新的 HTML 文档与一堆图表和其他图像一起放置在一个临时文件中。然后用户被重定向到这个新页面。

在 Azure 中,我们永远无法确定用户是否会被定向到同一台机器,原因有多种:Azure 负载均衡器可能会根据容量将用户推送到另一台机器,或者由于问题,或者什么。

因为这些只是非常频繁地创建和删除的临时文件,所以我最好将我的应用程序的临时目录指向某种共享驱动器,所有 Web 角色都具有读/写访问权限,然后能够映射一个 URL到此共享云端硬盘。那可能吗?还是这会比我想要的更复杂?

我仍然可以让每个实例都写入它自己的本地临时目录。喂它们只需要一两秒钟,所以我可以冒险在那个微秒内该实例是否发生故障。这方面的问题是对临时 HTML 文件的重定向是否将使用 http 1.1 并保持与该特定实例的连接。

谢谢,杰森

4

3 回答 3

1

您可能需要查看 2 件事:

  • 使用支持某种分布式文件系统(基于 blob 存储)的 Windows Azure 网站。因此,您在 Windows Azure 网站中“本地”存储的文件将从托管该网站的每台服务器上可用(如果您使用多个实例)。
  • 提供来自 Blob 存储的文件。因此,无需在每个实例上本地保存 HTML 文件(或试图让用户坚持使用特定实例),只需将它们存储在 Blob 存储中并在那里重定向您的使用。
于 2013-01-09T21:45:17.930 回答
0

我认为 azure blob 是存储可以被多个实例访问的 html 文件的最佳位置。您可以将用户重定向到该 blob 内容,也可以编写自定义页面以呈现 blob 中的内容。

于 2013-01-10T06:25:27.243 回答
0

来自@Sandrino 的好东西。还有一些想法:

  • 将生成的 html 存储在角色内缓存中(可以并置在您的 Web 角色实例中),并从缓存中提供 html(在所有实例中共享)
  • 充分利用 CDN。您可以将“CDN”文件夹映射到实际的边缘缓存。因此,您在代码中生成一次 html,然后将其缓存到 TTL 到期,此时您必须再次生成内容。
于 2013-01-09T22:36:21.170 回答