文末福利 | Amazon MemoryDB 与 Amazon ElastiCache 比较

df30c1fe341eae6aa2493cc4ad56f526.gif

 

2022年2月11日,亚马逊云科技宣布通过与光环新网和西云数据的紧密合作,在中国区域(北京与宁夏)推出完全托管的、兼容 Redis 的内存数据库 Amazon MemoryDB for Redis

点击查看更多关于 Amazon MemoryDB for Redis 的最新消息

背景

随着互联网的发展,数据库性能对于应用程序的成功至关重要。为了提高性能,要将读取数据库的时间延迟减少到微秒级别,我们通常采用的做法是在持久数据库之前放置一个内存缓存数据库,从而提高读取速度,带来更好的用户体验。

对于缓存,许多开发人员使用 Redis,这是一种开源的内存数据结构存储。事实上,根据 Stack Overflow 的 2021 年开发者调查,Redis 五年来一直是最受欢迎的数据库。要在亚马逊云科技上实施此设置,您可以使用 Amazon ElastiCache作为 Amazon Aurora 或 Amazon DynamoDB 等持久数据库服务前的低延迟缓存,以最大程度地减少数据丢失。但是,此设置要求您在应用程序中引入自定义代码以保持缓存与数据库同步。这无疑会造成一定的学习成本和管理成本,与此同时您还需要兼顾考虑运行缓存数据库和持久化数据库的成本。

13167b51de98834e63c52d075262aa3f.png

Amazon MemoryDB for Redis

现在推出的 Amazon MemoryDB for Redis 开始填补了Amazon ElastiCache 对于缓存数据持久化层的空白。我们将其视为一个连续体,Amazon MemoryDB 是一种服务,可以在 Amazon ElastiCache 的不足之处接手。

Amazon ElastiCache 和 Amazon MemoryDB 之间的区别在于,前者旨在作为与主数据库一起工作的内存中缓存,而 Amazon MemoryDB 本身是一项完整的数据库服务,旨在独立运行。考虑到 Amazon MemoryDB 本质上是 ElastiCache for Redis 的高级层;从功能上讲,它是一个数据库而不是缓存,从技术上讲,它是与它兼容的 Redis 引擎而修改实现。总而言之,Amazon MemoryDB for Redis 是一种实时数据库实现,部分基于开源 Redis 平台,但增加了持久性。

6c3cc9b26479a3577fe7202863231876.png

配置步骤

接下来我们创建一个 Amazon MemoryDB,并与 Amazon ElastiCache Redis 进行性能比较。

这里我们选择 Virginia(us-east-1) 来作为 Amazon MemoryDB 的运行区域。

在亚马逊云科技控制台中跳转到到 Amazon MemoryDB for Redis 页面。

c138f53f3101bbe7a3997f95ae491068.png

由于 Amazon MemoryDB 需要指定 VPC,所以我们在 「创建集群」 前需要先提前准备好好所需的 VPC,这里就不再进行步骤演示。

3011f084268b636a197ae362cddd6e91.png

Amazon MemoryDB 的创建步骤与 Amazon ElastiCache 基本一致,在这一步中,我们选择的节点类型为 「db.r6g.large(13.07 GiB)」,Shards 数量为 1,Replicas 数目为 2。

03e3cc04d01cc2f54d8600e9a097c6f2.png

集群创建完成后,我们可以从集群的详情页面查看 Endpoint 地址

a36f676e5c162f7a0125d511147607f6.png

接下来,我们登录到同一个 VPC 下的 Amazon EC2 机器中进行连接测试

b4ef8d7d98e59e863c7084c067e14f66.png

性能比较

Redis 附带了一个名为 redis-benchmark 的基准测试工具。我们通过该程序模拟任意数量的客户端同时连接并在服务器上执行操作,计算完成请求所需的时间。来对 Amazon ElastiCache 与 Amazon MemoryDB 的每秒能够处理的平均请求数进行对比。

测试的 Amazon MemoryDB 类型为「db.r6g.large(13.07 GiB)」,Amazon ElastiCache Redis 类型为「cache.r6g.large(13.07 GiB)」,测试机器为「c5.2xlarge」。

在 Amazon EC2 上执行 SHELL

$ redis-benchmark -h $HOST -q

Amazon ElastiCache 的测试结果如下

PING_INLINE: 102880.66 requests per second
PING_BULK: 107411.38 requests per second
SET: 106609.80 requests per second
GET: 105596.62 requests per second
INCR: 107066.38 requests per second
LPUSH: 106951.88 requests per second
RPUSH: 106496.27 requests per second
LPOP: 106157.12 requests per second
RPOP: 108695.65 requests per second
SADD: 107181.13 requests per second
HSET: 107066.38 requests per second
SPOP: 110253.59 requests per second
LPUSH (needed to benchmark LRANGE): 105708.25 requests per second
LRANGE_100 (first 100 elements): 69735.01 requests per second
LRANGE_300 (first 300 elements): 34506.55 requests per second
LRANGE_500 (first 450 elements): 24795.44 requests per second
LRANGE_600 (first 600 elements): 19584.80 requests per second
MSET (10 keys): 77579.52 requests per second

