Introduction to Amazon ElastiCache

提供快速的数据缓存,提高应用程序性能

Amazon ElastiCache概念

是一款全托管、低延迟的内存缓存服务,兼容 Redis 和 Memcached。它不仅简化了设置、安装、补丁修复、配置、监控、备份和恢复等管理任务,还能显著提高现代应用程序的性能,提供微秒级响应时间,并扩展到每秒数百万次操作,让开发者可以专注于应用程序的实际开发。

在操作之前需要了解:

缓存的概念:

缓存可以理解为我需要去书中重复的看一段文字,翻书本身很麻烦,所以将这一段文字复印下来,等下次我在需要去看这段文字的时候我就可以不翻书,而是去看复印件.
在比喻中:

  • 书:代表了原始数据源,比如数据库或文件系统。

  • 翻书:代表了从原始数据源检索信息的过程,这个过程是耗费时间和精力的.

  • 复印件:代表了缓存,它是原始数据的快速可访问的副本.

因此,我们再引入Amazon ElastiCache的概念便可理解:

Amazon ElastiCache的作用

在Amazon ElastiCache的背景下,Amazon ElastiCache 是一种托管缓存服务,它提供了两种类型的缓存解决方案:Memcached 和 Redis.

因此可以这样类比:

  • 书:在Amazon Web Services(AWS)中,这可以代表原始数据源,比如Amazon RDS(关系数据库服务)、Amazon DynamoDB(NoSQL数据库服务)或其他存储服务。

  • 翻书:这代表了应用程序直接从这些数据库或存储服务中检索数据的操作,这个过程可能会因为网络延迟、数据库查询复杂度等因素而变得缓慢.

  • 复印件:在Amazon ElastiCache中,这代表了缓存的数据。ElastiCache作为缓存层,存储了数据库中经常访问的数据的副本.

综上,可见Amazon ElastiCache的特点:

Amazon ElastiCache的特点

  • 快速数据检索:当应用程序需要频繁访问某些数据时,如用户会话信息、热门商品详情等,这些数据可以被存储在ElastiCache中。这样,当数据被请求时,应用程序可以直接从ElastiCache中快速检索,而不需要每次都去“翻书”(访问数据库).

  • 减少数据库负载:由于频繁的数据请求可以直接在缓存中得到满足,因此可以显著减少对后端数据库的访问次数,降低数据库的负载.

  • 提高应用程序性能:通过减少数据检索时间,ElastiCache帮助提高了应用程序的整体性能,从而改善了用户体验.

  • 数据持久性:尤其是使用Redis时,ElastiCache还可以提供数据持久性功能,这意味着即使发生系统故障,缓存的数据也不会丢失

  • 可扩展性:ElastiCache可以根据需求自动扩展或缩小资源,以应对不同的流量模式,确保缓存层始终能够高效运行.

  • 易于管理:作为托管服务,Amazon ElastiCache简化了缓存集群的设置、管理和维护工作,让开发者可以专注于应用程序的开发,而不是缓存基础设施的管理.

Amazon ElastiCache就像是一个高效的复印机,它帮助您的应用程序快速获取所需的数据,同时减少了对原始数据源的依赖和负载.

详细操作步骤

一,创建Amazon ElastiCache集群

