检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
当前分布式加锁主要有三种方式:(磁盘)数据库、缓存数据库、Zookeeper。 使用DCS服务中Redis缓存实例实现分布式加锁,有几大优势: 加锁操作简单,使用SET、GET、DEL等几条简单命令即可实现锁的获取和释放。 性能优越,缓存数据的读写优于磁盘数据库与Zookeeper。 可靠性强,DCS有主备和集群实例类型,避免单点故障。
未开放API的功能,请通过Web管理控制台进行操作。 监控与审计的API请参考云监控服务以及云审计服务的帮助手册。 DCS使用流程 图1 DCS使用流程图 创建用户并授权使用DCS。 购买Redis实例。 连接Redis实例。 DCS实例创建后,您可以通过客户端连接Redis实例
哨兵原理 Sentinel概览 Redis Sentinel为Redis实现高可用。实际使用中,您可以使用Sentinel帮助Redis在无需人工干预的情况下抵御某些类型的故障,Redis Sentinel还能够完成其他辅助任务,如监控、通知和客户端配置。详细介绍可参考Redis官网。
Cluster集群实例的特点: 兼容Redis原生Cluster集群。 继承smart client的设计方案。 相比主备,数倍性能提升。 Redis Cluster集群实例支持从客户端实现读写分离,相关操作请参见Cluster集群实例读写分离。 Redis版本不支持升级,例如,Redis
功能。 这是由于私有定制Redis通信协议(RESP协议)的标准无法统一等原因无法实现跨云/Region的Redis侧双活,因此,如果需要双活,可以通过应用侧进行双写改造实现。 图9 应用侧双写实现多活 说明: 双写方案无法保证缓存的一致性(网络出现问题),需要应用侧可以容忍对应
使用DCS实现排行榜功能 方案概述 在网页和APP中经常需要用到榜单的功能,对某个key-value的列表进行降序显示。当操作和查询并发大的时候,使用传统数据库就会遇到性能瓶颈,造成较大的时延。 使用分布式缓存服务(DCS)的Redis版本,可以实现一个商品热销排行榜的功能。它的优势在于:
创建缓存实例 功能介绍 创建缓存实例,该接口创建的缓存实例支持按需和包周期两种计费方式。 调用方法 请参见如何调用API。 URI POST /v2/{project_id}/instances 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String
使用DCS实现电商秒杀功能 方案概述 应用场景 电商秒杀是一种网上竞拍活动,通常商家会在平台释放少量稀缺商品,吸引大量客户,平台会收到平时数十倍甚至上百倍的下单请求,但是只有少数客户可以下单成功。电商秒杀系统的分流过程可以分为以下几个步骤: 用户请求进入系统:当用户发起秒杀请求时,请求会首先进入负载均衡服务器。
使用Nginx实现公网访问DCS 方案概述 当前,华为云DCS的Redis 4.0及以上版本不支持绑定弹性IP,无法直接通过公网访问。 本章节主要介绍通过跳板机访问VPC内Redis 4.0/5.0/6.0单机、主备、读写分离、Proxy集群实例的操作,Cluster集群实例暂不支持使用该方案进行公网访问。
使用客户端缓存/本地缓存。 该方案需要提前了解业务的热点Key有哪些,设计客户端/本地和远端Redis的两级缓存架构,热点数据优先从本地缓存获取,写入时同时更新,这样能够分担热点数据的大部分读压力。缺点是需要修改客户端架构和代码,改造成本较高。 设计熔断/降级机制。 热Key极易造成缓存击穿,高峰期
Cluster集群实例容量和性能未达到瓶颈,但某个分片容量或性能已过载是什么原因? 这是由于Cluster集群采用的是分片设计理念,每个具体的Key只能分布到某一个具体的分片节点上,计算Key的分布过程有以下两个步骤: 针对Key值进行CRC16算法计算后对16384取模,得到对应的槽位(Slot)值。
时可用,实现快速部署,无需关心硬件及软件。 自己搭建Memcached的操作和设置较复杂。 可用性 DCS的Memcached主备实例支持双机热备,能够持续提供稳定的服务,在主节点故障时,备节点秒级自动升级为主节点,避免单点故障。 自建的Memcached服务需要自行实现高可用。
访问。对于设置了过期时间的Key,当达到过期时间时,Redis不会立即对Key进行删除,由于Redis当前主线程仍然为单线程,故Redis设计了几种机制对已经过期的Key进行内存释放: 惰性删除:Redis的删除策略由主循环中的判断逻辑进行控制,所有Key读写命令执行之前都会调用
主节点)和只读地址(备节点),客户端连接时,可分别选择主节点或备节点。 主备实例实现客户端读写分离,需要在客户端做配置。如需使用读写分离功能,推荐使用读写分离实例。 Redis 3.0主备实例架构设计 DCS的Redis 3.0主备实例架构,如图1所示。 图1 Redis 3.0主备实例示意图
写分离实例。 实例类型变更后支持的命令,请参考对应的开源命令兼容性。 除了上表中提到的实例外,其他实例类型目前不支持实例类型的变更,若您想实现跨实例类型的规格变更,可参考使用迁移任务在线迁移Redis实例进行操作。 实例类型是否支持变更,以控制台实例的“变更规格”操作界面为准。 图1
RedisShake是一款开源的Redis迁移工具,支持Cluster集群的在线迁移与离线迁移(备份文件导入)。DCS Cluster集群与Redis Cluster集群设计一致,数据可平滑迁移。 本文以Linux系统环境为例,介绍如何使用RedisShake工具将自建的Redis Cluster离线迁移到DCS
配置DCS监控告警 本章节主要介绍部分监控指标的告警策略,以及配置操作。在实际业务中,请按照以下告警策略,配置监控指标的告警规则。 Redis实例告警策略 表1 Redis实例配置告警的指标 指标名称 取值范围 告警策略 是否接近性能上限 告警处理建议 CPU利用率 0~100%
原生JedisPool(操作单机,主备,Proxy集群)模式下,Jedis不提供重试功能,因此需要自己封装重试。可以参考JedisClusterCommand的实现方法,自行实现JedisPool的重试方法。 在JedisCluster模式下,Jedis提供了重试功能,可以配置maxAttempts参数来定义
RedisShake是一款开源的Redis迁移工具,支持Cluster集群的在线迁移与离线迁移(备份文件导入)。DCS Cluster集群与Redis Cluster集群设计一致,数据可平滑迁移。 本文以Linux系统环境为例,介绍如何使用RedisShake工具将自建的Redis Cluster集群在线迁移到DCS
实例的备节点。 详情可以参考Redis 4.0/5.0/6.0基础版主备实例架构设计。 图1 连接信息 默认情况下,客户端通过主备实例的主节点读、写数据,备节点用于同步数据。如需使用“只读地址”实现读写分离,需要在客户端增加用户读写请求判断,如果是写请求,将请求发送给读写域名,如果是读请求,将请求发送给只读域名。