*左滑查看更多

Amazon MemoryDB 的测试结果如下

PING_INLINE: 105042.02 requests per second
PING_BULK: 107874.87 requests per second
SET: 16321.20 requests per second
GET: 107181.13 requests per second
INCR: 16160.31 requests per second
LPUSH: 16262.81 requests per second
RPUSH: 16257.52 requests per second
LPOP: 16217.97 requests per second
RPOP: 16326.53 requests per second
SADD: 102145.05 requests per second
HSET: 16082.34 requests per second
SPOP: 108932.46 requests per second
LPUSH (needed to benchmark LRANGE): 16212.71 requests per second
LRANGE_100 (first 100 elements): 67842.61 requests per second
LRANGE_300 (first 300 elements): 33467.20 requests per second
LRANGE_500 (first 450 elements): 23674.24 requests per second
LRANGE_600 (first 600 elements): 18188.43 requests per second
MSET (10 keys): 15105.74 requests per second

*左滑查看更多

Amazon MemoryDB for Redis 与 Amazon ElastiCache 的对比结果如图所示。

57876acfe8445fdb9ec65242a6602d52.png

从对比结果中可以看出 Amazon MemoryDB 在读取速度上与 Amazon ElastiCache 相差不大,但大多数写入命令的速度上不到  Amazon ElastiCache 的五分之一。

成本与价格

目前 Amazon MemoryDB 的可选类型还不如 Amazon ElastiCache 丰富,在两者几乎相同的配置类型下,Amazon MemoryDB 价格还是比 Amazon ElastiCache 略贵一些。以 Virginia 地区的价格为例:

0a94d4a78b8d8f468523e6413a00eb2f.png

总结

您可以轻松创建 Amazon MemoryDB 集群并将其扩展到多达 500 个节点,在内存中存储超过 100 TB 的数据。Amazon MemoryDB 具有高可用性,支持跨多个可用区的复制。Amazon MemoryDB 也是安全的,支持 Amazon Virtual Private Cloud (VPC)、使用 Amazon Key Management Service 进行静态加密、传输中加密以及使用 Redis 访问控制列表 (ACL) 进行身份验证和授权。

此外,Amazon MemoryDB 是完全托管的,因此您无需担心数据库管理任务,例如硬件配置、软件修补、设置、配置或备份。使用 Amazon MemoryDB 无需预先承诺或费用,您只需为使用的数据库容量付费。

目前 Amazon MemoryDB for Redis 已经在Amazon 多个区域可以使用。作为缓存数据持久化的一种选择,虽然写速度与 Amazon ElastiCache 相比有所下降,但读取速度还是非常令人期待。在价钱方面,相同类型的 Amazon MemoryDB 的价格是 Amazon ElastiCache 价格的1.5倍。

在未来的日子里,我们会看到更多的案例,Amazon MemoryDB for Redis为主流的RDS + Amazon ElastiCache 或者 Amazon DynamoDB+ DAX提供了另外一种解决和替代方案。拥有这样的集成功能可以让您的网站或程序从一开始就启用缓存,并且减少不菲的开发时间与维护成本,并快速获得 Redis缓存的性能优势,而无需管理单独的平台基础设施。

Amazon MemoryDB for Redis非常适合需要微秒响应时间并且随时可能出现大量流量峰值的应用程序,例如游戏排行榜、会话存储和实时分析。您可以按照不同的具体的业务形态,来选取合适您的服务,从而快速而轻松地实现您的业务需求。

本篇作者

51a337307e351afa755f89a952d9a7e4.png

张晓功

亚马逊云科技云原生应用架构师

负责基于亚马逊云科技的云计算方案架构的咨询和设计,同时致力于亚马逊云科技云服务在国内的应用和推广。精通微服务架构设计、治理、容器编排、监控熔断等性能和可靠性等具体功能落地。具有丰富的互联网产品开发、大规模并行计算、性能优化等经验。

4c67a5f745e7bbe5a54b5b1a0b37c56e.png

许和风

亚马逊云科技云原生应用工程师

负责基于亚马逊云科技的云计算方案架构的设计和实施。对公有云、DevOps、微服务、容器化、Serverless、全栈开发等有深入的研究,同时致力于推广云原生应用,帮助客户利用云原生来实现业务需求。

b5d79c2262d073c0bd26cc946de19d86.png

3387d57134dae2390d2e38afe03163fb.gif

dbff85e6daab7d060608e8acb0117e23.gif

听说,点完下面4个按钮

就不会碰到bug了!

319e12c8095e0423665b098f99b2d02d.gif

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值