4、HTTP加速(缓存反向代理)
HTTP加速或缓存反向代理机制使用了许多技术来减少用户检索内容的时间。主要技术是使用HTTP加速机制来缓存web或应用程序服务器的响应内容,以便后续访问内存。
HTTP加速软件推荐使用Varnish、Squid和Nginx。
示例:适用于内容密集型动态web应用程序或具有大型高频访问文件的环境。
4、1、优势:
• 通过缓存和压缩机制降低web服务器的CPU负载,以提高网站性能;
• 反向代理负载平衡机制;
• 使用部分缓存软件防止DDoS攻击。
4、2、缺点:
• 必须仔细调整以实现最佳性能;
• 如果缓存命中率过低,可能会影响性能。
5、复制主从数据库
对于读取次数远多于写入次数的数据库系统,提高性能的最重要方法是在master数据库中使用复制机制。主从复制需要一个或多个从节点和master节点。在此设置中,所有更新都发送到master节点,部署到群集中的其他节点。
示例:显著提高了应用程序数据库级别的读取性能。
以下是单个从属节点条件下的主从复制设置示例:
5、1、优势:
• 将读取负载部署到辅助节点以提高数据库读取性能;
• 使用主节点单独编辑更新以提高写入性能(对读取请求没有影响)。
5、2、缺点:
• 访问数据库的应用程序必须具有检测作为更新传输和读取请求目标的正确数据库节点的机制;
• 依赖节点的异步更新可能会导致某些更改无法及时同步;
• 如果主节点出现故障,则数据库的从节点无法更新;
• 如果主节点发生故障,则无法进行故障切换。
6、示例说明:
通过在单个环境中使用数据库复制机制,可以完全平衡应用程序服务器之外的缓存服务器的负载。通过将这些技术相结合,可以充分利用各自的优势并弥补其不足。下图是服务器环境的一个可行示例。
假设负载平衡机制根据设置要求检测静态请求(如图像、CSS、JavaScript等),并将这些请求直接发送到缓存服务器,然后将进一步的请求发送到应用服务器。
以下描述了用户提交动态内容请求后的完整执行过程:
1、用户http://example、com/中的动态内容请求(负载平衡);
2、此负载平衡将请求发送到应用程序后端;
3、应用程序后端从数据库中读取内容,并通过负载平衡返回请求的内容;
4、通过负载平衡将请求的数据返回给用户。
当用户请求静态内容时:
1、平衡缓存后端以确保请求的内容在内存中;
2、缓存命中:返回负载平衡请求,然后转到步骤7。缓存错误:缓存服务器通过负载平衡将请求转发到应用程序后端;
3、负载平衡,向应用程序后端发送请求;
4、从应用程序后端读取数据库内容,并通过负载平衡返回;
5、通过负载平衡转发对缓存后端的响应;
6、后端缓存内容和负载平衡恢复;
7、通过负载平衡将数据返回给用户。
该环境仍然有两个单点故障(负载平衡和主数据库服务器),但我们已经提到的所有其他可靠性和性能优势都可以实现。