全部产品
Search
文档中心

:Tair选型指南

更新时间:Aug 28, 2024

创建云原生内存数据库Tair实例前,您需要结合产品性能、价格、业务场景、工作负载等因素,做出性价比与稳定性最优的决策。本文围绕以上因素,着重介绍实例类型、引擎版本、架构、存储介质,为您的选型提供相关参考。

选型流程

通常,您需要结合产品性能、价格、业务场景(例如用作高速缓存或内存数据库)、工作负载等因素,选择实例的类型与规格,推荐的选型流程如下:

说明

在选型过程中 ,您可以在价格计算器中获取不同实例规格的价格信息。

步骤

选型操作

说明

1

选择存储介质

云原生内存数据库Tair面向高性能、高性价比和超大规格等多种场景提供不同的存储介质,分别为内存型、持久内存型和磁盘型。

2

选择部署架构

云原生内存数据库Tair支持标准架构集群架构读写分离架构,可满足不同业务场景对业务读写能力、数据量和性能的要求。

3

选择容灾方案

云原生内存数据库Tair实例若因不可预料的原因(例如设备故障、机房断电等)发生故障,容灾机制保障数据的一致性和业务可用性。云原生内存数据库Tair提供多种灾备方案供您选择,可满足不同的业务场景。

4

预估内存规格

提前预估可能消耗的内存容量,可以帮助节约成本、避免频繁变更规格给业务带来的影响。

完成上述实例选型后,您可以通过控制台或调用OpenAPI创建Tair实例,更多信息请参见创建Tair实例

说明

当您完成选型并开始使用Tair实例后,您需要观察业务正常运行状态下的性能监控信息,验证当前实例的服务能力是否符合预期,更多信息请参见服务能力验证与调整

选择存储介质

云原生内存数据库Tair从访问延时、持久化需求、整体成本这三个核心维度考量,推出了DRAM、NVM和ESSD云盘存储介质,为您提供更强的性能、更多的数据结构和更灵活的存储方式,满足不同场景下的业务需求。

场景

推荐

特点

以性能为中心的关键业务场景。

内存型

高性能、高数据持久化要求,且成本作为次要考虑因素的数据缓存与存储场景。

持久内存型

  • 超高性价比:相同容量下对比Redis社区版,价格降低30%左右,性能可达Redis社区版的90%,更多信息请参见持久内存型性能白皮书

  • 支持增强型数据结构模块(modules):exString(包含Redis String命令增强)、exHashCpc

  • 掉电数据不丢失:强大的命令级持久化保障,每个写操作持久化成功后返回,可将其作为内存数据库(非缓存)使用。

大存储、低访问密度、低访问延迟要求,且成本作为首要考虑因素的数据存储场景。

磁盘型

  • 低成本:最低为Redis社区版的15%。

  • 性能:约为Redis社区版的60%,更多信息请参见磁盘(ESSD)型性能白皮书

  • 磁盘存储:数据分布在ESSD或SSD中,容量可达百TB级别,拥有高数据可靠性。

  • 数据分布:采用阿里云TairDB存储引擎,数据通过磁盘持久化,内存用于请求加速。

  • 高兼容性:兼容Redis社区版6.0大部分的数据结构和命令。

各系列支持的命令与参数,请参见Tair命令支持概览参数支持

云原生版与经典版

若您选择内存型,您可以选择云原生版或经典版,对比如下:

对比项

云原生实例(推荐)

经典实例

架构

基于新一代管控架构,更灵活、扩容能力更强。后续的产品将基于此架构演进。

基于传统管控架构。集群架构实例为预设固定规格,不支持自定义。

扩容能力

  • 支持在原本地资源充足的情况下快速扩容(无需迁移至新实例),扩容速度更快,对业务影响更小。更多信息请参见变配流程

  • 集群架构实例扩容无闪断。

  • 集群架构实例支持自由调整2~256个分片节点数量(支持最小粒度为1个分片),同时支持调整分片节点的规格,能够更好地应对不同性能、容量的需求场景。

  • 读写分离架构支持自由调整1~9个只读节点数量。

  • 读写分离架构支持在多可用区时就近访问。

  • 扩容耗时较长。

  • 集群架构实例扩容会有闪断。

  • 集群架构实例的分片节点的扩展数固定,例如2分片、4分片、8分片等。

  • 读写分离架构的只读节点固定为1、3、5个。

说明

更多信息请参见云原生实例和经典实例对比

选择部署架构

云原生内存数据库Tair支持三种不同的部署架构,可满足不同的业务场景对业务读写能力、数据量和性能的要求。

图 2. 部署架构对比部署架构对比

说明

下文默认介绍高可用类型的实例架构。标准架构和集群架构还支持单副本类型,但单副本类型无高可用功能,仅适用于测试等纯缓存场景。

