我有一个web应用程序,目前有大约500,000个用户,平均每小时大约500个页面浏览量,我们预计在明年必须扩展到20,000,000个用户。
我们目前的系统无法处理这种规模,因此我们需要转移到可以处理的系统。
我认为基于服务的架构将更加健壮,并且允许组件服务独立于彼此和主应用程序进行扩展。
但有人警告我,可以很容易地设计一个伸缩性不好的服务体系结构,而且由于我几乎没有设计这样的系统的经验,所以查阅一些推荐的资源可能比仅仅“尝试一下”要好。
那么,建议使用哪些资源来构建可伸缩的系统呢?平台是.Net,但我认为同样的信息也适用于任何基于服务的体系结构,而与平台无关。
发布于 2009-03-22 10:59:13
我首先要回答Gennady Shumakher的评论--“您认为当前系统的瓶颈是什么?”一旦你知道了这一点,你就可以具体地处理它,然后根据需要处理整个应用程序。
Twitter是一项有趣的研究。它一开始只有少量的请求,但很快就发展成为一个使用率很高的平台,拥有全球范围的流量。This可能会很有用。同样有趣的可能是这个blog on scalability。
发布于 2009-05-13 16:41:36
我想推荐易趣architectural principles presentation和一个很好的演示文稿的writeup。实际上,Ebay采用了典型的面向服务的方法。服务是按功能提取的,因此每个服务都可以独立扩展。我认为有一些好的地方可以让你学习。
发布于 2009-03-16 14:48:21
从理论上讲,它是可扩展的,但您需要注意延迟。假设你外部化了一个模块,现在你可以有两个服务,代替一个服务,但在发送,处理,回复一个外部服务的请求所需的时间内,你可以处理100个内部请求,所以除非你有100个服务器,否则你实际上会得到更低的吞吐量,但无论哪种方式,你都需要花费更多的维护和空间,100个服务器与1个服务器。通常情况下,必须在延迟和处理之间衡量平衡,作为经验法则,如果你需要发送大量数据,你最好不要将这一步划分到一个服务中。幸运的是,你有一个可以衡量的运行系统,大多数人只能根据规格来猜测。
因此,考虑你的数据流模式,并支持局部性,这是一种艺术,沿着颗粒将你的应用程序切割到服务上,而不是反对它。
您可能会对阅读有关并发模式的内容感兴趣,因为这就是它的归结。
https://stackoverflow.com/questions/650654
复制相似问题