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. VSTO学习(六)——创建Outlook解决方案

    本专题概要 引言 Outlook对象模型 自定义Outlook窗体 小结 一.引言 在上一个专题中,为大家简单介绍了下如何创建Word解决方案的,所以本专题中将为大家介绍下Outlook相关的内容.我 ...

  2. 51单片机SRF寄存器

    1.21个寄存器介绍        51系列单片机内部主要有四大功能模块,分别是I/O口模块.中断模块.定时器模块和串口通信模块(串行I/O口),如其结构和功能如下图: 图1 51单片机结构和功能图 ...

  3. 转:android studio 一直卡在Gradle:Build Running的解决办法

    在使用AS开发安卓应用程序的时候经常会遇到Gradle build running一直在运行甚至卡死的情况,解决方法如下: 方法1: 1.在C:\User\<用户名>\.gradle 目录 ...

  4. (转)支持Multi Range Read索引优化

    支持Multi Range Read索引优化 原文:http://book.51cto.com/art/201701/529465.htm http://book.51cto.com/art/2016 ...

  5. 第7章—SpringMVC高级技术—处理异常

    处理异常 处理异常 不管发生什么事情,不管是好的还是坏的,Servlet请求的输出都是一个Servlet响应.如果在请求处理的时候,出现了异常,那它的输出依然会是Servlet响应.异常必须要以某种方 ...

  6. 最全面的 Android 编码规范指南

    最全面的 Android 编码规范指南 本文word文档下载地址:http://pan.baidu.com/s/1bXT75O 1. 前言 这份文档参考了 Google Java 编程风格规范和 Go ...

  7. 请编写一个C函数,将一个字符串逆序

    目前有两种思路,一个是申请一片辅助空间,然后将原字符串逆向拷贝到辅助空间,然后输出:另一种是原地逆序,不需要额外的辅助空间,方法就是字符串首尾交换. #include <stdio.h> ...

  8. redis报Cannot allocate memory错误

    昨天16:27开始将dp的日志使用ELK处理,当时redis使用内存的量不是很大,100M多点,结果今天早上到了一看xshell被关掉了,赶紧将各服务启动起来,elasticsearch启动没有问题, ...

  9. zookeeper集群搭建及Leader选举算法源码解析

    第一章.zookeeper概述 一.zookeeper 简介 zookeeper 是一个开源的分布式应用程序协调服务器,是 Hadoop 的重要组件. zooKeeper 是一个分布式的,开放源码的分 ...

  10. JavaScript函数——预编译

    四部曲 创建AO对象 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined. 将实参值和形参值统一 在函数体内找函数声明,值赋予函数体. 权重按顺序依次增加.以下例子即可体现上述规则 ...