在此任务中,您将创建一个 Amazon ElastiCache 集群。

  1. 登陆亚马逊云账号后,进入控制台,在搜索框输入Amazon ElastiCache并进入相应的服务:
    始使用中的Redis OSS

  2. 或者在左边 Resources(资源)下面选择 Redis caches(Redis 缓存)选择 Create Redis cache(创建 Redis 缓存)

  3. 创建Redis缓存的界面是这样的:

  4. 现在我们开始创建我们的Rediss OSS 缓存:

  • 对于 Deployment option(部署选项),选择 Design your own cache(设计自己的缓存);

  • 对于 Creation method(创建方法),选择 Cluster cache(集群缓存):

  1. 集群模式默认,在集群信息中,根据自己的需求舒服集群名称(例图中为Zgh_332):

  2. 在Cluster settings(集群设置)部分中:

  • 对于Node type(节点类型),选择cache.t2.micro或cache.t3.micro(选择适合你需求的节点类型,决定了每个节点的计算能力和内存大小。);

  • 对于Number of replicas(副本数量),输入 0:

  1. 在 Connectivity(连接)部分中:

  • 对于 Subnet groups(子网组),确保选择 Create a new subnet group(创建新的子网组)(创建一个新的子网组,以便将缓存集群部署在特定的网络环境中);

  • 对于 Name(名称)自定义(例图中为mysubnetgroup)。对于 VPC ID(选择你希望缓存集群所在的虚拟私有云(VPC),确保网络隔离和安全性。如果没有可以选择创建,这里不做过多介绍):

  1. 将所有其他设置保留为默认值,滚动到页面底部,并选择 Next(下一步),直到最后Create(创建):

  2. 缓存集群的 Status(状态)将显示为 creating(正在创建)。最终,当集群准备就绪后,Status(状态)列将显示为 available(可用):

那么问题来了:
Q1:Amazon ElastiCache中集群缓存是什么意思?
Q2:Amazon ElastiCache中为什么需要算力?
Q3:为什么在Amazon ElastiCache中设置Number of replicas(副本数量)为0?

Q1:Amazon ElastiCache中集群缓存是什么意思?

想象一下,你在一个大型图书馆里寻找书籍。这个图书馆非常大,有很多书架,每个书架上都摆满了书。为了更高效地管理和查找书籍,图书馆引入了一个系统,将书籍分布在多个区域,每个区域都有自己的书架和图书管理员。

类比解释

  • 书架(数据库存储):书架代表数据库存储,书籍按照一定的顺序排列,方便查找。

  • 图书管理员(数据库服务器):图书管理员知道每本书的位置,当你需要找书时,你可以请图书管理员帮忙查找。

  • 信息检索系统(ElastiCache集群缓存):图书馆有一个信息检索系统,它是一个电脑终端,可以快速检索图书馆的目录。

集群缓存的概念

  1. 分布式管理:图书馆将书籍分布在多个区域,每个区域都有自己的书架和图书管理员。这就像ElastiCache中的集群缓存,将数据分布在多个节点上,每个节点负责一部分数据的存储和管理。

    • 类比ElastiCache:在ElastiCache中,集群缓存将数据分布在多个缓存节点上,每个节点负责一部分数据的存储和管理。这种方式可以提高数据的可用性和访问速度。

  2. 负载均衡:当多个读者同时查找书籍时,图书馆的系统会将查询请求分配给不同的区域,以避免某个区域过于繁忙。这就像ElastiCache中的负载均衡,将查询请求分配给不同的缓存节点,以提高系统的响应速度和稳定性。

    • 类比ElastiCache:在ElastiCache中,负载均衡将查询请求分配给不同的缓存节点,以提高系统的响应速度和稳定性。

  3. 高可用性:如果某个区域的书架出现问题,其他区域的书架仍然可以正常工作,确保读者能够继续查找书籍。这就像ElastiCache中的高可用性,即使某个缓存节点出现故障,其他节点仍然可以正常工作,确保数据的可用性。

    • 类比ElastiCache:在ElastiCache中,即使某个缓存节点出现故障,其他节点仍然可以正常工作,确保数据的可用性。

  4. 扩展性:当图书馆需要增加更多书籍时,可以增加新的区域和书架,以容纳更多的书籍。这就像ElastiCache中的扩展性,可以增加更多的缓存节点,以处理更多的数据和请求。

    • 类比ElastiCache:在ElastiCache中,可以增加更多的缓存节点,以处理更多的数据和请求。

通过这个图书馆的例子,我们可以理解Amazon ElastiCache中的集群缓存是如何通过分布式管理、负载均衡、高可用性和扩展性来提高数据的可用性和访问速度的。


