学习笔记-大型网站架构演变过程

学习笔记-大型网站架构演变过程_第1张图片
1、Web服务器(Http服务器 + 应用服务器)和数据库部署在同一个服务器主机上。此时,web服务器和数据库在处理业务时可能会互相限制。因此将web服务器和数据库分放在不同的主机上。
结论:不满足服务器设计的高可用性目标, 因为无论是web服务器还是数据库出现问题,都会影响另一端。

学习笔记-大型网站架构演变过程_第2张图片
2、浏览器的请求分为静态资源请求(HTML页面、js脚本、css和img请求)和动态资源请求( jsp/php),因此将web服务器分离出处理静态资源和动态资源。 Apache/Nginx是应用广泛的处理静态资源的服务器,也可以成为前端服务器。Tomcat是处理动态资源的服务器,也成为应用服务器。

学习笔记-大型网站架构演变过程_第3张图片
3、缓存处理
前端服务器可以添加静态页面缓存,可以减少前端服务器的负载。数据库服务器也可以进行缓存,可以一定程度提高响应速度。

学习笔记-大型网站架构演变过程_第4张图片
4、web Server 集群 + 读写分离

由于并发访问量过大,需要提供多台服务器主机来进行负载均衡。前端服务器和后端服务器都可以进行这一优化。 那么负载均衡的算法也是一种计算。

对于数据库来说,读操作和写操作的频率和效率都不一样。一般情况下,数据库的读操作频率大于写操作,且读操作的效率高于写操作,主要原因写操作会对数据表上锁。因此可以对数据库进行读写分离,读库和写库。读写分离涉及到数据同步的问题,读操作不会对数据进行更改,但是写操作会。当写库的数据更新了,需要及时的同步到读库中。 replication机制,即同步机制。

负载均衡

学习笔记-大型网站架构演变过程_第5张图片
2、应用服务器的负载均衡需要增加一个任务服务器,对多个应用服务器进行监控,从而为任务选择负载较小的主机进行处理。

学习笔记-大型网站架构演变过程_第6张图片
CDN: 内容分发网络,对不同的地区、ISP接入都能得到效率的提升。
分布式缓存:缓存的主机进行数据共享。
数据库分库与分表:如果一个数据库/数据表特别大,在使用时会锁竞争会极大降低效率。因此,将数据库分库,提高负载均衡。数据表分表,降低数据表的大小从而降低锁竞争。

分库与分表
学习笔记-大型网站架构演变过程_第7张图片
学习笔记-大型网站架构演变过程_第8张图片
Step 5:分布式存储与计算
学习笔记-大型网站架构演变过程_第9张图片

对一致性要求不高的数据,不必存储在关系型数据库中。关系数据库的事务处理会降低服务器的性能。因此,一致性要求不高的数据存放到数据中心,使用NoSQL数据库基于Key-Value形式存储。

学习笔记-大型网站架构演变过程_第10张图片
创建特殊的文件系统的意义:
操作系统对文件的管理,并不会做出对业务需求相关的优化。因此,例如淘宝网会有大量的图片存储,如果只使用操作系统来管理文件,那么在查找图片时可能会使磁盘的磁头来回移动,降低效率。
基于业务逻辑创建特殊的文件系统,可以对文件创建相应的存储标识,类似于hash过程。同时,创建较大的管理单位,也就是存储快来对小文件进行管理,从而降低磁盘I/O等消耗。

Map/Reduce,分布式计算框架。
举个栗子: 统计一个大文件中单词的个数,word count。

如果使用多台主机对这个大文件进行处理,那么每台主机的任务是处理这个大文件的一部分,对识别到的单词,进行map(hash映射),然后对每台主机的map结果进行合并(reduce)过程。

架构中所有的通信过程,都需要Socket编程!

你可能感兴趣的:(Socket网络编程)