《看透springmvc源码分析与实践》读书笔记一
解决速度问题的核心是解决海量数据操作问题和高并发问题。
网站复杂的架构就是从这两个问题演变出来的。
海量数据的解决方案:
1. 缓存和页面静态化
将从数据库获取的数据暂时保存起来,在下次使用的时候无需重新到数据库中获取,这样可以大大降低数据库的压力。
缓存可以通过程序直接保存到内存中(使用Map,尤其是使用ConcurrentHashMap)和使用缓存框架(Ehcache,Memcache,Redis)两种方式。
2. 数据库优化
解决数据量大的问题,是避不开数据库优化的。
①. 表结构优化 ②SQL语句优化 ③分区 ④分表 ⑤索引优化 ⑥使用存储过程代替直接操作等
3. 分离活跃数据
4. 批量读取和延迟修改
5. 读写分离
6. 分布式数据库
7. NoSQL 和 Hadoop
高并发的解决方案
1. 应用和静态资源分离
2. 页面缓存
3. 集群和分布式
集群是每台服务器都具有相同的功能,处理请求时调用哪台服务器都可以,主要是起到分流的作用。
分布式是将不同的业务放到不同的服务器中,处理一个请求可能需要用到多台服务器,这样提高一个请求的处理速度。
4. 反向代理
代理服务器是代我们获取想要的资源,然后将结果返回我们,所要获取的资源是我们主动告诉代理服务器的。
反向代理服务器是我们正常访问一台服务器的时候,服务器自己调用了别的服务器的资源并将结果返回给我们,我们自己并不知道。
5. CDN