《大型网站技术架构:核心原理与案例分析》读书笔记 - 第1篇 概述

技术更新快,而本书出版时间略早,部分新技术没有提到,但是不影响整体,值得一读。

 

这是一本关于网站架构的书,阐述网站技术架构最基本的驱动力,基础的架构设计原理,以及构架方案选择的价值观。

  第1篇,从演化、模式、要素三个维度描述网站整体架构。(对第二篇的总结概述)

  第2篇,从性能、可用性、伸缩性、扩展性、安全五要素方面详细描述网站架构核心原理,其中重要的负载均衡、异步处理、分布式缓存等技术方案又在不同章节多角度描述。

  第3篇,通过几个具体案例再一次从整体和局部描述网站架构方法。

  第4篇,从架构师做事的角度回顾网站技术架构。

第1篇 概述

1 大型网站架构演化 2

1.1 大型网站软件系统的特点 3

  高并发、大流量、高可用、海量数据、...渐进式发展。

1.2 大型网站架构演化发展历程 4

1.2.1 初始阶段的网站架构 4

 

1.2.2 应用服务和数据服务分离 4

侧重点:

应用程序:CPU

数据库服务器:磁盘内存

文件服务器:硬盘

1.2.3 使用缓存改善网站性能 5

 

二八定律:80%的业务访问集中在20%的数据上

缓存分为:1.本地缓存(应用服务器上),2.远程缓存(分布式缓存服务器上)

1.2.4 使用应用服务器集群改善网站的并发处理能力 6

使用集群是解决网站高并发、海量数据问题的常用手段。

1.2.5 数据库读写分离 7

配置两个数据库主从关系。

1.2.6 使用反向代理和CDN加速网站响应 8

CND:部署在网络提供商的机房,使用户在请求网站服务时,可以从距自己最近的机房获取数据。

反向代理:部署在网站的中心机房,当用户请求到达中心机房后,首先访问反向代理服务器,如果缓存着用户请求的资源,将直接返回给用户。

1.2.7 使用分布式文件系统分布式数据库系统 9

 

分布式数据库是网站数据库拆分的最后手段,只有单表的数据量非常庞大时使用。网站更常用的数据库拆分手段是业务分库,将不同业务的数据部署在不同的服务器上。

1.2.8 使用NoSQL和搜索引擎 10

或者HBase

1.2.9 业务拆分 11

为了应对日益复杂的业务场景,使用分而治之的手段将整个网站业务分成不同的产品线,如交易网站:首页、店铺、买家、卖家、订单。

具体到技术上,也会根据产品线划分,拆分成许多应用,独立部署维护。通过超链接建立关系(导航栏地址指向不同应用)。

1.2.10 分布式服务 11

将入“用户管理”等公用的业务提取出来,独立部署。

1.3 大型网站架构演化的价值观 13

网站的价值在于它能为用户提供什么价值,在于网站能做什么,而不在于它是怎么做的,所以在网站还很小的时候就去追求网站的架构是舍木逐末,得不偿失的。小型网站最需要做的就是为用户提供好的服务来创造价值,得到用户的认可,活下去,野蛮生长。

1.3.1 大型网站架构技术的核心价值是随网站所需灵活应对 13

伴随小型网站业务的逐步发展,演变成大型网站。

1.3.2 驱动大型网站技术发展的主要力量是网站的业务发展 13

创新的业务发展模式对网站架构逐步提出高更的要求,才使得网站架构得以发展成熟。是业务成就了技术,事业成就了人,而不是相反。

1.4 网站架构设计误区 14

1.4.1 一味追随大公司的解决方案 14

值得学习借鉴,但不要盲从,失去坚持自我的勇气。

1.4.2 为了技术而技术 14

网站架构是为业务存在的,除此毫无意义。

1.4.3 企图用技术解决所有问题 14

技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段解决。

如:12306改成分时段售票。

1.5 小结 15

2 大型网站架构模式 16

模式的关键在于可重复性,通过模式的学习,掌握网站架构的一般思路和解决方案。

2.1 网站架构模式 16

2.1.1 分层 17

好处:便于分工合作开发和维护。

挑战:合理规划层次和接口。

2.1.2 分割 18

将不同功能的模块分割开来,包装成高内聚低耦合的模块单元,一方面有助于开发维护,另一方面提高并发处理能力和扩展能力。

2.1.3 分布式 18

更多机器:CPU、内存、存储资源更多

问题:网络、机器宕机、数据一致性、依赖性错综复杂

不要为了分布式而分布式,常用分布式:应用和服务、静态资源、数据和存储、计算(后台业务处理)、配置、锁、文件系统等。

2.1.4 集群 19

多机器通过负载均衡,提供系统可用性

2.1.5 缓存 20

改善性能的第一手段:CND、反向代理、本地缓存、分布式缓存。

前提:1.数据访问热点不均衡,2.数据不会很快过期(脏读)

2.1.6 异步 20

典型生产者消费者模式。

好处:提高系统可用性、加快网站相应速度、消除并发访问高峰。

注意:可能对用户体验、业务流程造成影响。

2.1.7 冗余 21

数据冗余备份,实现高可用。

数据库冷备份:定期备份存档。

数据库热备份:主从分离。

2.1.8 自动化 22

无人值守网站可以正常运行,一切自动化是网站的理想状态;自动化架构主要集中在发布维护方面。包括:

发布过程、代码管理、测试、安全检测、部署、监控、报警、失效移交、失效恢复、降级(关闭不重要的服务)、资源分配

2.1.9 安全 23

互联网的开发特性使其面对巨大安全挑战:

1.密码+手机码身份验证

2.交易等敏感数据加密

3.验证码识别机器人

4.XSS攻击、SQL注入等进行编码转移

5.敏感信息过滤

6.对转账等重要操作风险管控

2.2 架构模式在新浪微博的应用 23

 

2.3 小结 25

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

软件架构:有关软件整体结构与组件得抽象描述,用于指导大型软件系统各个方面得设计。

除系统功能需求外,需要关注以下5个要素。

3.1 性能 27

性能是一个网站的重要指标。从用户浏览器到数据库,响应请求的所有环节都可以性能优化。

1.浏览器:缓存、页面压缩、合理布局、减少cookie传输

2.CND

3.服务器端:缓存

4.异步:消息队列

5.集群

6.代码:多线程、改善内存管理

7.数据库:索引、缓存、SQL优化

3.2 可用性 28

衡量标准是假设一台以上宕机,是否可用。主要手段是冗余(备份)

3.3 伸缩性 29

是否可以用多台服务器构成集群,是否容易向集群中添加新机器,新机器是否可以提供无差别的服务,可容纳的总服务器数是否有限制。

3.4 扩展性 30

关注功能需求。快速响应需求变更。

标准:增加新业务产品时,是否可以对现有产品透明无影响。

手段:事件驱动架构(消息队列)、分布式服务(业务和可复用服务分离)

3.5 安全性 30

针对各种攻击与盗密手段,是否有可靠的应对策略。

3.6 小结 31

本章是第2篇 架构的归纳和总结。

posted @ 2018-12-24 17:28  fancybox  阅读(133)  评论(0编辑  收藏  举报