一 大型网站定义
特征:高访问量 海量数据
二 大型网站架构演进
1 用JAVA技术与单机构件的网站
应用 数据库 WEB容器(如Tomcat) Servlet/JSP HTML CSS SSM
对于大型网站核心功能:计算(应用)和存储(数据库)
2 单机负载警告
数据库与应用分离
3 应用服务器负载警告
应用服务器走向集群:
需解决服务器之间的联系
解决方案:
DNS 负载均衡
还需解决Session的问题
解决方案:
* Session sticky(记录Session去了哪个服务器)
session sticky在负载均衡设备上做手脚
单台服务器宕机数据的丢失
负载均衡变的有状态
网络开销增大
* Session 同步
随服务器的增多,开销增大
WEB服务器保存SESSION数据占据内存
* 建立Session数据库,服务器共同访问
* Cookie Based
小结:建议使用Session sticky 与 Session 同步
4 数据读压力增大
读写分离
构建搜索引擎(搜索引擎其实是读库)
缓存
5 引入分布式存储系统
常见的分布式系统:分布式文件系统 分布式KEY-VALUE系统和分布式数据库
作用:提供一个高容量 高并发访问 数据冗余容灾的支持
6 数据拆分
垂直拆分:拆分不同业务表
水平拆分:拆分同一张业务表
问题:SQL路由(了解需要操作的数据在哪里)
主键处理
数量太大带来的分页
分布式事务管理
7 服务化
服务框架
8 消息中间件
作用:异步和解耦