2010-04-29 46 views
2

我必须写一个架构案例,但也有一些事情,我不知道,所以我想在下面的一些指针:商业网站架构问题

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

我想推荐在后端使用Spring,处理不同的元素,并公开一些Rest服务。

我也想推荐检票口的前面(不是这里的点)。

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

根据我在this blog上读到的内容,一个tomcat只为第一个提到的网站处理了一笔巨额费用。但我找不到任何有关这方面的信息,所以我不能说它看起来是否合理。

如果你能让我高兴,那么我可以继续在我的案例研究中,这将是非常有用的。

谢谢:)

+2

除了其他人所说的话之外,我认为值得尝试指定”同时“连接以何种方式”同步“。你从字面上将有5000个用户都不断地在做交易(因此你真正需要保持连接打开),或者你的意思是在这个意义上“同时” web用户在浏览网站的“同时”,但每个制作每2分钟请求一次。 – 2010-04-29 19:48:22

+0

在日常工作中进行全面的负载测试,以便您尽可能早地看到符合规格的问题。 – 2010-04-29 19:57:33

+0

这是一个theoritical锻炼,有没有实际的应用程序,所以我不能做任何负载测试.. @Neil:我感兴趣的您的评论“同时”连接:它会做出怎样的差异? (随时可以真正回答) – 2010-04-29 20:20:30

回答

1

要扩大我的意见:认为通过该客户机向服务器请求的典型流程:

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

所以在设计你的架构,你需要考虑的事情如:

  • 多少个连接可你居然同时举行公开您的服务器上?如果您在每个连接使用一个线程使用Tomcat或其他标准服务器,则可能会遇到5,000个并发线程问题; (另一方面,基于NIO的体系结构可以处理数千个连接,而不需要每个连接一个线程);如果你处于共享环境中,你可能根本无法拥有那么多的开放连接。
  • 如果客户端在“会话”期间没有保持连接打开状态,请注意请求数量和/或每个连接的时间之间的正确平衡,同时考虑到创建和关闭连接的开销(初始化加密的会话如果相关,在创建连接网络的开销,端口“挤兑”的连接关闭后一段时间)

然后更普遍的,我会说考虑:

  • 在任何如果它们被证明是瓶颈的话,您可以轻松地重新构建/替换特定组件?
  • 每个“黑盒子”组件/框架您使用,它解决什么实际问题对你来说,什么是它的局限性? (不要只是使用Tomcat,因为你的老板的伴侣的最好的人告诉他们关于它的酒吧...)

我也同意其他人说的话 - 在某些时候你不需要太理论化了。设计一些合理的东西,然后运行一个测试平台,看看它是如何处理你预期的数据量的。 (您可能没有整个应用程序设计的,但是你可以开始制作关于“我们将有X客户端发送请求Ÿ每ž分钟的预测,以及这些请求的P%将采取n毫秒,写R行到数据库“......)

5

可能有两个具有每一层多台服务器的主要原因;高可用性和高性能。如果你因为医管局的原因没有这样做,那么不幸的答案就是'这取决于'。

有两个前端服务器不会强制你有两个后端服务器。后端是否会承受足够高的负载,以至于需要两台服务器?这将取决于它在做什么,并且最好通过负载测试和/或分析来揭示它。对于处理5000个并发用户的站点,虽然我的猜测是肯定的......

2

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

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

测量是你能做的最好的事情。创建JMeter脚本并找出应用程序中断的位置。从那里建立一个计划。

+0

这是一个理论性的练习,没有实际的应用程序,所以我不能做任何负载测试。但是你能否多谈一下我如何计划缩放呢?谢谢 :) – 2010-04-29 20:23:10