云服务器内容精选

  • Redis 6.0企业版主备实例架构设计 Redis 6.0企业版主备实例架构设计如图3所示。 图3 Redis 6.0企业版主备实例示意图 图说明如下: VPC 虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。 VPC内访问,客户端需要与Redis 6.0企业版主备实例处于相同VPC,并且配置安全组访问规则。配置方式请参考如何选择和配置Redis实例以及客户端的安全组。 客户应用 运行在E CS 上的客户应用程序,即Redis的客户端。 Redis实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考使用客户端连接Redis。 DCS缓存实例 DCS实例。主备实例包含了Master和Replica两个节点。 Redis 6.0企业版主备实例使用哨兵模式(Sentinel)进行管理,Sentinel会一直监控主备节点是否正常运行,当主节点出现故障时,进行主备倒换。 Sentinel对用户不可见,仅在服务内部中使用。Sentinel的详细介绍可参考什么是哨兵。 Redis的访问端口默认为6379。
  • 主备实例特点 DCS的主备实例在单机实例基础上,增强服务高可用以及数据高可靠性。 主备实例具有以下特性: 持久化,确保数据高可靠 实例包含一个主节点和一个备节点,都默认开启数据持久化。 Redis 3.0主备实例的备节点对用户不可见,不支持客户端直接读写数据。 Redis 4.0及以上版本的基础版主备实例的备节点对用户可见,用户可以通过只读地址连接到备节点上读取数据。 数据同步 主备节点通过增量数据同步的方式保持缓存数据一致。 当网络发生异常或有节点故障时,主备实例会在故障恢复后进行一次全量同步,保持数据一致性。 故障后自动切换主节点,服务高可用 当主节点故障后,连接会有秒级中断、不可用,备节点在15秒到30秒内自动完成主备切换,切换完成后恢复正常访问,无需用户操作,保证业务平稳运行。 故障切换期间,会有连接中断和不可用等情况,需要业务侧客户端具备重连/重试机制。 主备切换完成后,原主节点(已切换为从节点)因故障不会立刻恢复,业务继续访问原主节点会失败,可通过配置Redis SDK解决此类情况,具体请参见使用客户端连接Redis。 多种容灾策略 跨AZ部署(可用区):DCS支持将主备实例的主备副本部署在不同的AZ内,节点间电力与网络均物理隔离。您可以将应用程序也进行跨AZ部署,从而达到数据与应用全部高可用。 读写分离 Redis 4.0、Redis 5.0和Redis 6.0基础版主备实例支持客户端读写分离,分别提供可读写的连接地址(主节点)和只读地址(备节点),客户端连接时,可分别选择主节点或备节点。 主备实例实现客户端读写分离,需要在客户端做配置。如需使用读写分离功能,推荐使用读写分离实例。
  • Redis 3.0主备实例架构设计 DCS的Redis 3.0主备实例架构,如图1所示。 图1 Redis 3.0主备实例示意图 示意图说明: VPC 虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。 客户应用 运行在ECS上的客户应用程序,即Redis的客户端。 Redis实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考用户指南的连接缓存实例。 DCS缓存实例 DCS实例。主备实例包含了Master和Replica两个节点。默认开启数据持久化功能,同时保持节点间数据同步。 DCS实时探测实例可用性,当主节点故障后,备节点升级为主节点,恢复业务。 Redis的访问端口默认为6379。
  • Redis 4.0/5.0/6.0基础版主备实例架构设计 Redis 4.0/5.0/6.0基础版主备实例的架构设计,如下图所示。 图2 Redis 4.0/5.0/6.0基础版主备实例示意图 图说明如下: Redis 4.0/5.0/6.0基础版主备实例,分别提供可读写的 域名 连接地址(用于连接主节点)和只读地址(用于连接备节点)。 连接地址和只读地址,可通过控制台的实例详情页面获取。 Redis 4.0/5.0/6.0基础版主备实例使用哨兵模式(Sentinel)进行管理,Sentinel会一直监控主备节点是否正常运行,当主节点出现故障时,进行主备倒换。 Sentinel对用户不可见,仅在服务内部中使用。Sentinel的详细介绍可参考什么是哨兵。 只读节点和读写节点规格一致,用户创建主备实例时,默认包含一个主节点和一个备节点。 Redis 4.0及以上版本的基础版实例支持定义端口,如果不自定义端口,则使用默认端口6379。图中以默认端口6379为例,如果已自定义端口,请根据实际情况替换。 Redis 4.0及以上版本的基础版主备实例在只读域名不带负载均衡,对于可靠性和时延敏感的应用场景,建议使用集群或读写分离类型的实例。 Redis 4.0及以上版本的基础版主备实例的只读域名在从节点发生故障场景下会出现请求失败的情况,对于可靠性和时延敏感的应用场景,建议使用读写分离类型的实例。
  • Cluster集群实例架构 Cluster版Redis集群兼容开源Redis的Cluster,基于smart client和无中心的设计方案,对服务器进行分片。 Cluster版Redis集群每种实例规格对应的分片数,如表1所示。 在创建DCS Cluster集群实例时,可以自定义分片大小。如果不自定义分片大小,使用系统默认分片,每个分片的大小=实例规格/分片数,例如,集群规格为48GB的实例,分片数为6,则每个集群分片的大小为48GB/6=8GB。 表1 Cluster集群实例规格和分片数的对应关系 集群版规格 分片数 4GB/8GB/16GB/24GB/32GB 3 48GB 6 64GB 8 96GB 12 128GB 16 192GB 24 256GB 32 384GB 48 512GB 64 768GB 96 1024GB 128 2048GB 128 无中心架构 Redis Cluster的任意节点都可以接收请求,但节点会将请求发送到正确的节点上执行,同时,每一个节点也是主从结构,默认包含一个主节点和一个从节点,由Redis Cluster根据选举算法决定节点主从属性。 图1 Redis Cluster无中心架构 数据预分片 Redis Cluster会预先分配16384个slot,每个Redis的server存储所有slot与redis server的映射关系。key存储在哪个slot中,由Crc16(key) mod 16384的值决定。如下图所示: 图2 Redis Cluster预分片示意图 Redis Cluster集群的每个分片也是一个Redis主备实例。当分片上的主节点故障时,该分片上的连接会有秒级中断、不可用,备节点在30秒内自动完成主备切换,单分片故障仅影响该分片上的数据访问,不影响其他分片上的数据访问。 Redis集群单分片主节点故障时,主备切换完成后,该分片原主节点(已切换为从节点)因故障不会立刻恢复,业务继续访问该分片原主节点会失败,可通过配置Redis SDK解决此类情况,具体请参见使用客户端连接Redis。
  • 读写分离实例 图1 读写分离实例 实例示意图说明: VPC终端节点 服务 VPC终端节点服务,主要是将Redis缓存实例配置为VPC终端节点支持的服务,用户可以直接通过VPC终端节点服务的地址访问。 Redis读写分离实例提供的IP地址和域名,即为VPC终端节点服务的地址。 ELB 弹性负载均衡服务器,采用集群高可用方式,支持多可用区部署。 Proxy 代理服务器集群。通过Proxy节点识别用户读写请求,如果是写请求,则转发给主节点,如果是读请求,则转发给备节点,不需要用户在客户端做任何配置。 Sentinel集群 监控主备节点状态,当主节点出现故障或异常时,进行主备倒换,保证服务不中断。 主备实例 读写分离实例,后端是一个主备实例,包含了主和备两个节点。默认开启数据持久化功能,同时保持节点间数据同步。 主备节点支持跨可用区部署。
  • Lazy free机制 解决的痛点/问题 Redis是单线程程序,当运行一个耗时较大的请求时,会导致所有请求排队等待,在请求处理完成前,Redis不能响应其他请求,因此容易引发性能问题。而Redis删除大的集合键时,就属于一种比较耗时的请求。 原理 Redis 4.0提供的一种惰性删除或者说延迟释放机制,主要用于解决删除大key对Redis进程的阻塞,从而避免带来性能与可用性问题。 删除key时,Redis异步延时释放key的内存,把key释放操作放在bio(Background I/O)单独的子线程处理中。 使用方法 主动删除 unlink unlink与del命令目的一样,删除某个key。unlink在删除集合类键时,如果集合键的元素个数大于64个,会把内存释放操作,给单独的bio(Background I/O)线程来执行。因此unlink删除操作能在非常短的时间内完成包含上百万个元素的大key删除。 flushall/flushdb 通过对flushall/flushdb添加ASYNC异步清理选项,Redis在清理整个实例或单个DB时,操作都是异步的。 过期key删除、大key驱逐删除 被动删除有四种场景,每种场景对应一个配置参数,默认都是关闭: lazyfree-lazy-eviction no //针对redis内存使用达到maxmemory,并设置有淘汰策略时,是否采用lazy free机制 lazyfree-lazy-expire no //针对设置有TTL的键,过期后,被redis清理删除时是否采用lazy free机制 lazyfree-lazy-server-del no //针对有些指令在处理已存在的键时,会带有一个隐式的DEL键的操作 slave-lazy-flush no //针对slave进行全量数据同步,slave在加载master的RDB文件前,会运行flushall来清理自己的数据场景
  • Redis的Arm和x86实例有什么差异? 当前华为云DCS Redis实例的CPU架构支持Arm计算和x86计算。Arm Redis和x86的Redis两者功能是一样的。对客户端使用来说完全一样,没有额外的适配工作量。 可能在部分复杂的命令,大key且命令复杂度超过O(N)场景下,x86 Redis单CPU能力会强于Arm Redis。 综合来看,Arm Redis和x86 Redis能力和性能相当,都能满足业务需求,Arm Redis价格略低,请根据需要进行选择。 部分Region已停售“Arm计算”类型,推荐使用“x86计算”类型。 父主题: 实例类型/版本
  • 版本差异 DCS在创建实例时,Redis可选择“版本号”、“实例类型”。 DCS Redis 3.0已下线,暂停售卖,建议使用Redis 4.0/5.0/6.0。 版本号 版本号共有3.0,4.0,5.0,6.0版本可以选择,它们的区别如表1。更多Redis 4.0和Redis 5.0的特性,请参考Redis4.0新特性介绍“”和Redis5.0新特性介绍章节。 表1 不同版本支持的特性、性能差异说明 比较项 Redis 3.0 Redis 4.0 & Redis 5.0 Redis 6.0 兼容开源版本 Redis 3.0兼容开源3.0.7版本 Redis 4.0兼容开源4.0.14版本,Redis 5.0兼容开源5.0.14版本 说明: 2022年2月之前创建的Redis 5.0实例,兼容开源5.0.9版本。 开源版本查询可以参考如何查询Redis实例的原生版本。 如果需要兼容5.0.14版本的Redis,请重新创建实例。目前不支持Redis升级。 Redis 6.0基础版兼容开源6.2.7版本 Redis 6.0企业版兼容开源KeyDB 6.0.16版本 实例部署模式 采用虚机部署 在物理机上容器化部署 在物理机上容器化部署 CPU架构 支持x86 支持x86 支持X86 创建实例耗时 3~15分钟,集群约10~30分钟 约8秒 约8秒 QPS 单节点约10万QPS 单节点约10万QPS 基础版单节点约15万QPS 企业版单节点约40万QPS 公网访问 支持 暂不支持 暂不支持 域名连接 支持VPC内使用域名连接 支持VPC内使用域名连接 支持VPC内使用域名连接 可视化数据管理 不支持 提供Web CLI访问Redis,管理数据 提供Web CLI访问Redis,管理数据 实例类型 支持单机、主备、Proxy集群 支持单机、主备、Proxy集群、Cluster集群 基础版支持单机、主备、Cluster集群 企业版暂只支持主备 实例规格 提供2G、4G、8G直至1024G多种规格 提供2G、4G、8G直至1024G多种规格,同时单机主备还支持128MB、256MB、512MB、1GB四种小规格实例 提供4G、8G、16G、32G、64G多种规格,同时单机主备还支持128MB、256MB、512MB、1GB四种小规格实例 扩容/缩容 支持在线扩容和缩容 支持在线扩容和缩容 支持在线扩容和缩容 备份恢复 主备和Proxy集群实例支持 主备、Proxy集群和Cluster集群实例支持 主备 由于Redis不同版本的底层架构不一样,在创建Redis实例时,确定Redis版本后,将不能修改,如Redis 3.0暂不支持升级到Redis 4.0或者Redis 5.0。如果需要由低版本升级到高版本,建议重新购买高版本实例,然后进行数据迁移。 实例类型 Redis实例类型分为单机、主备、Proxy集群、Cluster集群,它们的架构与应用场景,请参考实例类型章节。 父主题: 实例类型/版本