大型网站技术架构 – 第一节读书笔记
Contents
第一章:大型网站架构演变
作者:黄志成
博客:地址
这本书是我从转转上买来的.原本买一本书的钱现在可以买三本了.然后一下就买了七本书.家中的藏书又多了.估计得看个两三年了.
这个读书笔记分享的是李智慧老师的《大型网站技术架构-核心原理与案例分享》.
一听名字就很霸气.拿到手就爱不释手.哈哈。晚上看了第一章.顺便做了一下读书笔记.
第一章说了一个大型网站的架构演变.下面我将罗列一一出来.
初始阶段网站的架构
应用程序,数据库,文件所有资源都在一台服务器上.
这种是所有网站都会经历的一个过程.在初期,更关心的是业务能不能快速上线.
应用服务器和数据服务分离
随着网站业务发展,一台服务器不能满足需求,需要拆分为三台.
- 应用服务器 :如果处理大量的逻辑应该选择更快更强大的CPU
- 文件服务器 :需要存储大量用户上传文件,因此需要更大更快的磁盘.
- 数据库服务器 :数据库服务器需要快速磁盘检索和数据缓存,需要更快的硬盘和更大的磁盘
使用缓存改善网站性能
网站访问特点:80%的业务访问集中在20%的数据上(二八定律)
淘宝买家浏览的商品集中在成交数多,评价好的商品上,
百度搜索的词汇集中在少部分热门词汇上
这个时候我们主要将20%的热数据缓存到我们的缓存服务器.
使用应用服务器集群改善网站并发处理能力
使用集群是网站解决高并发、海量数据问题的常用手段.
当一台服务器处理出现瓶颈的时候,不要企图换一台更大的服务器,
对大型网站而言,不管多强大的服务器,都满足不了网站持续增长,
这种情况,应该是增加一台服务器分担原有服务器的访问及存储压力
数据库读写分离
网站使用缓存后,大部分数据读操作都可以不通过数据库完成
但是仍有少部分读操作和大量写操作需要访问数据库
当网站的用户到达一定规模后,数据库因为负载压力过高而成为网站瓶颈
使用反向代理和CDN加速网站响应
随着网站业务不断发展,用户分布越来越广泛,
由于中国复杂的网络环境,不同地区的用户访问网站时,速度差别也特别大
CDN和反向代理的基本原理都是缓存,
CDN部署在网络提供商的机房,使用户请求网站时,可以从最近的网络提供商机房获取数据
而反向代理则部署在网站的中心机房,当用户到达中心机房后,首先访问的就是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源就将其直接返回给用户.
使用分布式文件系统和分布式数据库系统
任何强大的单一服务器都满足不了大型网站持续增长的业务需求.
数据库主从是做到了数据的备份,但是随着网站的发展依然不能满足需求了.
现在需要用到分布式的数据库和文件系统。
分布式数据库是网站数据库拆分的最后手段,只有单标数据库规模非常大的时候才使用.
更常用的数据库拆分手段是业务分表,将不同业务的数据库部署在不同物理服务器上.
使用NoSQL和搜索引擎
随着网站越来越复杂,对数据的存储和检索需求也越来越复杂,
NoSQL和搜索引擎都是源于互联网的技术手段,对可伸缩的分布式具有更好的支持
应用服务器则通过一个统一的访问模块去获取数据,减轻应用程序管理诸多数据源的麻烦
业务拆分
大型网站为了应对日益复杂的业务场景,通过使用分而治之的手段将整个网站业务分成不同产品线,
如大型购物交易网站就会将首页、商铺、订单、买家、卖家等拆分成不同的产品线,分归不同团队管
具体到技术上,也会根据产品线划分,将一个网站拆分成不同的应用,每个应用可以独立部署维护.
应用之间可以通过一个链接,比如首页跳转到商品详情页建立关系也可以通过消息队列进行数据分发,
最多还是通过访问一个数据库来构成一个想关联的完整系统
分布式服务
随着业务拆分越来越小,存储系统越来越复杂,应用系统的整体复杂呈指数级增加,部署维护越来越困难。
由于所有应用要和数据库建立连接,在数万台服务器规模上,这些连接数是服务器规模的平方,导致资源不足,拒绝服务.
既然每一个应用都要执行相同业务操作,比如用户管理、商品管理等,那么可以将这些共用业务提取出来,独立部署.
由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务
总结
大型网站的架构演化到这里,基本上大多数问题都能解决,诸如跨数据中心的数据同步和具体业务相关问题也都可以通过组合改进现有技术架构解决.
但事物发展到一定阶段,就会拥有自身发展的冲突,摆脱其初衷,向着更强大发展.
既然大型网站架构解决了海量数据的管理和高并发事务的处理,那么就可以把这些解决方案应用到网站自身之外的业务上去.
很多大型网站都开始建设云计算平台,例如阿里云,中小网站不需要在关心架构问题,只需要按需付费,就可以使网站随着业务增长而获得更大的存储空间和更多的计算资源.
大型网站演化的价值观
- 大型网站架构技术的核心价值是随网站所需灵活应对
- 驱动大型网站技术发展的主要力是网站业务发展
- 一切脱离业务的架构都是扯淡,是业务成就了事业,是事业成就了人,而不是相反
网站设计误区
- 一味追求大公司的解决方案
- 为了技术而技术
- 企图用技术解决所有问题
最典型的例子就是12306,2012年初12306故障后,各界大神集思广益,为12306出谋划策.
其实真正的问题不在于技术架构上,而在于它的业务.
12306根本不应该在几亿中国人一票难求的情况下以窗口售票的模式在网上售票.
这种模式像是电商的秒杀活动.后来12306改了运营方案.
最后附上第一章的思维导图:
写于:2018年07月16日01:01
发表评论