【问题标题】:Commercial Website architecture question商业网站架构问题
【发布时间】:2010-04-29 18:57:50
【问题描述】:

我必须写一个架构案例研究,但有些事情我不知道,所以我想了解以下内容:

网站必须同时处理 5k 个用户。 后端由一个商业软件、一些网络服务、一些消息队列和一个数据库组成。

我想推荐使用 Spring 作为后端,处理不同的元素,并暴露一些 Rest 服务。

我还想推荐前面的检票口(不是重点)。

我不知道的是:我必须将正面和背面安装在同一个 tomcat 服务器上还是两个不同的服务器上?我很想把两台服务器放在前面,带有一个负载均衡器(在这种情况下不需要会话复制)。但是如果我有两个前端服务器,我必须有两个后端服务器吗?我不想造成某种瓶颈。

根据我在this blog 上阅读的内容,一个真正的巨额费用是由一个tomcat 处理的,仅用于提到的第一个网站。但我找不到这方面的任何信息,所以我无法判断这是否合理。

如果你能启发我,让我继续我的案例研究,那将非常有帮助。

谢谢:)

【问题讨论】:

  • 除了其他人所说的之外,我认为值得尝试指定您的“同时”连接以何种方式“同时”。您是真的要让 5,000 个用户都在不断地进行交易(因此您实际上需要保持连接打开),还是您的意思是“同时”,因为网络用户可以“同时”浏览一个网站,但每个人都在做一个每 2 分钟请求一次。
  • 在您的日常工作中进行全面的负载测试,这样您就可以尽早发现是否存在符合规范的问题。
  • 这是一个理论练习,没有实际的应用程序,所以我无法进行任何负载测试。@Neil:我对您对“同时”连接的评论很感兴趣:会有什么不同它使? (请随意真正回答)

标签: java spring architecture tomcat wicket


【解决方案1】:

每层有多个服务器可能有两个主要原因;高可用性和性能。如果您出于 HA 的原因不这样做,那么不幸的答案是“视情况而定”。

拥有两台前端服务器并不意味着您必须拥有两台后端服务器。后端是否会承受足够高的负载以致需要两台服务器?这在很大程度上取决于它在做什么,并且最好通过负载测试和/或分析来揭示。不过,对于一个同时处理 5000 个用户的网站,我的猜测是肯定的……

【讨论】:

    【解决方案2】:

    这完全取决于您的应用程序。你的课程有多重? (Wicket 以在会话中投入很多而闻名)。您的后端进程有多重。

    想出一些可以扩展的东西可能是一个更好的主意。一个负载均衡器,可以不断添加新服务器以进行扩展。

    测量是您能做的最好的事情。创建 JMeter 脚本并找出您的应用程序中断的位置。从那里开始制定计划。

    【讨论】:

    • 这是一个理论练习,没有实际的应用程序,所以我无法进行任何负载测试。但是你能多谈谈我计划如何扩展吗?谢谢:)
    【解决方案3】:

    扩展我的评论:考虑客户端向您的服务器发出请求的典型过程:

    • 它启动一个连接,这对客户端和服务器都有开销;
    • 它通过该连接发出一个或多个请求,在连接期间保留服务器上的资源;
    • 它会关闭连接,通常会释放应用程序资源,但通常在连接关闭后仍会占用服务器上的端口号数秒。

    因此,在设计架构时,您需要考虑以下事项:

    • 您实际上可以在您的服务器上同时保持多少连接打开?如果您使用的是 Tomcat 或其他标准服务器,每个连接只有一个线程,您可能会遇到同时拥有 5,000 个线程的问题; (另一方面,基于 NIO 的架构可以处理数千个连接,而每个连接不需要一个线程);如果您在共享环境中,您可能根本无法拥有那么多打开的连接;
    • 如果客户端在“会话”期间没有保持连接打开,那么在请求数量和/或每个连接时间之间的正确平衡是什么,请记住建立和关闭连接的开销(初始化加密会话(如果相关)、创建连接时的网络开销、连接关闭后端口“占用”一段时间)

    然后更一般地说,我会说考虑:

    • 无论您采用何种架构,如果特定组件被证明是瓶颈,您如何轻松地重新架构/替换它们?
    • 对于您使用的每个“黑匣子”组件/框架,它为您解决了哪些实际问题,它的局限性是什么? (不要只使用 Tomcat,因为你老板的伴侣的伴郎在酒吧里告诉过他们......)

    我也同意其他人所说的——在某些时候你不需要太理论化。设计一些合理的东西,然后运行一个测试平台,看看它实际上是如何处理你预期的数据量的。 (您可能没有构建整个应用程序,但您可以开始预测“我们将有 X 个客户端每 Z 分钟发送 Y 个请求,其中 p% 的请求将花费 n 毫秒并将 r 行写入数据库“……)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-08
      • 2013-03-10
      • 2011-09-13
      • 2012-04-29
      • 1970-01-01
      相关资源
      最近更新 更多