文章标题
来源:互联网 发布:淘宝店铺怎么做淘宝客 编辑:程序博客网 时间:2024/06/08 14:25
看到一篇好的文章,让我对架构的演变过程有了个清晰得认识,转载下来记录一下。
- 第一阶段:单服务器架构
这一阶段是我们的起步阶段,比如我们创业的时候刚购买了一台云主机。
在这一阶段,为了节约成本,我们将所有的应用程序,数据库,文件全部放在这台服务器上。
然后,CPU或者内存的成本在开发阶段也使用最小能接受的成本,然后开始我们的服务器开发之路。
- 第二阶段:应用服务和数据服务分离
随着网站的第一次上线,我们的网站如果运营得不错的话,在这之后应该会逐渐积累人气,业务
也会随着人气的发展而进一步发展。
这个时候,1台服务器显然不能满足需求了,越来越多的用户访问导致性能变差,与此同时,数据也逐渐
变多,我们考虑增加硬盘。
这个时候,首先想到的就是:将应用和数据分离
于是,网站架构变成3台服务器:应用服务器(Web Server), 文件服务器(Resource Server), 数据库服务器(Database Server)
对于3台服务器的配置要求不太一样:
Web Server: 需要处理大量的业务,需要更快的CPU。
Database Server: 需要快速检索数据和存放更多的数据,需要更大更快的硬盘,硬盘最好也是固态硬盘为主。
Resource Server: 需要存放用户上传的文件,如照片,视频等等,需要更大的硬盘,硬盘大一点,但是普通硬盘即可。
- 第三阶段:使用缓存改善网站性能
网站业务遵循二八原则,80%的业务集中在20%的数据上。
因此,如果把这一小部分数据缓存起来,就可以i暗哨数据库访问的压力。
在初始阶段可以使用一些本地服务器的内存缓存,随着业务的扩展,
可以增加远程分布式的缓存服务器,应用一些成熟的框架,如: Redis
- 第四阶段:应用服务器集群增加并发处理能力
集群已经显然成为现代网站处理高并发,海量数据的常规手段。
当1台服务器性能不足时,我们首先考虑的不应当是更换强大的服务器,而是应该增加服务器。
这个时候,我们的架构中应该引入负载均衡调度服务器,然后请求经过负载均衡服务器,分发到位于集群上的各个
应用服务器。
- 第五阶段:数据库读写分离
缓存并不能解决所有的数据库问题,仍有很大一部分数据由于某些原因(缓存不命中,缓存过期)需要访问数据库。
通过设置数据库的主从备份结构,可以将主数据库的数据同步更新到另外的数据库上。
从而架构改为,将数据写入主数据库,而从数据库负责读取数据。
- 第六阶段:使用反向代理和CDN加速网站响应
CDN和反向代理的基本原理都是缓存。
区别:
CDN部署在网络提供商的机房,用户可以从距离自己最近的网络提供商机房获取数据。
反向代理部署在网站的中心机房。
- 第七阶段:使用分布式文件系统和分布式数据库
数据库需要进行拆分,拆分一般根据业务进行拆分,
将不同的数据库部署在不同的物理服务器上。
再进一步,我们可以引入NoSql和搜索引擎。
转载来源:http://www.cnblogs.com/davidgu/p/6057156.html
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 2017哈理工 低年级组院赛初赛 G-做游戏 【水题】
- 600台自动售货机的管理系统是这样 | 新零售「良品铺子」
- 使用idea commit代码时遇到的detached head 问题的解决
- JavaSpring之Aop应用(java项目)
- spark(10)-spark高级排序(course19)
- 文章标题
- 关于linux ubuntu的常用命令(不定时更新)
- ES6学习之路9----Map数据结构
- 机器学习之-决策树算法【人工智能工程师--AI转型必修课】
- PHP利用openssl整理AES加解密类
- CentOS7 安装 Nginx
- 括号字符串的相关问题 Python 版
- 蓝桥杯 算法训练 Torry的困惑(基本型)
- 引用pdf插件在线预览的问题