实例架构

简介

适用场景

标准架构

采用主从(master-replica)模式搭建。主节点提供日常服务访问,从节点提供HA高可用。当主节点发生故障,系统会自动在30秒内切换至从节点,保障业务平稳运行。

  • 对Redis协议兼容性要求较高的业务。

  • Tair作为持久化数据存储使用的业务。

  • 单个Tair性能压力可控的场景。

  • 命令相对简单,排序和计算之类的命令较少的场景。

集群架构

  • 由代理节点、数据分片和配置服务器组件构成,可通过增加数据分片的方式实现横向扩展。

  • 每个数据分片均为双副本(分别部署在不同机器上)高可用架构,主节点发生故障后,系统会自动进行主从切换保证服务高可用。

  • 数据量较大的场景。

  • 整体读写请求的QPS压力较大的场景。

  • 吞吐密集型、高性能应用场景。

读写分离架构

  • 由代理节点、主从节点和只读节点构成。

  • 只读节点采取链式复制架构,扩展只读节点个数可使整体实例性能呈线性增长。

  • 读请求QPS压力较大的场景(如热点数据集中)。

  • 对Redis协议兼容性要求较高的业务场景,例如规避集群架构的使用限制

说明

由于数据同步至只读节点存在一定延迟,不适用于数据一致性要求高的场景,如对数据一致性要求高建议选用集群架构。

说明

集群架构可选择不同的连接模式:

  • 代理模式:客户端的请求由代理节点转发至数据分片,可享受代理节点带来的负载均衡、读写分离、故障转移、代理查询缓存(仅内存型支持)、长连接等特性能力。更多信息,请参见Tair Proxy特性说明

  • 直连模式:可通过直连地址绕过代理,直接访问后端的数据分片(类似连接开源Redis集群)。相比代理模式,直连模式节约了通过代理处理请求的时间,可以在一定程度上提高Tair服务的响应速度。

选择容灾方案

图 3. Tair容灾架构演进Redis容灾架构演进

灾备方案

灾备级别

说明

单可用区高可用方案

★★★☆☆

主从节点部署在同一可用区中的不同机器上,当任一节点发生故障时,由高可用HA(High Availability)系统自动执行故障切换,避免单点故障引起的服务中断。

同城容灾方案

★★★★☆

主从节点分别部署在同一地域下两个不同的可用区,当任一可用区因电力、网络等不可抗因素失去通信时,高可用HA系统将执行故障切换,确保整个实例的持续可用。

跨地域容灾方案

★★★★★

由多个子实例构成全球分布式实例,所有子实例通过同步通道保持实时数据同步,由通道管理器负责子实例的健康状态监测、主从切换等等异常事件的处理,适用于异地灾备、异地多活、应用就近访问、分摊负载等场景。更多介绍请参见Tair全球多活简介

预估内存规格

通常情况下,您需要考虑下述因素预估可能消耗的内存容量并在创建实例时选择对应的规格,该操作有助于节约成本、避免频繁变更规格给业务带来的影响。

重要

在确定云原生内存数据库Tair实例的内存容量时,首先要考虑存储的业务数据大小,其次,您还需额外考虑实例自身运行占用的必要内存开销(例如进程元数据、复制缓冲区、碎片等)。不同于开源Redis数据库,选用Tair时,您无需再额外考虑Tair持久化Fork写时复制占用的内存开销以及Tair增强功能(如安全白名单、审计、大Key、热Key等)的内存开销,这些开销由阿里云承担,不计入购买的实例内存容量。

  • Key的数据类型、长度和数量。

    说明

    如果使用可包含元素的数据类型(例如Hash),您还需要计算每个Key中,各元素的数量和长度。

  • Value的长度。

  • Key的过期时间与逐出策略(maxmemory-policy参数)

  • 访问模型,例如大量的客户端连接、使用Lua脚本或事务等,均需要为其预留适量的内存。

  • 中长期的业务增长情况。

创建Tair实例

完成上述实例的选型后,您可以通过控制台或调用OpenAPI创建Tair实例:

服务能力验证与调整

云原生内存数据库Tair支持非常丰富的监控指标,当您完成选型并开始使用Tair实例后,建议您观察业务正常运行状态下的性能监控信息,验证当前实例的服务能力是否符合预期。具体操作,请参见查看监控数据

说明

您也可以使用Redis-benchmark执行性能压测进行验证,更多信息,请参见Redis-benchmark使用说明

如果您通过性能监控发现实例内存使用率一直较高,您需要先排查内存使用率较高的原因,如无异常,可升级至更高的规格,具体操作,请参见变更实例配置。关于实例性能类问题的排查方法,请参见: