代码之家  ›  专栏  ›  技术社区  ›  cdeszaq Sudhir N

设计一个能够很好地扩展的基于Web服务的体系结构有哪些好的资源?[关闭]

  •  3
  • cdeszaq Sudhir N  · 技术社区  · 15 年前

    我有一个Web应用程序,目前有大约500000个用户,平均每小时500个页面浏览量,我们预计明年将扩展到20000000个用户。

    我们目前的系统不能处理这种规模,所以我们需要转移到一个可以。

    我认为基于服务的体系结构将更加健壮,允许组件服务独立于彼此和主应用程序进行扩展。

    但有人警告我说,人们可以很容易地设计出一个扩展性不好的服务体系结构,而且由于我在设计这样一个系统方面几乎没有经验,所以浏览一些推荐的资源可能比“尝试一下”要好。

    那么,推荐什么资源来构建一个井伸缩系统呢?平台是.NET,但我可以想象,无论平台如何,相同的信息都适用于任何基于服务的体系结构。

    3 回复  |  直到 15 年前
        1
  •  2
  •   cofiem    15 年前

    我首先回答了gennady shumakher的评论:“你认为当前系统的瓶颈是什么,不可扩展?”。一旦您知道了这一点,那么您就可以具体地处理它,然后根据需要处理整个应用程序。

    一项有趣的研究是Twitter。它开始时只有少量的请求,但很快发展成为一个使用率很高的平台,拥有全球范围的流量。 This 可能有用。还有一个有趣的可能是 blog on scalability .

        2
  •  2
  •   yanky    15 年前

    我想推荐易趣 architectural principles presentation 而且还不错 writeup 在演示文稿上。实际上,eBay采用了一种典型的面向服务的方法。服务是通过函数提取的,这样每个服务都可以独立扩展。我认为你可以从中吸取教训。

        3
  •  1
  •   Robert Gould    15 年前

    理论上它可以伸缩,但您需要注意延迟。假设您将一个模块外部化,现在您可以有两个服务,代替一个服务,但是在发送、处理、回复一个外部服务的请求时,您可以处理100个内部请求,所以除非您有100个服务器,否则实际吞吐量会降低,但是无论哪种方式,您在维护和服务方面都要付出更多的代价。与1台服务器相比,1台服务器的速度更快。通常,必须在延迟和处理之间测量平衡,根据经验法则,如果需要发送大量数据,最好不要将该步骤划分为服务。幸运的是,你有一个运行系统,你驾驶室测量,大多数人只能从规格猜测这一点。

    因此,考虑一下你的数据流模式和偏好位置,把你的应用程序切割成沿着纹理的服务是一门艺术,而不是与之相反。

    您可能对阅读并发模式感兴趣,因为这就是它的归根结底。