Q2:Amazon ElastiCache中为什么需要算力?

我们引入一个图书馆的例子来解释:

图书馆的信息检索系统

想象一下,你在一个大型的图书馆里寻找一本书。图书馆里有很多书架,每个书架上都摆满了书。

  • 书架(数据库存储):书架代表数据库存储,书籍按照一定的顺序排列,方便查找。

  • 图书馆员(数据库服务器):图书馆员知道每本书的位置,当你需要找书时,你可以请图书馆员帮忙查找。

  • 信息检索系统(ElastiCache算力):图书馆有一个信息检索系统,它是一个电脑终端,可以快速检索图书馆的目录。

类比一下

  1. 快速检索:当你使用信息检索系统查找书籍时,系统需要处理你的查询(例如,书名、作者、主题等),并快速从大量目录中找到匹配的结果。这需要计算能力来处理搜索算法和数据匹配。

    • 类比ElastiCache:当应用程序查询缓存中的数据时,ElastiCache需要算力来快速检索和返回结果。

  2. 处理复杂查询:如果你需要查找特定类型的书籍,比如“所有关于历史并且在过去一年内出版的书籍”,信息检索系统需要执行更复杂的查询操作。

    • 类比ElastiCache:在缓存中,可能需要进行复杂的操作,如数据排序、聚合等,这同样需要算力。

  3. 维护目录更新:图书馆的新书不断上架,信息检索系统需要定期更新目录,以确保查询结果的准确性。

    • 类比ElastiCache:ElastiCache需要定期更新缓存数据,以反映数据库中的最新状态,这也需要算力。

  4. 支持多用户同时查询:在高峰时段,可能有多个读者同时使用信息检索系统。系统需要足够的算力来处理这些并发请求。

    • 类比ElastiCache:在应用程序高负载时,ElastiCache需要处理大量的并发读写请求,这同样需要强大的计算能力。

  5. 数据安全和权限管理:信息检索系统可能需要验证用户的权限,确保某些敏感书籍不被未经授权的读者检索。

    • 类比ElastiCache:ElastiCache需要处理安全性和权限管理,这也需要一定的计算资源。

图书馆的信息检索系统需要算力来快速、准确地处理读者的查询,Amazon ElastiCache也需要算力来高效地处理应用程序的数据请求,保证数据的快速访问和系统的稳定运行。


Q3:为什么在Amazon ElastiCache中设置Number of replicas(副本数量)为0?

可以使用一个书店的例子来解释为什么在Amazon ElastiCache中可能会选择设置“Number of replicas”(副本数量)为0。

生活例子:书店的书籍副本

假设你经营一家书店,你的书店里有各种书籍。有些书籍非常受欢迎,你可能会在书架上放置多个副本,以便多个顾客可以同时查阅或购买。

  • 书籍(数据):书店中的书籍就像是缓存中的数据。

  • 书籍副本(副本数量):书籍的副本数量就像是ElastiCache中的副本数量。

设置副本数量为0的例子

  1. 特殊书籍:假设你有一本非常特殊且不常被查阅的书籍,比如一本非常古老的历史文献,它对大多数顾客来说并不感兴趣,但你仍然需要保留它以备不时之需。

    • 类比ElastiCache:在ElastiCache中,如果你有一些数据是不经常被访问的,或者这些数据的丢失不会对业务造成重大影响,你可能会选择不为其设置副本。

  2. 库存空间有限:书店的空间有限,你不能为每本书都放置多个副本。你需要根据书籍的受欢迎程度和库存空间来决定哪些书籍需要副本。

    • 类比ElastiCache:在ElastiCache中,资源(如内存)也是有限的。如果你不需要高可用性或者有其他数据更需要副本,你可能会选择为某些数据设置0个副本,以节省资源。

  3. 成本考虑:保留书籍的副本需要额外的成本,包括存储空间和购买副本的费用。如果一本书的需求非常低,可能不值得为其购买额外的副本。

    • 类比ElastiCache:在ElastiCache中,副本会增加成本,因为每个副本都需要占用额外的内存资源。如果数据的重要性不高,为了节约成本,可以选择不设置副本。

  4. 数据更新频率:如果那本古老文献的内容很少更新,甚至从不更新,那么保留一个副本就足够了。

    • 类比ElastiCache:如果缓存中的某些数据很少或从不更新,那么即使没有副本,也不会对性能产生太大影响。

