我刚刚开发了一个小型的网上商店,采用的是struts1.3的一部分代码来做的交易分发,前端用javascript在jQuery的基础上自己做的UI组件。对系统也做了一些性能优化上的考虑,比如将相对变动较少的信息在应用servlet初始化的时候就缓存在服务端啊,再比如商品类前端UI组件使用OO设计,缓存该商品相关的信息,通过改变UI的样式来达到在同一张页面不刷新展现商品的列表信息和详细信息,而不是重新向服务器请求不同的页面等等。
系统部署环境:windows server 2003 + tomcat7 + mysql5.5
通过使用JMeter测试,在一个较为常见的用户场景构成的测试计划下(包括用户登录,查看网站各个页面,挑选商品,查看个人信息,结算,退出等等),启动1000个用户线程,在30分钟内做不断的上述测试计划的操作循环。系统运行比较稳定,交易成功率为100%,CPU的占用也比较低。
我在想,如果按照目前单台服务器部署可以支持1000名在线用户正常使用的话,那么更多的用户应该怎么做?
如果是做集群,那么我想支持的在线人数按照线性推论的话,n台服务器集群后应该可以支持1000*n个用户同时在线。。。。。
这样问题就来了:像12306或者淘宝那样的高并发大网站的话,需要满足同时在线的人数何止百万,如果按照上面的推论,同样的部署环境,我得需要1000台服务器!!! 这显然是不合理的解决方案。。。。。。
那么,究竟他们是如何解决这样的问题的呢? 请有实际经验的朋友和老师解答下。谢谢!