Redis
Redis(Remote Dictionary Server,远程字典服务 )是一款开源的高性能存储系统,使用ANSI C语言编写,支持Key-Value等多种数据结构,提供字符串(String)、哈希(Hash)、列表(List)、集合结构(Set、 Sorted_Set )、流(Stream)等类型数据的直接存取服务。此外,数据读写可基于内存也可持久化到磁盘。
副本
在本云产品中,副本即Redis实例的节点。单副本表示该Redis实例仅有主节点。多副本表示该Redis实例不仅有主节点,还有对应从节点,能够提供实例的高可用性。
Redis实例
Redis实例用于为用户提供云原生的基础设施软件,是真正对外提供服务的基本单元。为满足用户不同业务场景的需求,本云产品将提供单机版、读写分离版和集群版三种架构类型的Redis实例。各架构类型的具体说明如下:
单机版
由1个单副本主节点(分片)构成。因此,该Redis实例的总节点数量为1。
该架构类型的Redis实例不具备高可用性。
适用于对可靠性要求不高、仅需要缓存临时数据的业务场景。
读写分离版
由1个读写节点和若干只读节点构成。因此,该Redis实例的总节点数量为读写节点数量与只读节点数量的总和。
通过增加只读节点个数,可使Redis实例整体性能线性增长。
只读节点默认采用同步复制的方式,与读写节点保持数据一致。当只读节点数量较多时,此种方式将导致读写节点的CPU负载严重,写入性能下降。
为了减少读写节点的工作负载,可以选择开启链式传播,使只读节点与读写节点保持数据一致。但是,在数据大量写入场景下,读节点会存在部分脏数据。
适用于高读写比(如热点数据集中)的业务场景。
集群版
由于此类型的每个主节点(分片)均拥有副本(主从副本分别部署在容器集群的不同节点上),所以由若干主节点(分片)和相应数量的从节点构成。因此,该Redis实例的总节点数量为主节点(分片)数量乘以副本数量。
当默认未开启读写分离时,每个主节点(分片)均拥有2个副本。当开启读写分离时,每个主节点(分片)的副本数量可以根据业务需求自行配置,其中主节点即为读写节点,从节点即为主节点的只读节点。
主节点(分片)用于提供日常业务访问,从节点用于提供高可用。当主节点异常时,云平台会自动切换至从节点,保障业务平稳运行。
集群版包括集群模式和代理模式两种使用场景。具体架构如下(将不再对主从节点之间的读写分离情况进行说明):
集群模式:采用无中心设计,将业务缓存数据在Redis集群中进行分片处理。每个Redis节点仅存储对应数据分片,不保留完整数据,通过哈希槽(hash slot)计算数据所在的节点,进行对应读写操作。
代理模式:采用中心化设计,通过负载均衡向外暴露Redis服务。负载均衡和数据同步等需求,均由Redis代理完成,而无需在业务侧关注。
适用于数据量较大、整体读写请求压力较大、吞吐密集型、高性能的业务场景。