我正在考虑将我的Web应用程序移动到Windows Azure以实现可伸缩性,但我想知道如何最好地对我的应用程序进行分区。
我希望我的方案是典型的,如下所示:我的应用程序允许用户上传原始数据,处理这些数据并生成报告。然后,用户可以查看其原始数据并查看其报告。
到目前为止,我正在考虑一个网络角色和一个工人角色。但是,据我所知,VHD可以安装到具有读/写访问权限的单个实例,因此我的Web角色和辅助角色都需要访问公共文件存储。因此,我可能需要一个Web角色和两个单独的工作者角色,一个用于处理的辅助角色,另一个用于读取和写入文件存储。这是一个好方法吗?
我很难描绘角色之间的管道,并且担心这个分区之间的通信所引起的开销,所以欢迎任何输入。
答案 0 :(得分:2)
添加Stuart的优秀答案:Blob可以存储任何尺寸高达200GB的东西。如果您需要/想要保留一个持久的整个目录结构,您可以使用几行代码安装VHD。它是您的应用可以与之交互的NTFS卷,就像任何其他驱动器一样。
在您的情况下,vhd不合适,因为您的Web应用程序必须安装vhd并且是它的唯一编写者。如果您有多个Web角色实例(如果您想要SLA并希望扩展,则可以使用),您只能拥有一个编写器。在这种情况下,单个blob更适合。
正如斯图尔特所说,这是一种非常正常和常见的模式。再次,只需几行代码,您就可以调用存储sdk将文件从blob存储复制到实例的本地磁盘。然后,您可以使用常规文件IO操作处理该文件。报告完成后,另外几行代码可以将报告复制到新的blob中(最有可能是Web角色知道要查看的知名容器中)。
您可以更进一步,将行插入由客户分区的Azure表中,行键标识单个上载的文件,第3个字段表示已完成报告的URI。这使得Web应用程序显示客户已完成的报告变得微不足道。
答案 1 :(得分:1)
Blob存储是存储文件的最简单的地方,许多角色和角色实例可以访问这些文件,而这些文件都不需要特殊访问。
建议的正常模式似乎是:
这是“建议的正常模式”,您可以看到它在第一个Azure PDC中的照片上传/缩略图生成应用程序中实现 - 它也在此training course中使用 - 跟随到第二页
当然,在实践中,您可能需要根据您正在处理的数据的大小和类型来构建此模式。