亚马逊AWS官方博客

关于 Amazon ElastiCache for Amazon RDS、Amazon Aurora 以及 Amazon Redshift 中的自动查询缓存机制

Original URL: https://amazonaws-china.com/cn/blogs/database/automating-sql-caching-for-amazon-elasticache-and-amazon-rds/?utm_source=aws&utm_medium=blog&utm_campaign=RDS-DMS

 

背景信息

相信很多朋友都已经在运用数据库缓存技术提高响应速度。但在具体实施层面,不少开发者仍然不太清楚自己需要解决哪些挑战、了解缓存的基本概念、何时使用无效化操作以及如何确保缓存内的数据更新。正如竞速对抗当中,决定胜负的往往不只是赛车的性能、而是驾驶者的技术,Amazon ElastiCache的卓越性能与可扩展性也只有在深刻理解缓存特性的开发者手中才能迸发出最大能量。具体而言,这要求我们手动变更应用程序代码,但第三方现成应用(例如WordPress)又往往不允许用户随意更改。好消息是,现在您可以更安全、更高效地将缓存与无效化机制自动引入Amazon ElastiCache当中,且无需对应用程序做出任何变更。

Heimdall Data是一款数据库代理,可将缓存与无效逻辑引入您所选定的缓存方案当中。Heimdall有何独特之处?简单来说,它能够自动建立缓存机制、无需进行任何复杂的配置,并能够在更贴近应用程序的位置执行,从而消除不必要的数据库交互。如此一来,您的网络延迟将显著降低,AWS使用成本也将得到有效控制。

在本文中,我们将了解如何使用AWS中的Heimdall代理一步步配置自动查询缓存。

架构说明

Heimdall Data软件包由控制平面与数据平面组成:

  • 控制平面:Heimdall Central Console
  • 数据平面(两个选项):
    • 代理:Amazon RDS、Amazon Aurora、Amazon Redshift;MySQL、SQL Server 2008+、PostgreSQL
    • JDBC驱动程序:支持一切兼容JDBC的数据源(例如Oracle与Amazon Athena)

图一:Heimdall软件选项

在部署方面,您只需要简单修改主机/端口或者JDBC URL以路由至Heimdall代理即可。整个过程不会对应用程序代码造成任何影响。通过AWS Marketplace,您可以将Heimdall部署为应用程序与数据库之间的代理层,具体如图二所示。

图二:AWS Marketplace上的数据库代理层架构

缓存机制工作原理:

Heimdall查询缓存逻辑可支持多种缓存存储机制:由用户选择本地堆、数据网格(例如Amazon ElastiCache)或者二者兼有。通过中央控制台,您可以将代理定向至所需的缓存存储。通过“一键式”操作,Heimdall将自动对SQL结果执行缓存与无效化操作。

代理使用实时分析与统计信息以确定需要缓存的查询结果。在学习算法的支持下,代理将确保只在能够切实提高性能时才对查询结果进行缓存。整个缓存过程自动执行,但我们的规则引擎也允许用户添加或删除特定查询缓存策略,从而提供更强大的灵活性选项。关于更多细节信息,请参阅我们的缓存架构技术文档。

当代理检测到DML(例如INSERT、UPDATE、DELETE)或者复制操作时,会自动执行缓存无效化。如此一来,表在发出DML之前就将无效化,并在事务执行完成之前始终保持无效状态。在此无效窗口期内,代理不会将旧内容或者新对象放入缓存。关于更多细节信息,请参阅我们的缓存无效化技术文档。

上手指南:

现在,我们将逐步介绍如何利用Amazon ElastiCache与Aurora for MySQL为WordPress应用程序配置代理。

第一步:从AWS Marketplace下载Heimdall软件。这里需要安装代理本体以及中央控制台。若需了解更多细节信息,请参阅我们的Heimdall for AWS技术文档。

第二步:使用服务器URL及端口8087访问中央控制台。我们的AWS配置向导将逐步引导您将Heimdall代理连接至您的AWS服务(例如应用程序、数据库、缓存等),并配置缓存。

第三步:完成AWS配置向导之后,从Virtual Database(虚拟数据库)选项卡处查看当前配置,其中将显示应用程序的连接信息。具体请参阅以下截图预览。

第四步:在“Data Sources”选项卡中确认数据库连接设置,其中包括连接池、负载均衡、自动故障转移以及读取/写入拆分。具体请参阅以下截图预览。

第五步:“Rules”选项卡用于控制查询操作的具体缓存、路由以及转换方式。默认配置为:1)不在事务内缓存流量;2)将选定流量转发至只读源;3)记录查询流量。您也可以创建更多自定义规则,且无需重新启动应用程序或者数据库。在完成规则配置变更之后,直接单击“Commit”即可完成。

第六步:根据Virtual DB选项卡中的代理主机与端口配置更改数据库配置,将应用程序与代理连接起来。

缓存性能结果

“Dashboard”选项卡提供关于WordPress应用程序的查询流量与服务器性能信息。请注意:来自缓存的平均查询时间为50微秒,而来自数据库的平均查询时间则为1000微秒。使用Heimdall代理进行缓存,可将实际性能提高20倍以上!在缓存命中率达到90%的情况下,数据库负载将显著降低,意味着同一数据库基础设施将可支持更多用户。

总结

传统的缓存系统构建方式往往非常复杂,而且需要占用大量资源。Heimdall Data能够自动对SQL结果进行缓存处理,且无需变更应用程序本体,从而大大降低运营负担。从实际用例来看,用户的常规缓存命中率可达90%、响应性能提高达20倍,且每年可节约长达数月的软件开发与管理时长。现在,您可直接在AWS Marketplace上下载Heimdall的免费试用版本。

相关资源

 

本文最初发布于2017106日,并于20191015日进行更新。

本篇作者

Darin Briskman

Amazon Web Services技术布道者。他与我们的客户一道为数据库项目提供技术指导与协助,帮助企业在使用AWS的过程中提升解决方案的价值回报。