大型网站技术架构

看完《大型网站技术架构》读后感,这个书主要内容是以大型网站架构为题,进行分析,如何搭建一个成熟的架构,和其中遇到的问题,以及最后规划了架构师的职业方向。

大型网站架构的进化史

没有一个网站是一诞生就是一个大网站,不管淘宝、亚马逊还是其他等等,庞大的用户量都是慢慢积累的,所以网站架构也都是从最基础的LAMP(Linux+Apache+MySQL+PHP),毕竟这种开源免费最适合初创企业。慢慢随着业务的发展,用户量慢慢上去了,然后所谓的海量数据、高并发等等问题随之出现,而升级架构其实就是解决遇到的问题。

淘宝的架构之路从最开始的LAMP到慢慢升级到JAVA+ORACLE升级到付费的各种产品,再往后阿里开始专注自己的技术路线,自己的开源框架等等,而架构也是在每年的双十一大促的时候经过一次一次的锤炼。

下面是一个网站架构从刚开始慢慢升级打怪的步骤:

1.一个网站的初始架构都是在一个服务器上面包含应用程序+数据库+文件

2.随着用户量增长,对应用程序、数据库、文件进行分离,放到三台服务器上,针对业务需求选择机器的配置,比如应用程序需要处理大量的业务要选择一个更快更强大的CPU,数据库需要快速磁盘检索和数据缓存,需要更快的磁盘和更大的内存,而文件需要出存储大量用户上传的文件,因此需要更大的硬盘。分离完成后,网站的并发能力和数据存储都有了很大改善。

3.下一个问题就是普遍都在讨论的性能问题,可能淘宝和你的网站的区别就在于它的打开速度比你快了1-2秒,可是往往起决定性因素的就是这些小的细节。网站的访问和现实世界的财富分配一样都遵循着二八定律,网站的访问这是80%的业务访问集中在20%的数据上,比如淘宝或者微博,经常操作的肯定是那些活跃用户,经常购买的肯定是口碑评价都好的店铺,所以可以给这20%的数据放到缓存中,可以提高数据库的访问压力

4.解决了数据库访问压力的问题,网站的并发能力是下一个攻克的难点,当一个服务器处理能力不足的时候不要试想找一个更大的服务器来解决(就像一匹马拉不动一辆车的时候,不要试图找一个更强壮的马来拉,应该找两匹马来解决)通过配置服务器集群,采用负载均衡服务器来解决数据量并发问题

5.看似好像都解决了,但是接着回到数据库问题,如果有些数据不是读缓存的,或者缓存过期等问题,又回到之前的数据库压力问题,可以选择数据库读写分离,数据库配置主从关系,会自动完成同步,改善了数据库负载压力

6.随着网站的持续增长,可以把数据库拆分到两台服务器,文件服务器也使用分布式文件系统

7.再之后一些大型的网站架构会从业务下手,将业务拆分,拆成不同的应用,每个应用独立部署,其实业务才是最核心的,比如最典型的12306的网站,2010年刚上线的时候一直崩溃,网上各种大神出谋划策,但是其实12306的问题不在于技术,而在于业务,把几亿人抢票放到同一个时间点,而后面12306的改革也看到了,加入了排队机制,分时间段放票。(12306技术后面由阿里给了技术支持)

秒杀产品架构设计

秒杀是各大电商平台都会搞的促销活动,那对于技术人员来说秒杀意味着什么:1.对现有网站业务的冲击 2.高并发下应用 3.网络及服务器带宽 4.直接下单

解决方式:1.秒杀系统独立部署,为了不影响现有网站的业务 2.秒杀系统页面静态化,不要动态读取内容,写死html内容 3.租借秒杀活动带宽 4.通过js提交到下单

你可能感兴趣的:(读书笔记)