自从老板说可以提供大量资金,我就彻底放开了,打算要大干一场,但是俗话说工欲善其事必先利其器,所以就开始“利其器”吧!

        大家都知道,用户访问到页面会经过很多层级,比如DNS层、负载均衡层、web层等等,我在这里大概总结出6层,如下图

项目成长记(五) ——  大型架构设计_lnmp

       如果细分的话肯定不止这几层,这里就抽象出这几层来说,如果能优化好这几层就已经很好了。这里的每一层都可以作为单独的项目来设计架构。

       1、首先来说的是DNS层,这一层的技术难点在于大并发的QPS和智能解析用户IP到不同的服务IP,可以通过DNS做最基本的负载均衡。普通的DNS并发可能在20W QPS,可是对于像淘宝这样有800万卖家独立域名来说,这些是远远不够的,所以淘宝单独研发了一款千万QPS能力的高性能DNS防护系统,这些东西可能是远非小公司或者个人能力能解决的,所以这里我们可以用一些第三方的服务,比如DNSPod等。

       

       2、其次要说的是CDN。CDN在大并发压力下,提升效果明显,下图是我设计的CDN架构,大家可以在这个基础上进行扩展和改造,比如可以把能缓存的都缓存起来,比如前端页面,而对于动态的内容通过异步加载进来,对于失效可以采用主动失效方式,比如更新里页面的模版,就发起缓存失效请求,这样可以做到页面的实时更新并且缓存命中率大幅提高。

项目成长记(五) ——  大型架构设计_架构_02


    3、负载均衡层可以根据规模做多层负载均衡,比如LVS做第一层,Nginx做第二层,可以无限扩展和无单点。一下是负载均衡层的简单架构图:

项目成长记(五) ——  大型架构设计_mysql_03

    4、Web Server层是各个应用的层级,这里有很多应用,他们之间相互隔离但都相互联系,所以我这里推荐SOA架构,即面向服务结构,把不同的服务接口话,这种架构的好处很多,大家可以google百度一下好处和设计方式,然后应用到自己的项目中。一下是我设计的web server架构。

项目成长记(五) ——  大型架构设计_mysql_04


   5、文件系统的功能就是共享存储,对于访问量不大的服务来说,通过NFS+heartbear+DRBD架构就很稳定,而对于大并发服务来说,就需要分布式架构了,这里推荐MFS分布式存储系统,这里从网上借了两张MFS的架构图(第一张是读操作,第二张是写操作),仅供参考。

项目成长记(五) ——  大型架构设计_proxy_cache_05

项目成长记(五) ——  大型架构设计_proxy_cache_06

   

    6、数据层的组成有很多种,我这里只举几个大家比较常用的,比如MySQL、Memcached、Redis、Mongodb等,下面我通过一个简单的架构图来展示数据层的设计。

项目成长记(五) ——  大型架构设计_mysql_07


       总结:大概的框架已经了解了,每一层都可以很深入的挖掘,这样每一层相互配合,项目不稳定高效才怪呢。又一个周六忙活过了,下一个目标就是具体的细节了,通过压力测试进行验证架构的正确性。

       预知后事如何,请听下回分解……