网站每秒20万的并发访问,硬件上使用什么技术,软件上使用什么技术,才能支撑得起来?

解决方案 »

  1.   


    硬件:内存要大,当cup要行
    软件:后台要使用多线程,虚拟内存,硬盘映射,页面建议使用ajax,最好真接使用不要用extjs等已有的架构
      

  2.   

    这个google美妙肯定不值20w,它用的那个只能计算机不是qq能买的起的
      

  3.   

    每秒 20 人的访问量我也不相信,QQ 我也觉得太少见了,质疑中。google 用的服务器听说多数都是人家卖掉的二手机。在网络上就要负载分配。
    你的一台机器同时打开的 TCP 端口数有多少个呢?我觉得需要很多处理 HTTP 通讯的前置机,不能每个请求都不停地打开关闭连接。
    还听说有 DNS 负载均衡,直接将请求按来自的国家区域等分配到不同的 IP 的服务器上。从请求刚发起的瞬间就决定了它去哪个服务器。在这个后台就是普通的一个服务器。还有,那些像图片和 js 文件等静态资源都是由单独的服务器去处理,只有动态计算的内容才有 JSP 服务器处理。我觉得像门户网站很多东西都是静态的,也就是跟哪个用户来访问没有关系,所以它们都可以作缓存处理,那性能上的主要问题变成了服务器的网络和磁盘的这些操作系统上的问题。
      

  4.   

    硬件方面,使用集群技术,内存要大,CPU没特殊要求。
    软件方面,可以将并发率高的服务器,设置成缓存服务器。
    什么意思?
    就是说,并发率很高,那么,数据传输就要避免硬盘和数据库的交互,
    最好达到直接从内存中读取数据。以前公司,门户网站,就采用的缓存服务器,的方式,
    将用户访问的页面内容、图片、歌曲 等等资源,都分配到不同的缓存服务器上面。
    需要时,用户直接从缓存服务器上面获取资源。
    当然,由于以前,不同的网络提供商之间的互访存在瓶颈问题,
    所以,在铁通或者双线机房,还架设了穿梭服务器,进行数据资源的数据穿梭,
    使得双线用户都能较好的享受到网站资源。最后,每秒20W的并发量,我觉得,其实是在扯淡。
    至少,在中国而言,能够达到这么高并发量的站点,绝对不超过五个。
    这么高的并发量,涉及到的内容就非常多了,要求的技术也会非常多。
    从域名解析、IP映射,到集群处理、多机热备、再到缓存处理、资源分配、资源管理、
    再到数据的远程备份,容灾方案等等。
      

  5.   

    google网站是楼主在运营的么,每秒20万并发,用大型机集群吧。
      

  6.   

    这种问题要用google搜英文关键字
      

  7.   

    32位windows操作系统一个进程只能用到2G内存,而IIS一个连接默认堆栈是1M,也就是同时最多只能有2000左右的连接,如果平均一个连接持续时间为0.5s,那么最大的连接负载为4000/s。如果是64位的windows2008支持20W/s并发,至少需要200G内存的支持,而且连接持续时间应低于1s,至于20W线程的并发需要多强的CPU与具体业务相关,带宽与数据相关。
      

  8.   

    居然是标题党。。
      考虑高并发,可以考虑用nosql数据库....可以看看javaEye上robbin的博客,《为什么要用NOSQL》
      

  9.   

    20万并发解决方案:
    IP&DNS分流策略:以国内为例,将其分为几大区域,可根据各个区域的网络出口划分,分别部署相应的应用程序,每个地方的访问请求根据其IP自动导向各区域服务器。
    服务器前置均为WEB大前置,配以负载均衡。后端数据配以数据库大集群,所有数据同步。
    至于硬件方面,没什么特殊要求了,标准配置就行了。关键在于分流。。
    此方案难处是在后期维护。机器太他妈多了WEB服务器方面,IIS就不要来了。。确实有点压力。。关于20万并发存在不存在的问题,国内是有的哈,只不过不一定是网站。银行证券金融行业的交易,都有可能达到这个数字
      

  10.   

    就拿Google来说吧,搜索一个字母“a”的时间在 0.06 秒左右,结果在25,310,000,000 条左右!如果用常规的爬虫和单机是不可能的完成的!
    (提一下前几天韩国查出Google的220多个硬盘)Google的服务在各地都是独立的!
    比如说,在每个地区都有独立的DNS解析服务器,网站服务器,缓存服务器和数据服务器等等,DNS服务器将请求转发至该地区的服务器进行处理,数据服务器对关键字的检索都建有索引,然后将索引数进行统计!
    也就是说Google在每个地区的服务都是独立的,通过关键字索引将数据进行整合思路就是这样,至于实现的话,每个支点都是技术难点!
    对于每秒20万并发量的网站,Google的思路是不二的选择,至于特殊的需求如同步问题等,需要单独的服务器和单独的应用来处理来,降低耦合度!
      

  11.   

    http://www.alexa.com/http://alexa.chinaz.com
      

  12.   

    如果纯粹从硬件上考虑,Web服务器集群,静态页面和动态页面负载均衡,一个常见的例子:一台IHS+3台WAS的cluster软件上考虑,内存数据库,多线程,异步写.......
      

  13.   

    我不知道北京的公交系统是怎么实现的,但是就成都的公交系统来说,刷卡的机器貌似都是offline的吧。。所以哪儿有啥并发的问题啊?
      

  14.   

    Google 每天 35 亿的 PV,但人家有近百万台服务器,虽然都是廉价的服务器,但是量在那里摆着。
      

  15.   

    楼主的意思有没有包含数据库的处理?
    比如Twitter,新浪微博等这些数据流量很大的公司,对于数据库的操作是很重要的。
    据说,twitter用的技术包括NOSQL。楼主有兴趣去研究一下。
      

  16.   

    楼主其实就是想知道如何获得大的并发吧:我这里提供一个思路看看是否可行
    1.网站的话只有一个域名,因此也就只有一个静态IP,因此在这个域名对应ip主机上先可以做一个前置机,前置机的作用就是负责转发不同的web服务器(每个web服应用相同)去处理,根据请求处理能力配置相应前置机的硬件。
    2.web服务器可以扩充的,因此达到并发要求不难
    3.web到数据库这块可能有瓶颈,因为要保持数据的一致性话,每个数据表只能在一个数据库,但是可以对数据库表进行相关性划分,不相关的表可以在不同的数库上,这里在设计表的时候也要注意降低表之间的耦合度,无关联的表在不同的数据库上。
    4.使用内存数据库缓存,对于已经查询出来的数据可以做内存数据库缓存,下次可以直接在内存库中获取数据,这样速度就会开些。上面我提供的这个方案有两个瓶颈一个是前置机,一个数据库,
    前置机应该有问题解决(应该一个域名可以映射到多个ip上,这个我了解不清楚,理论上可以的),
    数据库搞分布式又能保持数据一致性不知道目前能不能做到(多个一样的数据库,对一个进行修改其它库也能进行同步更新,估计很难做到)。
      

  17.   

    想讨论,又不敢讨论。反正人家Google是有100多万台服务器的,然后是听说大部分操作系统是RHEL。当然,顶尖的管理员也是一大堆的。
      

  18.   

    20W并发量的在一个时间单位上,那么有一点可以肯定,一台服务器无论多好都搞不定这个数字。
    根据我的经验,我做的一个网站,每秒500的并发量,2x4核心3.0GHZ的cpu 16G内存。我自认为我设计得不怎么样,那么假设你是一个神级设计师,可以让这台机器并发量提升到1K,那么你至少需要200台这样的服务器。
    那么当服务器多起来,就要考虑同步的问题和数据完整性问题,那么你要配置数据库集群,因此在这200台服务器中要分离出若干机器专门做数据库,另外机器专门做网站,假设100台做网站,100台做数据库服务器,这个时候又有问题,数据库之间的同步问题和数据完整性问题如何解决?那就要做数据库集群,假设你很有钱,配置的都是oracle,那么做oracle集群,那么你要购置一台超高性能的存储和一个超高性能的路由设备来管理这100台服务器(数据库集群需要两个路由的,具体你可以翻看oracle数据库集群的相关资料),我不知道数据库集群软件能不能管理这么多台机器,如果行大概就这样,如果不行,那么集群软件上还要再加集群软件来完成这种功能,假设不行,那么假设一个数据库集群软件只能管理10台机器,那么你至少又要购买11台服务器了。那么网站集群也是如此。这样你就可能需要购买222台服务器加上一个高性能存储在假设一个高性能服务器路由了,好吧,这种情况还是你已神级的设计来完美的设计了系统,他们充分发挥了服务器的性能,但是即使这样,服务器之间大部分的性能可能没有花费在你的系统业务上,而是各个服务器之间的数据通信上,这种消耗可能占用掉服务器本身系统资源的一半,那么这样的话,你就要买更多的服务器来完成这种要求,而且你的设计不可能到那种完美的程度,那么你可能要购买相当与300台服务器来处理20W用户访问的系统。而且你还要雇佣一批相当专业的人来维护这个庞大的系统(千万不要请菜鸟,万一把服务整宕机,那么你就完了)