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网站架构演变的更多相关文章

  1. Web网站架构演变—高并发、大数据

    转 Web网站架构演变—高并发.大数据 2018年07月25日 17:27:22 gis_morningsun 阅读数:599   前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系 ...

  2. (转)web网站架构演变

    浅谈web网站架构演变过程   前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管 ...

  3. 从100PV到1亿级PV网站架构演变

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 一个网站就像一个人,存在一个从小到大的过程.养一个网站和养一个人一样,不同时期需要不 ...

  4. [转载]从100PV到1亿级PV网站架构演变

    原文地址:http://www.uml.org.cn/zjjs/201307172.asp 一个网站就像一个人,存在一个从小到大的过程.养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有 ...

  5. 从100PV到1亿级PV网站架构演变(转)

    http://www.linuxde.net/2013/05/13581.html 一个网站就像一个人,存在一个从小到大的过程.养一个网站和养一个人一样,不同时期需要不同的方法,不同的方法下有共同的原 ...

  6. 分享:大型Web网站架构演变之9大阶段

    前言 我们以Java Web为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管理 交易模块:创建交易和管理 正文 阶 ...

  7. keepalived+nginx+lnmp 网站架构

    <网站架构演变技术研究> 项目实施手册 2019年8月2日 第一章:  实验环境确认 4 1.1-1.系统版本 4 1.1-2.内核参数 4 1.1-3.主机网络参数设置 4 1-1-4 ...

  8. Mysql在大型网站的应用架构演变

    原创文章,转载请注明: 转载自http://www.cnblogs.com/Creator/本文链接地址: Mysql在大型网站的应用架构演变 本文已经被多处转载,包括CSDN推荐以及码农周刊等等,阅 ...

  9. 转:Mysql在大型网站的应用架构演变

    原文来自于:http://www.cnblogs.com/Creator/p/3776110.html 原创文章,转载请注明: 转载自http://www.cnblogs.com/Creator/本文 ...

随机推荐

  1. 关于冒泡排序的Java代码实现

    一.排序算法的历史: 排序算法的发展历史几乎和计算机的发展历史一样悠久,而且直到今天,世界范围内依然有计算机科学家正在研究着排序的算法,由此可见排序算法的强大魅力.   我们现在介绍的排序算法都是前任 ...

  2. Spring+Druid+SpringMVC的搭建(附Demo)

    最近公司事情比较少,便想利用这段空闲时间做一个自己的博客. 前端界面已经搞好,感谢杨姐的模板,自己稍微把模板没有的模块给补全了. 今天便开始自己的SSM框架搭建,数据库链接是采用数据库连接池.先上个项 ...

  3. WPF为ItemsControl设置ItemsPanelTemplate

    1. 直接在XAML中以对象属性的方式 <ItemsControl x:Name="lstNew"> <ItemsControl.ItemsPanel> & ...

  4. jquery完全版下载

    查看演示立刻下载错误提交填加用法   jquery-2.1.1 (注!jquery-2.0以上版本不再支持IE 6/7/8) 百度引用地址 (推荐目前最稳定的,不会出现延时打不开情况) 百度压缩版引用 ...

  5. 在没有jre环境下运行jar

    1.首先将程序打包(这一步可以通过eclipse的导出完成). 2.为项目添加第三方jar包.在第1步打好的jar包的同级目录下,新建一个lib(名字可以自取)文件夹.用winrar等解压文件打开第1 ...

  6. linux 查找删除找定文件

    find . -name "*.lastUpdated" -exec rm -rf {} \; 这个命令是find的基本用法,可以分两部分,find ~/ -name " ...

  7. elasticdump

    elasticdump备份elasticsearch里面的某个索引数据 1.     安装环境 需要node.npm.yarn # 去官方下载最新版本的nodejs #wget https://nod ...

  8. js / jquery 获取和设置 FCK Editor 的值

    开发中遇到 通过 $("#content").val(); 或者 document.getElementById("content"); 并不能获取到 id 为 ...

  9. SpringBoot相关配置

    8.1 配置 Spring MVC的配置是通过继承WebMvcConfigurerAdapter类并重载其方法实现的; 前几个教程已做了得配置包括 01点睛Spring MVC 4.1-搭建环境 配置 ...

  10. Vertica示例数据库安装

    1.示例数据库简介: Vertica跟传统数据库一样,自带了示例数据库--VMart示例数据库,是一个多架构数据库.该数据是大型超市(VMart)中可能会用到的数据库,可用来访问产品.客户.员工以及网 ...