大型网站的架构演进
什么是大型网站?
- 支持海量的数据
- 支持非常高的并发访问量
- 分布式系统
大型网站的架构演进
用Java技术和单机来构建的网站
图1. 技术单机构建的网站
从一个单机的交易网站说起
关注的是随着数据量、访问量提升,网站结构发生了什么变化,而不是关注具体的业务功能点
图2. 基于Java技术用单机构建的交易网站
各个模块之间是通过JVM内部的方法调用来交互的
单机负载警告,数据库与应用分离
- 遇到的问题
访问量不断增大,服务器负载持续升高
- 解决方法
数据库与应用分离
图3. 应用与数据库分开的结构
应用服务器负载告警,应用服务器搭建集群
- 遇到的问题
应用服务器压力变大
- 解决方法
应用从单机变成集群
图4. 应用服务器集群
- 新的问题
Q1. 用户对服务器的选择问题
Q2. Session的问题
- 解决方法
Q1. 使用DNS或者添加负载均衡设备
图5. 引入负载均衡设备的结构
Q2. session 解决方案
- Session Sticky
- Session Replication
- Session 数据集中存储
- Cookie Based
数据压力变大,读写分离
- 采用数据库作为读库
网站业务读多写少
加入读库后的结构
- 加入搜索引擎
搜索引擎其实是一个读库,大型网站的站内搜索
加入搜索引擎的结构
- 缓存
加速数据读取的利器
- 数据缓存
页面缓存
加入缓存后的结构
分布式存储系统
- 弥补关系型数据库的不足
引入分布式存储系统的结构
数据库新瓶颈
- 单个数据库过大
- 专库专用,数据垂直拆分
把数据库中不同的业务数据拆分到不同的数据库中
- 数据水平拆分
同一个表的数据拆分到两个数据库中
网友评论