看到很多社区的小组里头有人在讨论大型网站的架构问题,发觉这几年虽然没搞出个新浪百度出来,但是在大型系统的架构上还是有点心得,遂鬼吹一把,来谈谈大型网站的架构设计。

首先我们要明白什么算是大型网站,大型的网站有多大才叫大型?新浪、百度还是Google这般巨大?是用户数量很多,还是业务量很大。这里又分是社区类网站还是新闻类还是电子商务类的网站。

新闻类的最简单,因为大部分是静态新闻的发布,比如新浪新闻等站点(个人觉得新浪应该算是一个站点群集)。社区类的就比较复杂了,功能复杂,数据关联性大,比如天涯,猫扑一类,又或Myspace,校内等。尤其是论坛,国内论坛水风太盛,发帖量居高不下,对优化查询是很大的挑战。电子商务类的网站最大挑战来自于订单量,订单处理有很高的可靠度要求,要保证数据的绝对完整性,这样对数据库的性能肯定有要求,而处理的账务逻辑也很复杂,所以要求跟新闻类和社区类又不相同。我们在这里无法一一分析,既然是鬼吹,就和到一起说了。

如果老师布置的作业多做不完怎么办呢?在我小时候一般有这样的解决方案,几个同学一起做,每人负责一个科目的作业,做好互相抄,这样就只需要很少的时间就能完成。那么网站也是如此,访问量太大怎么办呢?一台服务器忙不过来肯定要几台来一起咯,于是,我们把网站的功能分一分,用户功能一台来负责,新闻栏目一台来负责,论坛功能一台来负责,下载一台来负责,所有的图片放一台,最后留一台当数据库服务器(其实应该两台,做HR热备,防止单点故障),数据库就类似最后负责抄作业的同学,把最后的答案落实到实体上(真的,小时候我就这么做的)。那么这样的方式我称之为纵向的责任分割。这样就把流量分开了。

如果 数学作业太多,一个人也做不完怎么办?一个人不够不会让两个人做啊?那么服务器一样,如果两台服务器都做同一件事情,新闻还好办,如果是论坛怎么办呢?为了动态的分配流量,我们就需要用两台或者多台服务器来做负载均衡(2003自带功能不需要另购软件)。ok,现在我的站点访问量蹭蹭蹭的就上去了。但是现在又有点问题了,一台服务器又是网页又是逻辑的,要负责的责任太重啦,跑不动了,每一台都做这么多事情那么每一台的可承载能力就下降了,为了不再增加更多的服务器,那么我们还要对职责进行一次分割。

这次我们要向福特学习学习,福特发明了生产流水线,每个工人只负责很少的一部分重复的工作,比如拧拧螺丝,但是生产的总体产量得到了很大提高。那么我们也要把一次访问的职责拆分开。

其实呢也就是多层架构的方式,不过这次呢,多层架构的每个层次都在不同的计算机上。如下图

这样子就能够将责任分摊在不同的计算机上了。但是有人可能会问,这样子不是每个人访问的时候响应会变慢?

那是肯定的,但是每个人慢一点点所带来的是整个网站可以容纳更多的用户,每个用户慢1秒,但是能够提高一倍的用户量的话我想大家都会算。这类方式对电子商务类的网站比较适用,对论坛啊新闻类的就不大适合了。

这种方式我称之为横向责任分割。

通过上面两个例子,我们用了,横纵两个方向的责任分割来达到减小每一个服务器的压力并保证系统的完整一致性。基本上几百万的PV是完全没问题的。最后为了改善客户访问的响应速度,还可以在前端通过加缓存的方式来进一步提高性能。

好了,鬼吹至此我已经语枯辞穷语无伦次了。最后感谢各位看客对我的大力支持,谢谢CCTV,感谢MTV ,感谢博客园给我这个鬼吹的机会,谢谢,谢谢大家。

