大型网站技术架构-读书笔记

2017年11月04日

第一章

网站架构演进

  1. 网站最开始时业务量小,数据量也不大,所以会是一种 all in one 的架构,即所有的服务以及数据都在同一个机器上

  1. 业务量开始增大,数据量增大,所以会将数据库分出来,以一定维度做数据分隔(数据库的主从设置,读写分离)

  1. 随着网站的用户越来越多,单台服务可能已经无法支撑,所以需要以反向代理做多个相同的web服务

  1. 随着时间的推移,业务越来越复杂,所以需要按一定的维度将业务区分开来,例如分为订单系统,用户中心等,系统间使用mq或者rpc进行业务交互。

  1. 然后,业务越来越多,数据越来越多,数据量大,某些数据查询可能会变得很慢,所以此时就需要缓存了,可以在每台服务器上使用本地缓存,更常用的是,使用redis等分布缓存。

以上是根据自己平时工作中碰到的一些项目,看到的一些架构演进,其实还有一些例如,文件服务器,非关系型数据库Nosql,搜索引擎等。

业务驱动技术,而且一些可能解决起来非常困难的技术问题,可以通过业务进行拆分解析,从而解决。例如12306,同一时刻放票导致的大规模并发访问,也可采用业务上分时段放票,排队机制等方式解决。

最适合的就是最好的架构方案,而并非一定要最求大公司一样的解决方案。