一 概述
1.大型网站构架技术的核心价值是随着网站所需灵活应对
2.驱动大型网站技术发展的主要力量是网站的业务发展(同理,驱动个人技术提升的主要力量在于工作中接触此类工作的经验的积累)
3.解决大型网站的问题,不能认死理,没有固定的解决方案,不能为了技术而技术,有时甚至改变下业务方的应用场景,也能解决问题(比如12306网站)。
二 架构
1.大型网站常用的几种架构模式:
1 分层
2 分割
3 分布式
4 集群
5 缓存
6 异步
7 冗余
8 自动化
9 安全
PS.好的设计模式需要架构者深入理解,并根据实际业务场景应用和微创新
2.五个核心要素:性能、可用性、伸缩性、扩展性、安全性
3.关于“性能”:
3.1 用户视角的网站性能=开发人员视角的网站性能+运维人员视角的网站性能
3.2 性能指标:响应时间、并发数、吞吐量(TPS\HPS\QPS)、性能计数器(服务器端查看)
3.3 性能测试方法:性能测试、负载测试、压力测试、稳定性测试
3.3 性能优化策略:1.性能分析(日志);2性能优化
3.3.1 web前段性能优化:1.浏览器访问优化;2.CDN加速;3反向代理
3.3.2 应用服务器性能育华:1.分布式缓存;2.异步操作;3.使用集群;4.代码优化
3.3.3 存储性能优化:1.机械硬盘VS固态硬盘;2.B+树 VS LSM树(算法、NoSQL产品);3.RAID VS HDFS (数据结构)
PS.网站性能优化定律:
1.优先考虑使用缓存优化性能
2.任何可以晚点做的事情都应该晚点做(技术要结合业务)
4.关于“可用性”
4.1 应用层主要处理网站应用的业务逻辑,因此有时也称作业务逻辑层,应用的一个显著特点是应用的“无状态性”。
4.2 session管理的几种手段:session复制、session绑定、利用cookie记录session、session服务器
4.3 高可用服务策略:分级管理、超时设置、异步调用、服务降级、幂等性设计
4.4 高可用的数据:CAP原理,为了保证数据的高可用,网站通常会牺牲另一个也很重要的指标:数据一致性
4.5 数据备份:关系数据库热备机制——Master-Slave同步机制
4.5 失效转移:失效确认、访问转移、数据恢复
4.6 软件质量保证:网站发布自动脚本、自动化测试、预发布验证、代码控制
4.7 监控数据采集:用户行为日志收集、服务器性能监控、运行数据报告
4.7 监控管理:系统报警、失效转移、自动优雅降级
5.关于“伸缩性”
5.1 不同功能进行物理分离实现伸缩,单一功能通过集群规模实现伸缩(当一头牛拉不动的时候,不要去寻找一头更强壮的牛,而是用二头牛来拉车)
5.2 应用服务器集群的伸缩性设计——负载均衡服务器:HTTP重定向负载均衡、DNS域名解析负载均衡、反向代理负载均衡、IP负载均衡、数据链路负载均衡(LVS)
5.3 分布式缓存的伸缩性设计——分布式缓存的一致性HASH算法
5.4 数据存储服务器集群的伸缩性设计——关系数据库(Cobar)、NoSQL数据库(HBase)
PS.高手定律:这个世界只有遇不到的问题,没有解决不了的问题,高手之所以成为高手,是因为他们遇到了常人很难遇到的问题
救世主定律:遇到问题,分析问题,最后总能解决问题。如果指望一个外面的救世主来解决自己问题,往往只有彼此的抱怨和伤害,所以这个定律也是“没有救世主定律”
6.关于“扩展性”
6.1 构建可扩展的网站构架(需要经验丰富的架构师根据实际情况来定)
6.2 利用分布式消息队列降低系统耦合性(生产消费者模式)
6.3 利用分布式服务打造可复用的业务平台
6.4 可扩展的数据结构(NoSQL的列族)
7.关于“安全性”
7.1 网站应用攻击与防御:XSS、注入攻击、CSRF攻击、web应用防火墙、网站安全漏洞扫描
7.2 信息加密技术及秘钥安全管理:单向散列加密、对称加密、非对称加密、秘钥安全管理
7.3 信息过滤与反垃圾:文本匹配、分类算法、黑名单
7.4 电子商务风险控制:低风险——交易系统;高风险——人工审核
三 案例
1.淘宝
1.1 不同时期选用不同的技术构架(免费-付费-免费+自主开发)
1.2 小脚船大鞋,不但跑不快,还可能会摔跤
1.3 淘宝主要开源系统:Tair、TFS、OceanBase、DDL
2.维基百科
2.1 CDN服务是核心
2.2 前段服务占业务80%,因此应用服务端和储存压力很小
3.Doris构架分析
3.1 分布式系统的故障分类及不同处理方法:瞬时故障、临时故障、永久故障
4.秒杀系统
4.1 秒杀系统对应策略:
4.1.1 秒杀系统独立部署
4.1.2 秒杀商品页面静态化
4.1.3 租借秒杀活动网络宽带
4.1.4 动态生成随机下单页面URL
4.2 用JS控制秒杀页面按钮的点亮
4.3 控制用户下单入口,应用层发现下单用户超过10个,直接返回活动结束页面
4.4 大型网站典型故障案例分析
五 架构师
5.1 领导的真谛:寻找一个值得共同奋斗的目标,营造一个让大家都能最大限度发挥自我价值的工作氛围
5.2 提出问题的Tips:
5.2.1 把“我的问题”表达成“我们的问题”
5.2.2 给上司提封闭式问题,给下属提开发式问题
5.2.3 指出问题而不是批评人
5.2.4 用赞同的方式提出问题
5.3 漫画网站构架师:各种职责和分类
PS.到此,这本《大型网站技术架构》一书,已经看完和笔记,总体感觉下来,这本书较《大型网站系统与Java中间件实践》一书更浅显易懂,各章节分类明晰,又结合很多案例。虽然里面关于技术细节方面的东西讲的没那么多,更多的是关于构架方便的东西。但是整本书读下来不会让人有很深涩难懂的感觉,整本书从思想的角度解析了网站系统的构成,更多的是教大家怎么面对实际工作中可能遇到的问题,感觉十分受用,每一章都可以在以后工作中用的到。