云数据库 Tair(兼容 Redis)支持多副本集群版实例,同时也支持集群版开启读写分离功能。可轻松突破Redis自身单线程瓶颈,满足大容量、高性能的业务需求。集群版支持代理和直连两种连接模式,您可以根据本章节的说明,选择适合业务需求的连接模式。
注意事项
云原生版集群架构不支持同时使用代理模式和直连模式,但仅云原生版集群架构(代理模式)支持开启读写分离功能。
经典版集群架构仅支持双副本。
代理模式(推荐)
代理(Proxy)模式能够大大简化集群架构实例的使用方式,使之与标准架构(主备)的连接方式相同。代理服务器会自动实现路由转发,将客户端的请求转发到各数据分片,同时代理节点还提供了缓存热点Key、故障转移等高级特性。更多信息请参见Tair Proxy特性说明。
代理模式的服务架构图和组件说明如下。
多副本
表 1. 集群版代理模式组件说明
组件 | 说明 |
代理服务器(Proxy Server) | 负责将客户端的请求转发到各数据分片。集群版架构中由多个Proxy组成。 |
数据分片(Data Shards) | 每个数据分片均为一主多备(分别部署在不同机器上)的高可用架构。备节点的数量范围为1 ~ 4,可以选择部署在备可用区。多个备节点可以提高容灾能力,减少数据丢失的可能性。 |
高可用服务(HA) | 主节点(Master)发生故障后,系统会自动在30秒内切换至备节点(Replica),以保证服务高可用和数据高可靠。如果实例为双可用区部署,当主可用区存在备节点时,主备切换会优先选择主可用区的备节点进行切换,避免业务跨可用区访问。 |
各组件的数量和配置由实例的规格决定。使用经典部署模式时不支持自定义修改,但您可以通过变更实例配置调整集群的大小,或者将实例调整为其他架构;使用云原生部署模式时支持以1分片为单位对分片数量进行自定义修改,支持区间为2~256,在调整时Proxy数量会自动同步增减,修改分片数量操作详见调整实例的分片数量。
开启读写分离
图 2. 集群版(开启读写分离)服务架构示例
表 2. 集群版(开启读写分离)组件说明
组件 | 说明 |
代理服务器(Proxy Server) | 当客户端与代理服务器(Proxy Server)建立连接后,Proxy会自动识别客户端发起的请求,将请求转发到各数据分片以及对应的读写节点上。例如将写请求转发给主节点,将读请求均衡地转发给主节点和只读节点。 |
数据分片(Data Shards) | 每个数据分片由1个主节点(Master)、最多4个只读节点(Read Replicas)组成。
|
高可用服务(HA) | 当主节点(或只读节点)异常时,实例将自动进行主备切换或重搭只读节点,并更新相应的路由信息,保证服务高可用和数据高可靠。 |
若实例为单可用区,则所有节点均在主可用区,实例仅提供主可用区的连接地址。
若实例为双可用区,则实例将分别提供主、备可用区的连接地址,均支持读、写操作。写请求均会路由到主可用区的主节点中;每个可用区的读请求会路由到本可用区的主节点或只读节点中,实现就近访问。若发生极端情况,备可用区的所有只读节点都不可用,备可用区的读请求也会路由到主节点中,不会影响业务运行。
直连模式
直连模式为类似连接原生Redis Cluster的方式连接集群。客户端首次连接时会通过DNS将直连地址解析为一个随机数据分片的虚拟IP(VIP)地址,之后即可通过Redis Cluster协议访问各数据分片。直连模式的服务架构和说明如下。
直连模式与代理模式的连接方式区别较大,相关注意事项和连接示例请参见使用直连模式连接实例。
云原生版集群架构(直连模式)也支持多副本。
使用场景
数据量较大
相比标准版,集群版可以有效地扩展存储量,最大可达16 TB(64 GB * 256分片),能有效的满足业务扩展的需求。
请求负载较大
标准版无法支撑较大的请求负载,需要采用多分片的部署方式来突破Redis单线程的性能瓶颈。
当读请求流量非常大,超过主节点性能上限时,您可以开启集群架构的读写分类功能。
说明由于仅云原生版集群架构(代理模式)实例支持开启读写分离,您可以通过新建实例、使用DTS同步数据的方式将其他版本的实例迁移至集群版(开启读写分离)实例。
吞吐密集型应用
相比标准版,集群版的内网吞吐量可通过增加分片数量线性扩展,可以更好地支持热点数据读取、大吞吐类业务。
多KEY操作较少的应用
由于集群为分布式架构,在一次操作多个KEY时需要确保所有KEY均在同一slot中,因此会对多KEY操作带来一些限制。详情请参见集群架构与读写分离架构实例的命令限制。
延迟敏感应用
双可用区实例可以在主可用区增加备节点,例如主可用区1个主节点、1个备节点,备可用区1个备节点。既提高了容灾的可靠性,同时也能避免由主备切换后应用跨可用区访问带来延迟升高的问题。
相关文档
如需查询内存中数据的分布情况请参见离线全量Key分析。