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. Matlab 基础

    命令行(Command Line) 1. help  格式:help  命令 2. cd 配合 Tab 使用 pwd: print current working directory,打印当前工作路径 ...

  2. Tomcat发生java.lang.OutOfMemoryError: PermGen space的解决方案

    产生该问题的主要原因是JVM永久带空间不足导致的,可以在环境变量CATALINA_OPTS中提高MaxPermSize参数值   set CATALINA_OPTS = -XX:PermSize=12 ...

  3. 【java排序】 选择排序,插入排序,希尔算法

    一.选择排序 1.基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换:然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止. 2.实例 3.算法 ...

  4. 【优化】如何检测移动端 CPU 以及内存占用率

    原文  http://taobaofed.org/blog/2015/12/04/cpu-allocation-profiler/ 前言 6 月底的时候淘宝众筹的 H5 接入到了支付宝钱包,上线前支付 ...

  5. beego 遇到的一些问题

    1.安装 beego 出现的问题 今天在通过 go get -u github.com/astaxie/beego 安装 beego 应用时,出现下面问题: # cd .; git clone htt ...

  6. SpringBoot入门 (一) HelloWorld

    一 什么是springboot springboot是一个全新的框架,它设计的目的简化spring项目的初始环境的搭建和开发,主要有以下几个特点: 1.简化初始配置 ,可与主流框架集成: 2.内置Se ...

  7. jQuery.on() 函数

    1.绑定所有的<p>元素// 为所有P元素分别绑定click事件处理函数handler$("p").on("click", handler); 2. ...

  8. Formtastic: Forms Made Crazy Easy for Rails Developers

    Formtastic is a Rails plugin by Justin French that aims to take the headaches out of building forms ...

  9. Week4——结对练习&团队作业1

    Deadline: 2017-10-14 10:00PM,以博客发表日期为准. 评分基准: 按时交 - 有分(结对代码-10分,结对博客-10分,团队博客-10分),检查的项目包括后文的三个方面 按要 ...

  10. b-树和b+树以及mysql索引

    b-树(m阶): 1.根节点至少有2个子节点; 2.中间节点包含k个子节点和k-1个元素,m/2 <= k <= m; 3.每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子 ...