【读书笔记】2017.01.06 星期五 《大型网站架构技术》

本文地址html

分享提纲:前端

  1. 概述git

  2. 知识点github

 

 1.概述


  

  1)【书名及连接】web

  《大型网站技术架构 核心原理与案例分析算法

http://img14.360buyimg.com/n0/jfs/t289/175/737305802/31197/d20604/54213ca6N7d10f6d7.jpg

 

   2)【主要内容】数据库

    由李智慧著做的《大型网站技术架构(核心原理与案例分析)》经过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深刻讲述大型互联网架构设计的核心原理,并经过一组典型网站技术架构设计案例,为读者呈现一幅包括技术SHOU*选型、架构设计、性能优化、web安全、系统发布、运维监控等在内的大型网站开发全景视图。 
    大型网站技术架构(核心原理与案例分析)》不只适用于指导网站工程师、架构师进行网站技术架构设计,也可用于指导产品经理、项目经理、测试运维人员等了解网站技术架构的基础概念;还可供包括企业系统开发人员在内的各种软件开发从业人员借鉴,了解大型网站的解决方案和开发理念。编程

 

  3)【目录结构】  后端

第YI篇 概述 
1 大型网站架构演化 
1.1 大型网站软件系统的特色 
1.2 大型网站架构演化发展历程 
1.2.1 初始阶段的网站架构 
1.2.2 应用服务和数据服务分离 
1.2.3 使用缓存改善网站性能 
1.2.4 使用应用服务器集群改善网站的并发处理能力 
1.2.5 数据库读写分离 
1.2.6 使用反向代理和CDN加速网站响应 
1.2.7 使用分布式文件系统和分布式数据库系统 
1.2.8 使用NoSQL和搜索引擎 
1.2.9 业务拆分 
1.2.10 分布式服务 
1.3 大型网站架构演化的价值观 
1.3.1 大型网站架构技术的核心价值是随网站所需灵活应对 
1.3.2 驱动大型网站技术发展的主要力量是网站的业务发展 
1.4 网站架构设计误区 
1.4.1 一味追随大公司的解决方案 
1.4.2 为了技术而技术 
1.4.3 企图用技术解决全部问题 
1.5 小结 
2 大型网站架构模式 
2.1 网站架构模式 
2.1.1 分层 
2.1.2 分割 
2.1.3 分布式 
2.1.4 集群 
2.1.5 缓存 
2.1.6 异步 
2.1.7 冗余 
2.1.8 自动化 
2.1.9 安全 
2.2 架构模式在新浪微博的应用 
2.3 小结 
3 大型网站核心架构要素 
3.1 性能 
3.2 可用性 
3.3 伸缩性 
3.4 扩展性 
3.5 安全性 
3.6 小结 
第2篇 架构 
4 瞬时响应:网站的高性能架构 
4.1 网站性能测试 
4.1.1 不一样视角下的网站性能 
4.1.2 性能测试指标 
4.1.3 性能测试方法 
4.1.4 性能测试报告 
4.1.5 性能优化策略 
4.2 Web前端性能优化 
4.2.1 浏览器访问优化 
4.2.2 CDN加速 
4.2.3 反向代理 
4.3 应用服务器性能优化 
4.3.1 分布式缓存 
4.3.2 异步操做 
4.3.3 使用集群 
4.3.4 代码优化 
4.4 存储性能优化 
4.4.1 机械硬盘vs. 固态硬盘 
4.4.2 B+树vs. LSM树 
4.4.3 RAID vs. HDFS 
4.5 小结 
5 万无一失:网站的高可用架构 
5.1 网站可用性的度量与考核 
5.1.1 网站可用性度量 
5.1.2 网站可用性考核 
5.2 高可用的网站架构 
5.3 高可用的应用 
5.3.1 经过负载均衡进行无状态服务的失效转移 
5.3.2 应用服务器集群的Session管理 
5.4 高可用的服务 
5.5 高可用的数据 
5.5.1 CAP原理 
5.5.2 数据备份 
5.5.3 失效转移 
5.6 高可用网站的软件质量保证 
5.6.1 网站发布 
5.6.2 自动化测试 
5.6.3 预发布验证 
5.6.4 代码控制 
5.6.5 自动化发布 
5.6.6 灰度发布 
5.7 网站运行监控 
5.7.1 监控数据采集 
5.7.2 监控管理 
5.8 小结 
6 永无止境:网站的伸缩性架构 
6.1 网站架构的伸缩性设计 
6.1.1 不一样功能进行物理分离实现伸缩 
6.1.2 单一功能经过集群规模实现伸缩 
6.2 应用服务器集群的伸缩性设计 
6.2.1 HTTP重定向负载均衡 
6.2.2 DNS域名解析负载均衡 
6.2.3 反向代理负载均衡 
6.2.4 IP负载均衡 
6.2.5 数据链路层负载均衡 
6.2.6 负载均衡算法 
6.3 分布式缓存集群的伸缩性设计 
6.3.1 Memcached分布式缓存集群的访问模型 
6.3.2 Memcached分布式缓存集群的伸缩性挑战 
6.3.3 分布式缓存的一致性Hash算法 
6.4 数据存储服务器集群的伸缩性设计 
6.4.1 关系数据库集群的伸缩性设计 
6.4.2 NoSQL数据库的伸缩性设计 
6.5 小结 
7 随需应变:网站的可扩展架构 
7.1 构建可扩展的网站架构 
7.2 利用分布式消息队列下降系统耦合性 
7.2.1 事件驱动架构 
7.2.2 分布式消息队列 
7.3 利用分布式服务打造可复用的业务平台 
7.3.1 Web Service与企业级分布式服务 
7.3.2 大型网站分布式服务的需求与特色 
7.3.3 分布式服务框架设计 
7.4 可扩展的数据结构 
7.5 利用开放平台建设网站生态圈 
7.6 小结 
8 固若金汤:网站的安全架构 
8.1 道高一尺魔高一丈的网站应用攻击与防护 
8.1.1 XSS攻击 
8.1.2 注入攻击 
8.1.3 CSRF攻击 
8.1.4 其余攻击和漏洞 
8.1.5 Web应用防火墙 
8.1.6 网站安全漏洞扫描 
8.2 信息加密技术及密钥安全管理 
8.2.1 单向散列加密 
8.2.2 对称加密 
8.2.3 非对称加密 
8.2.4 密钥安全管理 
8.3 信息过滤与反垃圾 
8.3.1 文本匹配 
8.3.2 分类算法 
8.3.3 黑名单 
8.4 电子商务风险控制 
8.4.1 风险 
8.4.2 风控 
8.5 小结 
第3篇 案例 
9 淘宝网的架构演化案例分析 
9.1 淘宝网的业务发展历程 
9.2 淘宝网技术架构演化 
9.3 小结 
10 维基百科的高性能架构设计分析 
10.1 Wikipedia网站总体架构 
10.2 Wikipedia性能优化策略 
10.2.1 Wikipedia前端性能优化 
10.2.2 Wikipedia服务端性能优化 
10.2.3 Wikipedia后端性能优化 
11 海量分布式存储系统Doris的高可用架构设计分析 
11.1 分布式存储系统的高可用架构 
11.2 不一样故障状况下的高可用解决方案 
11.2.1 分布式存储系统的故障分类 
11.2.2 正常状况下系统访问结构 
11.2.3 瞬时故障的高可用解决方案 
11.2.4 临时故障的高可用解决方案 
11.2.5 永JIU故障的高可用解决方案 
12 网购秒杀系统架构设计案例分析 
12.1 秒杀活动的技术挑战 
12.2 秒杀系统的应对策略 
12.3 秒杀系统架构设计 
12.4 小结 
13 大型网站典型故障案例分析 
13.1 写日志也会引起故障 
13.2 高并发访问数据库引起的故障 
13.3 高并发状况下锁引起的故障 
13.4 缓存引起的故障 
13.5 应用启动不一样步引起的故障 
13.6 大文件读写独占磁盘引起的故障 
13.7 滥用生产环境引起的故障 
13.8 不规范的流程引起的故障 
13.9 很差的编程习惯引起的故障 
13.10 小结 
第4篇 架构师 
14 架构师领导艺术 
14.1 关注人而不是产品 
14.2 发掘人的YOU秀 
14.3 共享美好蓝图 
14.4 共同参与架构 
14.5 学会妥协 
14.6 成就他人 
15 网站架构师职场攻略 
15.1 发现问题,寻找突破 
15.2 提出问题,寻求支持 
15.3 解决问题,达成绩效 
16 漫话网站架构师 
16.1 按做用划分架构师 
16.2 按效果划分架构师 
16.3 按职责角色划分架构师 
16.4 按关注层次划分架构师 
16.5 按口碑划分架构师 
16.6 非主流方式划分架构师 
附录A 大型网站架构技术一览 
附录B Web开发技术发展历程 
后记
目录结构

 

