最近,我与一位被认为是经验丰富的架构师进行了一次讨论。讨论围绕着运行在Web Farm中的多租户基于Web的应用程序的理想架构和设计。该应用程序的唯一任务是允许用户上传“n”个Excel文件,系统正在处理这些文件以生成非常复杂的报告。处理这些文件需要很长的时间(每个文件需要一个小时,让我们将其作为约束)。因此,用户在上传后等待系统通知以下载生成的报告。
乍一看,需求看起来非常简单,但期望是应用程序必须是100%可伸缩的。我们与架构一起讨论了各种解决方案,但我们发现它并不令人满意。我需要从这个社区的成员提出解决方案与技术一起设计。这不是我的专业任务,但它只是一个调查,以了解架构师对构建可伸缩应用程序的看法,而不仅仅是云就绪应用程序,在这些应用程序中,扩展基础架构比关注应用程序可伸缩性更容易。
发布于 2013-05-03 01:57:11
用户可以通过该网站上传excel文件。他们的凭据也会被传递。后端在数据库中注册该请求,并返回请求id ( Guid或其他信息)。该过程将结束。
windows服务正在运行并轮询数据库,查找要处理的新请求。您可以使用Quartz.NET来调度多个并行作业来处理请求。这种请求处理(处理excel文件和生成报告)被委托给负载平衡的WCF服务,因此您拥有的WCF服务越多,可以调度的并行Quartz作业就越多。如果请求已被处理,则可以调度另一种类型的Quartz作业发送邮件。
该站点定期轮询以查看请求(或特定请求)的状态和进度;并对其进行管理。对于已完成报告的请求,可以下载报告。
我认为这是一个非常可扩展的解决方案,而且是松耦合的。
https://stackoverflow.com/questions/16332665
复制相似问题