大型网站技术架构的学习笔记(一)

来源:互联网 发布:SQL字段保留两位数 编辑:程序博客网 时间:2024/06/07 01:54

最近读了这本《大型网站技术架构》的书,写的还不错,挺入门,了解了很多东西,书还没看完,总结一下之前的知识;

一、大型网站架构的演化

1、初始阶段的网站架构

小型网站的基础架构,一台服务器可以包办所有的事情,毕竟业务和访问量都不大。LAMP架构,开源免费省钱。


图1

2、应用服务器和数据服务分离

随着业务发展,一台服务器运转不过来了,于是,很自然的将应用和数据进行了分离,出现了新的架构。


图2

3、使用缓存改善

随着用户逐渐增多,上一种方式中,对数据库读写的增加,导致了访问延迟,降低了用户体验。其实80%的业务使用的是20%数据,淘宝、百度购买和搜索热门关键词,难不成每次都要访问数据库?那么如何能够很快的读取呢?使用缓存技术可以完美的解决这个问题,从内存中读取数据比从硬盘中读取快了多少倍,缓存本质上就是内存中的一个HashMap,对应存在键值对,能够快速找到需要的数据,但是同时也带来很多问题,(1)缓存什么时候更新才能避免读取脏数据;(2)缓存的命中率问题,如果缓存命中率过低,那么程序还是会去读取数据库,没有起到作用;(3)缓存服务器需要预热,新增的缓存服务器中没有任何数据,需要预热将热门数据加入到该服务器;(4)分布式缓存服务器更加复杂,每台服务器中存的数据必然是不一样的,从哪台服务器取数据也需要优良的算法。


图3

4、应用服务器集群

使用负载均衡技术应当是最简单粗暴的技术了吧,可以改善应用服务器负载压力过大的问题。


图4

5、数据库读写分离

虽然使用了缓存技术,但是还会有一部分数据通过读取数据库,同时所有的写操作也需要通过数据库,数据库服务器又撑不住了。。可以通过配置两台数据库,设置主从关系,两台服务器主从热备,同步数据,一台负责写,一台负责读;


图5

6、使用CDN和反向代理服务器加速

说到底,CDN和反向代理依然是缓存技术,只不过部署的地方不同,CDN(内容分发网络)主要部署在网络供应商的机房(当然大型网站也可以架设自己的CDN服务器),用户在请求网站服务时,可以从距离自己最近的网络提供商机房获取缓存的数据;而反向代理主要部署在网站的中心机房,如果有相应的缓存数据,直接返回;


图6


7、使用分布式文件系统和分布式数据库系统

在将之前的一台数据库服务器拆分成两台后,随着用户大量增加,数据库服务器又一次地不堪重负了。。分布式数据库是最后的手段,更多的是业务分库,将不同业务的数据库分别部署在不同的服务器上。


图7 

8、使用NoSQL和搜索引擎

随着网站发展,需要一些非关系型数据库技术和非数据库技术如搜索引擎;


图8

9、业务拆分

可以将整个网站业务进行拆分,分成不同的产品线,如淘宝的订单、评价、商品详情等等拆分开,部署在不同的服务器集群中


图9

10、分布式服务

既然每一个应用系统都需要执行许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些共用的业务提取出来,独立部署;由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。


图10

0 0
原创粉丝点击