第2章 大型网站及其架构演进过程
第2章 大型网站及其架构演进过程
2.1 什么是大型网站
大型网站要支撑海量的数据和非常高并发的访问量,那么它肯定是一个分布式系统。即使你用小型机而不是PC Server,你也需要用集群来支撑而不是靠单机。
2.2 大型网站的架构演进
2.2.1 用Java技术和单机来构建的网站
选择一个开源的Server作为容器,直接使用JSP/Servlet等技术或者使用一些开源框架来构建我们的应用,选择一个数据库管理系统来存储数据,通过JDBC进行数据库的连接和操作。
在大型网站中,其实最核心的功能就是计算和存储。在图中,DB就是用来存储数据的,而Application Server完成了业务功能和逻辑,是用于计算的。一个网站从小到大的演进可以说是都是在围绕着这两个方面进行处理。
2.2.2 从一个单机的交易网站说起
作为一个交易网站,需要具备的基本功能由三部分:
- 用户
用户管理
信息维护
。。。
- 商品
商品展示
商品管理
。。。
- 交易
创建交易
交易管理
。。。
各个功能模块之间是通过JVM内部的方法调用来进行交互的,而应用和数据库之间是通过JDBC进行访问的。
2.2.3单机负载告警,数据库与应用分离
2.2.4应用服务器负载告警,如何让应用服务器走向集群
2.2.4.1引入负载均衡设备
2.2.4.2解决应用服务器变为集群后的Session问题
2.2.5 数据读写压力变大,读写分离
2.2.5.1 采用数据库作为读库
2.2.5.2 搜索引擎其实是一个读库
2.2.7 读写分离后,数据库又遇到瓶颈
2.2.7.1 专库专用,数据库垂直拆分
垂直拆分是把数据库中不同的业务数据拆分到不同的数据库中。
2.2.7.2 垂直拆分后的单机遇到瓶颈,数据水平拆分
数据水平拆分就是把同一个表的数据拆到两个数据库中。
2.2.8 数据库问题解决后,应用面对的新挑战
2.2.8.1 拆分应用
2.2.8.2 走服务化的路
2.2.9 初识消息中间件
消息中间件有两个常被提及的好处,即异步和解耦。应用A和应用B都和消息中间件打交道,而这两个应用之间并不直接联系。这样就完成了解耦,目的是希望收发消息的双方彼此不知道对方的存在,也不受对方影响,所以将消息投递给接收者实际上都采用了异步的方式。
#读书笔记#