我需要为任务委派创建一个Web应用程序,监控并为组织生成报告。
我在想ASP.Net和MVC应该是支持这么多并发用户的架构。还有其他更好的架构我应该寻找吗?
要保留此应用程序需要哪种服务器配置? 在启动此应用程序之前,如何测试这么多用户连接,是否有可用的免费/经济测试工具?
提前致谢。 阿尼尔
答案 0 :(得分:4)
MVC与webforms的选择与应用程序处理负载的能力几乎没有任何关系。您的问题将是读取/写入数据库,无论您选择哪一个,这都不会改变。 提高处理负荷能力的想法:
首先:绝对最小值是两个服务器:Web服务器和数据库服务器,它们不应该在同一个盒子上运行。
DB: 对数据库的高效查询,数据库中的索引,非常规化的表格,CACHE,CACHE CACHE,在群集中运行数据库,哦,我是否提到了CACHING?
处理: 如果您需要繁重的处理,请在可以在Web服务器的不同计算机上运行的Web服务中执行此操作,以便您可以扩展(购买更多服务器并在需要时将其置于负载均衡器后面)
WEB: 避免需要服务器亲缘关系(以便在任何给定时间哪个Web服务器为给定用户服务并不重要)这意味着使用DB或StateServer存储会话,同步服务器上的MachineKey。
使用MVC的决定是否对处理10k并发用户的能力没有影响,但如果您希望该站点可以进行单元测试,那么使用MVC是一个巨大的好处
记住:应用程序是可测试的或可憎的,您的选择
答案 1 :(得分:2)
缓存缓存缓存缓存:-)智能缓存策略将使一台服务器走得更远......除此之外,您还需要找出瓶颈所在的位置。如果您的应用程序数据库很重,那么您需要考虑通过群集或分片来扩展数据库。如果您希望您的Web服务器成为瓶颈(例如,如果您正在进行大量处理,例如图像处理等),那么您可以使用负载均衡器在Webfarm中的N个服务器之间分发请求。
答案 2 :(得分:0)
对于这么大的设置,我强烈建议使用分布式内存缓存提供程序在数据库上方分层。我还建议使用内置支持内存缓存的ORM,比如NHibernate,因为在这种规模的应用程序中,你最大的瓶颈肯定是你的数据库。
对于这种情况,您很可能需要一个webfarm,如果单个服务器在不久的将来某个时候足够强大,那么您很可能只会增加一个框,这就是为什么在分布式框架中进行设计非常重要的原因。首先缓存,这样您就可以扩展您的农场,而不必重新构建整个系统。