一、采用 NoSQL 缓存关键数据
缓存数据是为了让客户端很少甚至不访问数据库服务器进行数据的查询,高并发下,能最大程度的降低对数据库服务器的访问压力极大地解决数据库服务器的压力普通并发需求(代码实现简单):
1. 用户请求-->数据查询-->连接数据库服务器并查询数据 -->显示给客户端 高并发需求(代码实现复杂):
2. 用户请求-->数据查询-->连接数据库服务器并查询数据-->将数据缓存起来(HTML、 内存、JSON、序列化数据)到 NoSQL 数据库-->显示给客户端
3. 用户再次请求或者新用户访问-->数据查询-->直接从 NoSQL 数据库缓存中获取数据 -->显示给客户端
4. 当数据发生变更的时候,需要同步更新 NoSQL 数据库缓存,需要较多的编写代码或 AOP 方式实现。
二、数据库采用集群部署进行扩展或采用云数据库高并发实例
普通并发需求:
单数据库或主从复制方式的双数据库架构(配置和维护方式中等)。
普通的云数据库实例(配置和维护方式简单)。
高并发需求:
数据库环境集群部署(配置和维护复杂):
采用 Mysql Galera Cluster 多主复制模式+HAProxy + Keepalived 架构,由多台可以主主复制的 Mysql 服务器提供服务,经过 HAProxy 进行聚合,提高单台数据库所不具备的水平扩展能力。可以应对较高的数据库访问压力。
购买云数据库高并发实例(配置和维护方式中等):可以购买高并发云数据库实例,采用 SSD 存储。
三、资源文件采用 CDN 加速
CDN 的全称是 Content Delivery Network,即内容分发网络,尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定,在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络。
CDN 系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
使用 CDN 的优势:
1. 本地 Cache 加速,提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度;
2. 跨运营商的网络加速,保证不同网络的用户都得到良好的访问质量;
3. 远程访问用户根据 DNS 负载均衡技术智能自动选择 Cache 服务器;
4.自动生成服务器的远程 Mirror(镜像)cache 服务器,远程用户访问时从 cache 服务器上读取。数据,减少远程访问的带宽,分担网络流量,减轻原站点 WEB 服务器负载等功能
5.广泛分布的 CDN 节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵。
四、Web 端采用负载均衡设计
集群是每台服务器都具有相同的功能,处理请求时调用那台服务器都可以,主要起分流作用。
分布式是将不同的业务放到不同的服务器中,处理一个请求可能需要用到多台服务器,这样就可以提高一个请求的处理速度,而且集群和分布式也可以同时使用。集群有两个方式:一种是在静态资源集群。另一种是应用程序集群。静态资源集群比较简单。应用程序集群在处理过程中最核心的问题就是 Session 同步问题。
Session 同步有两种处理方式:一种是在 Session 发生变化后自动同步到其他服务器,另一种就是用个程序统一管理Session。所有集群的服务器都使用同一个Session,Tomcat 默认使用就是第一种方式,通过简单的配置就可以实现,第二种方式可以使用专门的服务器安装 Mencached等高效的缓存程序统一来管理session,然后再应用程序中通过重写 Request 并覆盖 getSession 方法来获取制定服务器中的 Session。