通过这个例子,我们可以理解,在Amazon ElastiCache中选择设置“Number of replicas”为0,可能是因为数据不常被访问、资源有限、成本考虑或数据更新频率低等原因。这样的设置有助于优化资源使用,降低成本,同时仍然满足业务需求。

---小插曲结束---

二,授予对 Amazon ElastiCache 集群的访问权限

要从运行在同一 Amazon VPC 中的 Amazon EC2 实例连接到您的 Amazon ElastiCache 集群,您需要授予对集群的网络入口访问权限。在此任务中,您将授予对集群的网络入口访问权限。

  1. 在页面顶部的统一搜索栏中,搜索并选择 EC2。

  2. 在左侧导航窗格中,在 Network & Security(网络与安全)下面选择 Security Groups(安全组)。

  3. 选择对应的目标VPC ID,

  • 选择 Inbound rules(入站规则)选项卡,

  • 选择 Edit inbound rules(编辑入站规则):

  1. 在添这里可以添加规则,如下图所示:目的是为让 VPC 中的 Amazon EC2 实例能够连接到 ElastiCache 节点。

  • 选择 Add rule(添加规则)。

  • Type(类型):自定义 TCP

  • 端口范围:6379(这是 Redis 的端口范围。)

  • Source type(来源类型):Anywhere-IPv4

  • 对于顶部的所有流量规则,选择删除。

  • 选择 Save rules(保存规则)。

  1. 添加规则成功后,如下图所示,在上方会有所提示,至此恭喜成功授予 Amazon ElastiCache 集群的网络入口访问权限.

三,获取 ElastiCache 终端节点

要连接到 ElastiCache 集群,您需要知道 ElastiCache 终端节点是什么。在此任务中,您将获取 ElastiCache 终端节点。

  1. 在页面顶部的统一搜索栏中,搜索并选择 ElastiCache.

  2. 在左侧导航窗格中,选择 Redis caches(Redis 缓存).

  3. 选择之前创建的集群链接(例下图中:Zgh332). 不要复制com之后的内容!!!

至此,您已成功获取 ElastiCache 终端节点。

四,启动 Amazon EC2 实例以访问 ElastiCache 集群

  1. 在页面顶部的统一搜索栏中,搜索并选择 EC2

  2. 选择 Launch instances(启动实例),然后选择 Launch instance(启动实例)

  3. 在 Launch an instance(启动实例)页面上的 Name and tags(名称和标签)部分中,进行以下配置:

  • 名称:myCacheInstance

  • 在 Application and OS images (Amazon Machine Image)(应用程序和操作系统映像 (Amazon Machine Image))的快速入门子部分中,选择将自动选择最新 Amazon Linux 2 AMI 映像的 Amazon Linux.

  1. 在实例类型中:您将配置 t2.micro 实例。

  • 在密钥对(登录) 中:选择在没有密钥对的情况下继续(不推荐) 。

  • 在网络设置中:选择 Edit(编辑),然后进行以下配置:

    • VPC - required(VPC – 必需):Lab VPC(实验 VPC)

    • 防火墙(安全组):选择现有的安全组

    • 常见安全组:从下拉菜单中选择您的安全组

  1. 在配置存储部分中,保留默认值。
    找到并展开 Advanced Details(高级详细信息)部分。 从 IAM 实例配置文件下拉菜单中,选择名称类似于 EC2InstProfile 的角色。

  2. 选择启动实例。

  3. 在 Next Steps(后续步骤)页面,选择 View all instances(查看所有实例)。

  4. 注意:等待 Instance state(实例状态)显示 Running(正在运行)状态。您可以每 30 秒单击一次 refresh(刷新) 按钮来检查状态。

