书单之大型网站架构技术-思维导图(二)
Introduction
为了解决大型网站面临的高并发访问、海量数据处理、高可用运行等一系列问题与挑战,大型互联网公司在实践中提出了许多解决方案,以实现网站高性能、高可用、易伸缩、可扩展、安全等各种技术架构目标,逐渐形成饿大型网站架构模式。

第二章节 网站架构模式
分层
在横向维度上切分成几个部门,每个部分负责相对单一职责,然后通过上层对下层的依赖和调用组成一个完整的系统。

挑战:合理规划层次边界和接口,严格遵循分层架构的约束,禁止扩层次调用(应用层调用数据层)及逆向调用(数据层调用服务层,或者服务层调用应用层)。
分割
在纵向方向对业务进行切分,将服务和数据等不同功能和服务分割开来,包装成高内聚低耦合的模块单元
- 有助于开发和维护
- 不同模块分布式部署,提高网站并发处理和功能扩展能力
分布式
不同模块部署在不同服务器,通过远程调用协同工作。
问题: 1. 网络通信 2. 宕机故障转移 3. 数据一致性 4. 开发管理维护困难
常用分布式方案: 1. 分布式应用和服务:将分层和分割后的应用和服务模块分布式部署 2. 分布式静态资源:js、css、图片等资源分布式部署 3. 分布式数据和存储 4. 分布式计算:Hadoop及MapReduce分布式计算框架
集群
多台服务器部署相同应用构成一个集群,通过负载均衡设备共同提供服务。
缓存
分类:
- CDN,内容分发网络–静态网站资源
- 反向代理
- 本地缓存
- 分布式缓存
前提条件:
- 数据访问热点不均衡
- 数据在某个时间段内有效,不会很快过期,否则产生脏数据
异步
业务之间的消息传递不是同步调用,而是将一个业务操作分成多个阶段,每个阶段之间通过共享数据的方式异步执行进行操作。
- 提供系统可用性
- 加快网站响应速度
- 消除并发访问高峰
冗余
自动化
- 自动化发布
- 自动化代码管理
- 自动化测试
- 自动化安全监测
- 自动化部署
- 自动化监控
- 自动化报警
- 自动化失效转移
- 自动化失效恢复
- 自动化降级
- 自动化分配资源
安全
- 密码+手机验证码进行身份验证
- 登陆、交易等通信户数加密
- 敏感数据加密
- XSS攻击、SQL注入
- 垃圾、敏感信息过滤等
小结
好的设计绝不是模仿,不是生搬硬套摸个模式,而是对问题深刻理解之上的创造和创新。即使是‘微创新’,也是让人耳目一新的似曾相识。山寨与创新的最大区别不在于是否抄袭,是否模仿,而在于对问题和需求是否真正理解与把握。