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了。