BS网站架构演变
BS网站架构演变
网站架构的整个演变过程主要是围绕大数据和高并发这两个问题展开的,解决的方案主要分为使用缓存和使用多资源两种类型。多资源主要指多存储(包括多内存)、多CPU和多网络,对于多资源来说又可以分为单个资源处理一个完整的请求(集群)和多个资源使用处理一个请求两种类型(分布式)。
同义词:大数据、海量数据;高并发、流量
架构演变的起点
刚开始,服务端就一台1核1G的主机,其中存储了应用程序和数据库,当数据和流量越来越大的时候访问速度越来越低。
这时可以提高主机的配置为4核8G,但考虑到旧的CPU和内存被替换闲置;所以直接添加一台主机,把应用程序和数据库分别放到不同的主机中
架构演变的具体解决方案
1、缓存数据
将数据库中获取的结果暂时保存起来,下次使用时就不需要到数据库去获取,从而降低数据库的压力
缓存的使用可以分为通过程序直接保存到内存中和使用缓存框架两种方式。程序直接操作主要使用Map,尤其是ConcurrentHashMap,而常用的缓存框架有Ehcache、Memcache、Redis等。
2、缓存页面
和缓存非常相似,页面静态化是将程序最后生成的页面保存起来,这样再次访问时,就不需要重新生成页面,而且也不需要再次查询数据库了。
页面静态化可以使用模板技术,如Freemarker、Velocity;也可以使用缓存服务器,使用Squid;另外Nginx也有这个功能。
页面缓存主要是使用在数据很少发生变化的页面中,但是很多页面是大部分数据很少发生变化,而其中有很少一部分数据变化的频率却非常高。比如,一个显示文章的页面,文章很少修改,而文章后面的“顶”、“踩”的数据变化频率非常高,这里可以结合ajax来做页面缓存。
3、数据库优化
表结构优化、SQL语句优化、分表、分区、索引优化、使用存储过程、分离活跃数据、批量读取(比如,使用in语句把多次查询合并为一次查询)、延迟修改(将要修改的数据暂时保存在内存中,定期更新数据库)、合理使用冗余
4、业务逻辑优化
5、NoSQL、Hadoop
6、集群
集群起到分流的作用
(1)数据库主机集群
读写分离,主服务器写、从服务器读,数据同步,负载均衡
(2)应用程序主机集群
session同步;使用专门的服务管理sesseion,重写应用服务器Request的getSession方法,负载均衡
(3)静态资源主机集群
7、分布式
(1)分离应用程序和数据库到不同的主机
(2)分离应用程序和静态资源到不同的主机
(3)分布式数据库
不同的服务器内有不同的表;事务处理,多表查询
8、底层优化
Google制定了Quic、Spdy等协议传输数据,Quic比TCP效率高比UDP安全;Spdy在HTTP的基础上增加了很多新特性,提高了传输效率,谷歌已经放弃spdy使用HTTP/2了。
BS网站架构演变的更多相关文章
- Web网站架构演变—高并发、大数据
转 Web网站架构演变—高并发.大数据 2018年07月25日 17:27:22 gis_morningsun 阅读数:599 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系 ...
- (转)web网站架构演变
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
- 从100PV到1亿级PV网站架构演变
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 一个网站就像一个人,存在一个从小到大的过程.养一个网站和养一个人一样,不同时期需要不 ...
- [转载]从100PV到1亿级PV网站架构演变
原文地址:http://www.uml.org.cn/zjjs/201307172.asp 一个网站就像一个人,存在一个从小到大的过程.养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有 ...
- 从100PV到1亿级PV网站架构演变(转)
http://www.linuxde.net/2013/05/13581.html 一个网站就像一个人,存在一个从小到大的过程.养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原 ...
- 分享:大型Web网站架构演变之9大阶段
前言 我们以Java Web为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 正文 阶 ...
- keepalived+nginx+lnmp 网站架构
<网站架构演变技术研究> 项目实施手册 2019年8月2日 第一章: 实验环境确认 4 1.1-1.系统版本 4 1.1-2.内核参数 4 1.1-3.主机网络参数设置 4 1-1-4 ...
- Mysql在大型网站的应用架构演变
原创文章,转载请注明: 转载自http://www.cnblogs.com/Creator/本文链接地址: Mysql在大型网站的应用架构演变 本文已经被多处转载,包括CSDN推荐以及码农周刊等等,阅 ...
- 转:Mysql在大型网站的应用架构演变
原文来自于:http://www.cnblogs.com/Creator/p/3776110.html 原创文章,转载请注明: 转载自http://www.cnblogs.com/Creator/本文 ...
随机推荐
- Distributed PostgreSQL on a Google Spanner Architecture – Query Layer
转自:https://blog.yugabyte.com/distributed-postgresql-on-a-google-spanner-architecture-query-layer/ Ou ...
- Java模拟双色球彩票
package practice1; import java.util.Random; import java.util.Scanner; public class Test3 { /** * * 模 ...
- Fiddler Web Debugger是什么?(图文详解)
不多说,直接上干货! 1.为什么是Fiddler? 抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark. 见 Windows里安装wireshark或 ...
- C/C++ -- Gui编程 -- Qt库的使用 -- 使用小写qDebug调试程序
qDebug作为printf不需要头文件 qDebug()作为cout要使用头文件<QDebug> -----debug.cpp----- -----debug.cpp----- #inc ...
- libevent安装总结
1.先用:ls -al /usr/lib | grep libevent 查看是否已安装:如果已安装且版本低于1.3,则先通过:rpm -e libevent —nodeps进行卸载. 2.下载lib ...
- [转] Ubuntu 14.04/14.10下安装VMware Workstation 11图文教程
点击这里查看原文 译者:GuiltyMan 本文由 Linux公社翻译组 原创翻译 Linux公社 诚意奉献 更多请访问此处博客网站 VMware workstation 是一个可以进行桌面操作的虚 ...
- mac 上安装 redis
1.从http://redis.io 下载redis包,这里选择了redis-3.2.3 2.将下载的 redis-3.2.3.tar.gz 包拷贝到 /usr/local 目录 3.执行 sudo ...
- ruby文件操作
Ruby代码 1.#读文件 2.f = File.open("myfile.txt", "r") 3.f.each_line do|line| 4.puts & ...
- python算法之冒泡排序
目录 python之冒泡排序 算法原理 算法分析 代码实现 总结 python之冒泡排序 概念: 重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小.首字母从A到Z)错误就 ...
- POJ 1062 昂贵的聘礼(枚举限制条件——Dijkstra算法)
题目: 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:& ...