【读书】大型网站与Java中间件实战② 大型网站的架构演进

大型网站的架构演进

什么是大型网站?

  • 支持海量的数据
  • 支持非常高的并发访问量
  • 分布式系统

大型网站的架构演进

用Java技术和单机来构建的网站

【读书】大型网站与Java中间件实战② 大型网站的架构演进_第1张图片
图1. 技术单机构建的网站

从一个单机的交易网站说起

关注的是随着数据量、访问量提升,网站结构发生了什么变化,而不是关注具体的业务功能点

【读书】大型网站与Java中间件实战② 大型网站的架构演进_第2张图片
图2. 基于Java技术用单机构建的交易网站

各个模块之间是通过JVM内部的方法调用来交互的

单机负载警告,数据库与应用分离

  • 遇到的问题

访问量不断增大,服务器负载持续升高

  • 解决方法

数据库与应用分离

【读书】大型网站与Java中间件实战② 大型网站的架构演进_第3张图片
图3. 应用与数据库分开的结构

应用服务器负载告警,应用服务器搭建集群

  • 遇到的问题

应用服务器压力变大

  • 解决方法

应用从单机变成集群

【读书】大型网站与Java中间件实战② 大型网站的架构演进_第4张图片
图4. 应用服务器集群
  • 新的问题

Q1. 用户对服务器的选择问题
Q2. Session的问题

  • 解决方法

Q1. 使用DNS或者添加负载均衡设备


【读书】大型网站与Java中间件实战② 大型网站的架构演进_第5张图片
图5. 引入负载均衡设备的结构

Q2. session 解决方案

  1. Session Sticky
  2. Session Replication
  3. Session 数据集中存储
  4. Cookie Based

数据压力变大,读写分离

  • 采用数据库作为读库

网站业务读多写少


【读书】大型网站与Java中间件实战② 大型网站的架构演进_第6张图片
加入读库后的结构
  • 加入搜索引擎

搜索引擎其实是一个读库,大型网站的站内搜索


【读书】大型网站与Java中间件实战② 大型网站的架构演进_第7张图片
加入搜索引擎的结构
  • 缓存

加速数据读取的利器

  1. 数据缓存
  2. 页面缓存


    【读书】大型网站与Java中间件实战② 大型网站的架构演进_第8张图片
    加入缓存后的结构

分布式存储系统

  • 弥补关系型数据库的不足
【读书】大型网站与Java中间件实战② 大型网站的架构演进_第9张图片
引入分布式存储系统的结构

数据库新瓶颈

  • 单个数据库过大
  1. 专库专用,数据垂直拆分

把数据库中不同的业务数据拆分到不同的数据库中

  1. 数据水平拆分

同一个表的数据拆分到两个数据库中

你可能感兴趣的:(【读书】大型网站与Java中间件实战② 大型网站的架构演进)