鬼吹灯-漫谈大型网站的架构相关推荐

  1. 大型网站技术架构(3):WEB 前端性能优化

    上次说到了性能优化策略,根据网站的分层架构,可以大致的分为 web 前端性能优化,应用服务器性能优化,存储服务器性能优化三大类 这次来说一下 web 前端性能优化,一般来说,web 前端就是应用服务器 ...

  2. 《大型网站技术架构》《K8S进阶实战》等书籍!送45本!读完工资多个0!

    学习如逆水行舟,不进则退.所以又来给各位读者送书了,这次送45本技术书,内容涉及深度学习.Python.Dubbo.Flutter等. 感谢本次活动的赞助商『电子工业出版社博文视点』 另外!急于购书的 ...

  3. 小白入门:大型网站技术架构负载均衡技术介绍及学习资源推荐

    十年间,负载均衡的前沿技术层出不穷,令用户眼花缭乱.经常在技术网站.文档中出现的"四层负载均衡"."七层负载均衡"字眼有什么含义?有什么区别?对客户网络有哪些不 ...

  4. 【面试精选】关于大型网站系统架构你不得不懂的10个问题

    该文已加入笔主的开源项目--JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识的文档类项目),地址:github.com/Snailclimb/- .觉得不错的话,记得点个Star. ...

  5. 大型网站系统架构演化之路(转)

    前言 一个成熟的大型网站(如淘宝.京东等)的系统架构并不是开始设计就具备完整的高性能.高可用.安全等特性,它总是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式.技术架构.设计思 ...

  6. 大型网站系统架构分析--转

    大型网站系统架构分析 原文地址:http://www.cnblogs.com/Mainz/archive/2009/04/28/1445424.html 千万级的注册用户,千万级的帖子,nTB级的附件 ...

  7. 《大型网站技术架构:核心原理及案例分析》阅读笔记01

    第一篇:概述   1.大型网站架构演化 从上世纪90年代初,Web标准和Web服务出现来计算,互联网发展了仅仅20年,但是,它的发展速度却是惊人的,世界被互联网改变着.随着互联网的发展,越来越多的问题 ...

  8. 读书笔记-大型网站技术架构(核心原理与案例分析)

    一.大型网站架构演化 1.1 大型网站软件系统的特点 高并发.大流量:高可用:海量数据:用户分布广泛,网络情况复杂:安全环境恶劣:需求快速变更,发布频繁:渐进式发展: 1.2 大型网站架构演化发展历程 ...

  9. 各种大型网站技术架构

    引言近段时间以来,通过接触有关海量数据处理和搜索引擎的诸多技术,常常见识到不少精妙绝伦的架构图.除了每每感叹于每幅图表面上的绘制的精细之外,更为架构图背后所隐藏的设计思想所叹服.个人这两天一直在搜集各 ...

最新文章

  1. awk 数组用法【精华贴】
  2. restful-api接口的设计规范介绍
  3. 面向数智营销的 AI FAAS 解决方案
  4. 【pytorch 】torchvision.transforms.CenterCrop==>从图像中心裁剪图片
  5. java怎么获取中文首字母_Java如何获取中文拼音首字母的方法介绍
  6. Excel数据透视表
  7. 百度信息流 绑定服务器,百度信息流账户怎么搭建?百度信息流账户搭建教程...
  8. win10 U盘无法识别修复方法
  9. 我眼中 迪杰斯特拉(Dijkstra)与 普雷姆 (prim)的 区别
  10. 2021年NCIS医疗质量管理控制情况调查表病案首页上传
  11. vue3实现鼠标左键拖拽画矩形框框选功能
  12. 液化气瓶口的二维码“身份证”
  13. 微信支付提示url未注册
  14. Python与R的区别与联系
  15. Redis 作 mysql 的缓存服务器及redis的高可用
  16. 【Visual C++】游戏开发五十四 浅墨DirectX教程二十一 视觉的诡计 公告板 Billboard 技术
  17. JS继承之寄生组合式继承
  18. Winfrom ListView 导出Ecel
  19. excel流程图连接线锁定_流程图_excel版
  20. 杀毒软件 杀毒软件授权码/激活码

热门文章

  1. Hyperreal number
  2. iOS调用 AlipaySDK 支付宝找不到头文件openssl/rsa.h 的解决方案
  3. wordpress 301重定向 htaccess
  4. 虚拟机管理解决方案-VMware篇
  5. Java内存泄露8种情况的总结
  6. CMS 和 G1 收集器比较
  7. python38moduledocs是什么_Python模块(Module)
  8. 消息中间件--RabbitMQ --- 消费端限流 -- 非常重要
  9. 框架源码专题:Spring是如何集成Mybatis的?Spring怎么管理Mapper接口的动态代理
  10. JVM优化系列-对象内存分配和回收的细节