2. 知识点


 

     1)【软件视图模型】
    机械制图的时候,一般使用三视图描述一个机械零件,从正视、侧视、俯视三个角度对一个零件绘图,从而全面描述一个零件的结构。软件架构设计中经常使用的4+1视图模型,也是一种多角度描述软件系统设计的手段

  

   2) 【垃圾回收】
    JVM为例,其内存主要可划分为堆(heap)和堆栈(stack)。堆栈用于存储线程上下文信息,如方法参数、局部变量等。堆则是存储对象的内存空间,对象的建立和释放、垃圾回收就在这里进行。经过对对象生命周期的观察,发现大部分对象的生命周期都极其短暂,这部分对象产生的垃圾应该被更快地收集,以释放内存,这就是JVM分代垃圾回收,其

  

  3)【重复请求】
    应用调用服务失败后,会将调用请求从新发送到其余服务器,可是这个失败多是虚假的失败。好比服务已经处理成功,但由于网络故障应用没有收到响应,这时应用从新提交请求就致使服务重复调用,若是这个服务是一个转帐操做,就会产生严重后果

  

  4)【数据库链接池】
    应用程序的数据库链接基本都使用链接池(Connection Pool)的方式。数据库链接对象建立好之后,将链接对象放入对象池容器中,应用程序要链接的时候,就从对象池中获取一个空闲的链接使用,使用完毕再将该对象归还到对象池中便可,不须要建立新的链接。
 
 
  5) 【数据库索引结构】
     目前数据库多采用两级索引的B+树,树的层次最多三层。所以可能须要5次磁盘访问才能更新一条记录(三次磁盘访问得到数据索引及行ID,而后再进行一次数据文件读操做及一次数据文件写操做)。

 

 
  6) 【网站的不可用】
    网站不可用也被称做网站故障,业界一般用多少个9来衡量网站的可用性,如QQ的可用性是4个9,即QQ服务99.99%可用,这意味着QQ服务要保证其在全部运行时间中,只有0.01%的时间不可用,也就是一年中大约最多53分钟不可用。

 

 
  7) 【幂等性】
    数学和计算机概念,任意屡次执行所产生的影响均与一次执行的影响相同

 

 
  8) 【预发布服务器】
    预发布服务器是一种特殊用途的服务器,它和线上的正式服务器惟一的不一样就是没有配置在负载均衡服务器上,外部用户没法访问

 

 
  9)【火车发布模型】
    因为火车发布模型是基于规则驱动的流程,因此这个流程能够自动化。采用火车发布模型的网站会开发一个自动化发布的工具实现发布过程的自动化。

 

 
  10) 【网站伸缩性】
    通常说来,网站的伸缩性设计可分红两类,一类是根据功能进行物理分离实现伸缩,一类是单一功能经过集群实现伸缩。前者是不一样的服务器部署不一样的服务,提供不一样的功能;后者是集群内的多台服务器部署相同的服务,提供相同的功能。

 

 
   11)【DNS负载均衡缺点】
    可是DNS域名解析负载均衡也有缺点,就是目前的DNS是多级解析,每一级DNS均可能缓存A记录,当下线某台服务器后,即便修改了DNS的A记录,要使其生效也须要较长时间,这段时间,DNS依然会将域名解析到已经下线的服务器,致使用户访问失败;并且DNS负载均衡的控制权在域名服务商那里,网站没法对其作更多改善和更强大的管理。

 

 
  12)【LVS】
    使用三角传输模式的链路层负载均衡是目前大型网站使用最广的一种负载均衡手段。在Linux平台上最好的链路层负载均衡开源产品是LVS(Linux Virtual Server)。

 

 
  13)【贫血模型 充血模型】
    引伸出旷日持久的业务对象贫血模型与充血模型之争

 

 
  14)【NoSql的放弃】
    NoSQL数据库产品都放弃了关系数据库的两大重要基础:以关系代数为基础的结构化查询语言(SQL)和事务一致性保证(ACID)。而强化其余一些大型网站更关注的特性:高可用性和可伸缩性。
    开源社区有各类NoSQL产品,其支持的数据结构和伸缩特性也各不相同,目前看来,应用最普遍的是Apache HBase。

 

 
   15)【高手定律。救世主定律】
     高手定律:这个世界只有遇不到的问题,没有解决不了的问题,高手之因此成为高手,是由于他们遇到了常人很难遇到的问题,并解决了。
     救世主定律:遇到问题,分析问题,最后总能解决问题

 

 
  16)【ColumnFamily结构的NoSQL】
     而使用支持ColumnFamily结构的NoSQL数据库,建立表的时候,只须要指定ColumnFamily的名字,无需指定字段(Column),能够在数据写入时再指定,经过这种方式,数据表能够包含数百万的字段,使得应用程序的数据结构能够随意扩展。而在查询时,能够经过指定任意字段名称和值进行查询。

 

 
   17)【API接口】
    API 接口:是开放平台暴露给开发者使用的一组API,其形式能够是RESTful、WebService、RPC等各类形式。

 

 

 

  18)【信息加密技术】
    信息加密技术可分为三类:单项散列加密、对称加密和非对称加密。

 

 
   19)【风控】

    大型电商网站都配备有专门的风控团队进行风险控制,风控的手段也包括自动和人工两种。机器自动识别为高风险的交易和信息会发送给风控审核人员进行人工审核,机器自动风控的技术和方法也不断经过人工发现的新风险类型进行逐步完善。浏览器

    机器自动风控的技术手段主要有规则引擎和统计模型。

 

 

  20)【CGI技术】
    通常来讲CGI技术(广义上也包括Java Servlet)被称做脚本模式,CGI程序须要解析HTTP请求,处理业务逻辑,并在输出流中构造响应信息的HTML。这种技术的优势和缺点是同一个特性——能够在CGI程序中作任何事情。

3.思惟导图 

参考连接:

1. 大型网站架构演化

 

 

2. 大型架构模式

 

 

 

3. 大型网站核心架构要素

 

 

 

 

 

 

4. 瞬时响应:网站的高性能架构

 

5. 万无一失:网站的高可用架构

 

 

 

 

 

6. 永无止境:网站的伸缩性架构

 

7. 随机应变:网站的可扩展性架构

 

 

 

 

 

8. 固若金汤:网站的安全机构