项目成长记(五) ―― 大型架构设计
2014-01-11 17:43
435 查看
自从老板说可以提供大量资金,我就彻底放开了,打算要大干一场,但是俗话说工欲善其事必先利其器,所以就开始“利其器”吧!
大家都知道,用户访问到页面会经过很多层级,比如DNS层、负载均衡层、web层等等,我在这里大概总结出6层,如下图
![](http://s3.51cto.com/wyfs02/M01/11/69/wKiom1LOmeHjgtCOAAGWTpPbVf8701.jpg)
如果细分的话肯定不止这几层,这里就抽象出这几层来说,如果能优化好这几层就已经很好了。这里的每一层都可以作为单独的项目来设计架构。
1、首先来说的是DNS层,这一层的技术难点在于大并发的QPS和智能解析用户IP到不同的服务IP,可以通过DNS做最基本的负载均衡。普通的DNS并发可能在20W QPS,可是对于像淘宝这样有800万卖家独立域名来说,这些是远远不够的,所以淘宝单独研发了一款千万QPS能力的高性能DNS防护系统,这些东西可能是远非小公司或者个人能力能解决的,所以这里我们可以用一些第三方的服务,比如DNSPod等。
2、其次要说的是CDN。CDN在大并发压力下,提升效果明显,下图是我设计的CDN架构,大家可以在这个基础上进行扩展和改造,比如可以把能缓存的都缓存起来,比如前端页面,而对于动态的内容通过异步加载进来,对于失效可以采用主动失效方式,比如更新里页面的模版,就发起缓存失效请求,这样可以做到页面的实时更新并且缓存命中率大幅提高。
![](http://s3.51cto.com/wyfs02/M02/11/69/wKioL1LOmdTBFsb6AAFs6uN63p8843.jpg)
3、负载均衡层可以根据规模做多层负载均衡,比如LVS做第一层,Nginx做第二层,可以无限扩展和无单点。一下是负载均衡层的简单架构图:
![](http://s3.51cto.com/wyfs02/M00/11/69/wKioL1LOmdWTyweAAAHqgeSJxPU966.jpg)
4、Web Server层是各个应用的层级,这里有很多应用,他们之间相互隔离但都相互联系,所以我这里推荐SOA架构,即面向服务结构,把不同的服务接口话,这种架构的好处很多,大家可以google百度一下好处和设计方式,然后应用到自己的项目中。一下是我设计的web server架构。
![](http://s3.51cto.com/wyfs02/M02/11/77/wKioL1LRCtnixAEMAACQ7asZbmQ815.jpg)
5、文件系统的功能就是共享存储,对于访问量不大的服务来说,通过NFS+heartbear+DRBD架构就很稳定,而对于大并发服务来说,就需要分布式架构了,这里推荐MFS分布式存储系统,这里从网上借了两张MFS的架构图(第一张是读操作,第二张是写操作),仅供参考。
![](http://s3.51cto.com/wyfs02/M02/11/77/wKiom1LRDZDxesv8AAEUzHk9MMs274.jpg)
![](http://s3.51cto.com/wyfs02/M02/11/77/wKiom1LRDZDxqbNgAAF9-ZZ5pRg665.jpg)
6、数据层的组成有很多种,我这里只举几个大家比较常用的,比如MySQL、Memcached、Redis、Mongodb等,下面我通过一个简单的架构图来展示数据层的设计。
![](http://s3.51cto.com/wyfs02/M01/11/77/wKiom1LREdnzfm9vAAF4WOckjYs932.jpg)
总结:大概的框架已经了解了,每一层都可以很深入的挖掘,这样每一层相互配合,项目不稳定高效才怪呢。又一个周六忙活过了,下一个目标就是具体的细节了,通过压力测试进行验证架构的正确性。
预知后事如何,请听下回分解……
本文出自 “村长爱技术” 博客,请务必保留此出处http://weijingwu.blog.51cto.com/8376555/1350877
大家都知道,用户访问到页面会经过很多层级,比如DNS层、负载均衡层、web层等等,我在这里大概总结出6层,如下图
![](http://s3.51cto.com/wyfs02/M01/11/69/wKiom1LOmeHjgtCOAAGWTpPbVf8701.jpg)
如果细分的话肯定不止这几层,这里就抽象出这几层来说,如果能优化好这几层就已经很好了。这里的每一层都可以作为单独的项目来设计架构。
1、首先来说的是DNS层,这一层的技术难点在于大并发的QPS和智能解析用户IP到不同的服务IP,可以通过DNS做最基本的负载均衡。普通的DNS并发可能在20W QPS,可是对于像淘宝这样有800万卖家独立域名来说,这些是远远不够的,所以淘宝单独研发了一款千万QPS能力的高性能DNS防护系统,这些东西可能是远非小公司或者个人能力能解决的,所以这里我们可以用一些第三方的服务,比如DNSPod等。
2、其次要说的是CDN。CDN在大并发压力下,提升效果明显,下图是我设计的CDN架构,大家可以在这个基础上进行扩展和改造,比如可以把能缓存的都缓存起来,比如前端页面,而对于动态的内容通过异步加载进来,对于失效可以采用主动失效方式,比如更新里页面的模版,就发起缓存失效请求,这样可以做到页面的实时更新并且缓存命中率大幅提高。
![](http://s3.51cto.com/wyfs02/M02/11/69/wKioL1LOmdTBFsb6AAFs6uN63p8843.jpg)
3、负载均衡层可以根据规模做多层负载均衡,比如LVS做第一层,Nginx做第二层,可以无限扩展和无单点。一下是负载均衡层的简单架构图:
![](http://s3.51cto.com/wyfs02/M00/11/69/wKioL1LOmdWTyweAAAHqgeSJxPU966.jpg)
4、Web Server层是各个应用的层级,这里有很多应用,他们之间相互隔离但都相互联系,所以我这里推荐SOA架构,即面向服务结构,把不同的服务接口话,这种架构的好处很多,大家可以google百度一下好处和设计方式,然后应用到自己的项目中。一下是我设计的web server架构。
![](http://s3.51cto.com/wyfs02/M02/11/77/wKioL1LRCtnixAEMAACQ7asZbmQ815.jpg)
5、文件系统的功能就是共享存储,对于访问量不大的服务来说,通过NFS+heartbear+DRBD架构就很稳定,而对于大并发服务来说,就需要分布式架构了,这里推荐MFS分布式存储系统,这里从网上借了两张MFS的架构图(第一张是读操作,第二张是写操作),仅供参考。
![](http://s3.51cto.com/wyfs02/M02/11/77/wKiom1LRDZDxesv8AAEUzHk9MMs274.jpg)
![](http://s3.51cto.com/wyfs02/M02/11/77/wKiom1LRDZDxqbNgAAF9-ZZ5pRg665.jpg)
6、数据层的组成有很多种,我这里只举几个大家比较常用的,比如MySQL、Memcached、Redis、Mongodb等,下面我通过一个简单的架构图来展示数据层的设计。
![](http://s3.51cto.com/wyfs02/M01/11/77/wKiom1LREdnzfm9vAAF4WOckjYs932.jpg)
总结:大概的框架已经了解了,每一层都可以很深入的挖掘,这样每一层相互配合,项目不稳定高效才怪呢。又一个周六忙活过了,下一个目标就是具体的细节了,通过压力测试进行验证架构的正确性。
预知后事如何,请听下回分解……
本文出自 “村长爱技术” 博客,请务必保留此出处http://weijingwu.blog.51cto.com/8376555/1350877
相关文章推荐
- Laravel 对中大型项目的架构设计
- 如何设计一个牛掰的大型项目架构?
- 如何设计一个牛掰的大型项目架构?
- 如何设计一个牛掰的大型项目架构?
- 一、创建Maven项目(大型分布式网站架构设计)
- 如何设计一个牛掰的大型项目架构?
- 如何设计一个牛掰的大型项目架构?
- 负载均衡--大型在线系统实现的关键(下篇)(服务器集群架构的设计与选择)
- 大型网站架构设计及技术总结
- 从不同架构的角度进行web项目的需求分析和系统设计
- 应用 Rational 工具简化基于 J2EE 的项目第 5 部分 :架构与设计
- 分布式架构真正适用于大型互联网项目的架构! dubbo+zookeeper+springmvc+mybatis+shiro+redis
- 负载均衡--大型在线系统实现的关键(下篇)(服务器集群架构的设计与选择)
- 浅谈工业级物联网项目架构设计及实施
- 项目的技术架构(设计思想)
- 大型高性能ASP.NET系统架构设计
- CISSP的成长之路(十二):安全架构和设计
- 大型门户网站架构设计的可伸缩性
- Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!)
- 中小微规模园区建设平安园区的监控项目需求及架构设计