【发布时间】:2011-04-06 13:47:49
【问题描述】:
我们目前正在完成一个基于 ASP.NET 和 WCF 的基于 Web 的时间跟踪软件(适用于不同的桌面客户端)。我们的客户可以注册一个帐户并将无限数量的用户添加到他们的帐户中。定价与公司帐户中的活跃用户数量相关。
为了使事情保持简单和易于扩展,我们认为如果我们将每个帐户设计为作为具有自己的应用程序池、SQL-Server 数据库和子域的单个 IIS 网站运行,这将是一个很好的架构决策。
不幸的是,我们很快就遇到了内存短缺,因为单个工作进程将消耗至少 150mb,这意味着对于每个单个试用帐户,我们需要大约 150mb 内存。 200mb 以上的内存...
除了这种架构的高昂成本(试用帐户!)之外,我们不确定以这种方式设计架构是否是一个好的扩展决定。
- 你会如何设计这样的 SAAS 应用程序?
- 多个网站的单一应用程序池?
- 多个帐户共享数据库的单一网站?
- 垂直扩展(更多功能)优于水平扩展(更多服务器)?
- 有没有关于这个主题的好书或博客?
谢谢!
【问题讨论】:
-
查看codeproject.com/KB/aspnet/ProdArch.aspx。它涵盖了处理 SaaS 正常运行时间的想法,并包含一些通用架构讨论。
-
客户与账户的比例是多少?我可能理解按客户细分,但这并不能消除您的问题。您是否考虑过只为每个生产客户提供一个“试用”池?
-
1 个帐户 - 1 个客户 1 个帐户/客户 - N 个用户 将所有试用帐户放入一个应用程序池中实际上可能是保持低内存消耗的重要解决方案。另一方面,它提高了整个系统的复杂性,并且还需要一个额外的工具,它会在试用激活时自动创建一个新的应用程序池......
标签: asp.net iis scalability scaling