至此,成功启动 Amazon EC2 实例

五,连接到 EC2 实例

  1. 在页面顶部的统一搜索栏中,搜索并选择 EC2。

  2. 在左侧导航窗格中,选择 Instances(实例)。
    选择 myCacheInstance,然后选择 Connect(连接)

  3. 对于 Connection method(连接方法),选择 Session Manager 选项卡。
    选择 Connect(连接)。

  4. 连接成功图示:

六,连接到 ElastiCache 集群

  1. 使用redils-cli从EC2实例连接到 ElastiCache 集群.

  • 安装gcc:

sudo yum install -y gcc
  • 安装redils-cli:

cd ~
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
  • 输入src/redis-cli -c -h ENDPOINT -p 6379

  • 其中ENDPOINT 替换为 Redis 终端节点的名称

  • 为报错说明连接成功

七,测试 ElastiCache 集群

输入以下指令:

  • 设置含字符串值的密钥a:

set a "hello"
  • 获取a的值:

get a
  • 获得b的值,但是在集群中并没有b的内容,因此系统会返回nil. (nil是编程中表示空集)

get b
  • 设置b的值为"Good-bye",但是仅仅持续5秒钟, (EX 是 expire 的缩写,意思是5秒钟后过期)

set b "Good-bye" EX 5
  • 关闭于集群的连接

quit

结果如下图所示:

八,删除 Amazon ElastiCache 集群

  1. 在页面顶部的统一搜索栏中,搜索并选择 ElastiCache

  2. 在左侧导航窗格中

  • 选择 Redis caches(Redis 缓存)。

  • 选择 mycache。

  • 选择 Actions(操作),然后选择 Delete(删除)。

  1. 在 Delete mycache(删除 mycache)窗口中,进行以下配置:

  • Create backup(创建备份):No(否)。

  • 在文本字段中键入 mycache。

  • 选择 Delete(删除)。

  1. 状态更改为正在删除。缓存集群删除后,即会停止产生费用。

补充:创建IAM账户

  • 1.登陆亚马逊云账号后,进入控制台,在搜索框输入IAM并进入相应的服务:

  • 2.选择左侧‘用户’,创建用户

参考文献以及视频:

  • 1.Amazon ElastiCache

  • 2.How ElastiCache works

  • 3.深入浅出 Amazon ElastiCache——最佳实践及用户场景[https://www.bilibili.com/video/BV19441117TE/?vd_source=63519f93e4f8f7f1e241ad9a3ea478df]

  • 4.Amazon ElastiCache 飞速搭建缓存服务集群,这才叫快[https://blog.csdn.net/qq_35387940/article/details/125412342?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522a098385353481bba39164a03a4a09193%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=a098385353481bba39164a03a4a09193&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-125412342-null-null.142^v100^control&utm_term=Amazon%20ElastiCache%E7%AE%80%E4%BB%8B&spm=1018.2226.3001.4187]

  • 5.Amazon ElastiCache 是什么[https://blog.csdn.net/weixin_45428910/article/details/143751434?ops_request_misc=&request_id=&biz_id=102&utm_term=Amazon%20ElastiCache%E7%AE%80%E4%BB%8B&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-143751434.142^v100^control&spm=1018.2226.3001.4187]

  • 6.帮我超越技术壁垒的“泰斗”服务--Amazon ElastiCache[https://blog.csdn.net/CC1991_/article/details/134001934?ops_request_misc=&request_id=&biz_id=102&utm_term=Amazon%20ElastiCache%E7%AE%80%E4%BB%8B&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-134001934.142^v100^control&spm=1018.2226.3001.4187]

  • 7.AWS SimuLearn: Boosting Banking Application Performance

@Zgh_332