满足一个大型网站的基本因素:
访问量
业务复杂度
数据量
初始阶段的网站架构
一般来讲,大型网站都是从小型网站发展而来,一开始的架构都比较简单,随着业务复杂和用户量的激增,才开始做很多架构上的改进。当它还是小型网站的时候,没有太多访客,一般来讲只需要一台服务器就够了,这时应用程序、数据库、文件等所有资源都在一台服务器上,网站架构如下图所示:
应用服务和数据服务分离
随着网站业务的发展和用户量的增加,一台服务器就无法再满足需求了。大量用户访问导致访问速度越来越慢,而逐渐增加的数据也会导致存储空间不足。这时就需要将应用和数据分离,应用和数据分离后整个网站使用 3 台服务器:应用服务器、文件服务器和数据库服务器。这 3 台服务器对硬件资源的要求各不相同:
应用服务器业务逻辑,需要强大的CPU
数据库服务器对磁盘读写操作很多,需要更快的磁盘和更大的内存
文件服务器存储用户上传的文件,因此需要更大的磁盘空间
此时,网站系统的架构如下图所示:
我们来思考一个问题:构建一个大规模但依然可靠的软件系统,是否可行?
其实当你真正去使用这些不同的架构方法去解决问题,然后在实践中观察它们的优劣,这确实会是一种很好的成长方式,但这是一个漫长的过程,而且没有哪个大厂会花时间让你自己去探索,所以这些经验又要从哪儿来呢?
答案是:前人的经验。既然别人已经总结了一套通过实践得来的经验,那我们为什么不去用呢?将别人的知识学会再变为自己的,才叫厉害。
这份在 GitHub 暴涨 4W 下载量的大型分布式技术手册,就可以作为大家学习的资料。这份手册是一位阿里大佬写的,他将自己掌握的知识条理清晰地叙述出来,让人听得明白,学得深刻,连阿里内部员工看了都会收藏一份。不如我们一起来看一下这份技术手册吧
这份手册分为五个部分,每一部分都有明确的主题与目标,可以按顺序学,也可以跳过你不感兴趣的部分。不过篇幅有限,下面我就一截图的形式展示吧
第 2 章 访问远程服务
第 3 章 事务处理
第 4 章 透明多级分流系统
第 5 章 架构安全性
第 6 章 分布式共识
第 7 章 从类库到服务
第 8 章 流量治理
第 9 章 可靠通信
第 10 章 可观测性
第 11 章 虚拟化容器
第 12 章 容器间网络
第 13 章 持久化存储
第 14 章 资源与调度
第 15 章 服务网格
这份技术手册不仅能告诉你某个技术点怎么做、为什么这么做,还会让你明白所有技术点如何协同配合,最终构建出一个完整的技术体系。相信大家认真钻研此手册的话,必定能在架构能力方面得到如凤凰涅槃般的升华。