华为云用户手册

  • 如何优化大Key和热Key 类别 方法 大Key 进行大Key拆分。 分为以下几种场景: 该对象为String类型的大Key:可以尝试将对象分拆成几个Key-Value, 使用MGET或者多个GET组成的pipeline获取值,分拆单次操作的压力。如果是集群实例,由于集群实例包含多个分片,拆分后的Key会自动平摊到集群实例的多个分片上,从而降低对单个分片的影响。 该对象为集合类型的大Key,并且需要整存整取:在设计上严格禁止这种场景的出现,因为无法拆分。有效的方法是将该大Key从Redis去除,单独放到其余存储介质上。 该对象为集合类型的大Key,每次只需操作部分元素:将集合类型中的元素分拆。以Hash类型为例,可以在客户端定义一个分拆Key的数量N,每次对HGET和HSET操作的field计算哈希值并取模N,确定该field落在哪个Key上,实现上类似于Redis Cluster的计算slot的算法。 将大Key单独转移到其余存储介质。 无法拆分的大Key建议使用此方法,将不适用Redis能力的数据存至其它存储介质,如SFS或者其余NoSQL数据库,并在Redis中删除该大Key。 注意: 禁止使用DEL直接删除大Key,可能会造成Redis阻塞,甚至主备倒换。Redis 4.0及以上版本建议采用UNLINK命令删除大Key。 合理设置过期时间并对过期数据定期清理。 合理设置过期时间,避免历史数据在Redis中大量堆积。由于Redis的惰性删除策略,过期数据可能并不能及时清理,如果发现Redis过期Key清理较慢,建议配置过期Key扫描。 热Key 使用读写分离。 如果热Key主要是读流量较大,则可以在客户端配置读写分离,降低对主节点的影响。还可以增加多个副本以满足读需求,但是备机较多也有相应的影响,D CS 主备节点之间使用的是星型复制,即所有的备节点都直接和主节点保持同步,这样能保证备节点之间相互独立,且复制延迟较小。缺点是在备节点数量较多的情况下,主节点的CPU和网络负载会较高。 使用客户端缓存/本地缓存。 该方案需要提前了解业务的热点Key有哪些,设计客户端/本地和远端Redis的两级缓存架构,热点数据优先从本地缓存获取,写入时同时更新,这样能够分担热点数据的大部分读压力。缺点是需要修改客户端架构和代码,改造成本较高。 设计熔断/降级机制。 热Key极易造成缓存击穿,高峰期请求都直接透传到后端数据库上,从而导致业务雪崩。因此热Key的优化一定需要设计系统的熔断/降级机制,在发生击穿的场景下进行限流和服务降级,保护系统的可用性。
  • 大Key和热Key的影响 类别 影响 大Key 造成规格变更失败。 Redis集群变更规格过程中会进行数据rebalance(节点间迁移数据),单个Key过大的时候会触发Redis内核对于单Key的迁移限制,造成数据迁移超时失败,Key越大失败的概率越高,大于512MB的Key可能会触发该问题。 造成数据迁移失败。 数据迁移过程中,如果一个大Key的元素过多,则会阻塞后续Key的迁移,后续Key的数据会放到迁移机的内存Buffer中,如果阻塞时间太久,则会导致迁移失败。 容易造成集群分片不均的情况。 各分片内存使用不均。例如某个分片占用内存较高甚至首先使用满,导致该分片Key被逐出,同时也会造成其他分片的资源浪费。 各分片的带宽使用不均。例如某个分片被频繁流控,其他分片则没有这种情况。 客户端执行命令的时延变大。 对大Key进行的慢操作会导致后续的命令被阻塞,从而导致一系列慢查询。 导致实例流控。 对大Key高频率的读会使得实例出方向带宽被打满,导致流控,产生大量命令超时或者慢查询,业务受损。 导致主备倒换。 对大Key执行危险的DEL操作可能会导致主节点长时间阻塞,从而导致主备倒换。 热Key 容易造成集群分片不均的情况。 造成热Key所在的分片有大量业务访问而同时其他的分片压力较低。这样不仅会容易产生单分片性能瓶颈,还会浪费其他分片的计算资源。 使得CPU冲高。 对热Key的大量操作可能会使得CPU冲高,如果表现在集群单分片中就可以明显地看到热Key所在的分片CPU使用率较高。这样会导致其他请求受到影响,产生慢查询,同时影响整体性能。业务量突增场景下甚至会导致主备切换。 易造成缓存击穿。 热Key的请求压力过大,超出Redis的承受能力易造成缓存击穿,即大量请求将被直接指向后端的数据库,导致数据库访问量激增甚至宕机,从而影响其他业务。 对于如何避免产生大Key和热Key,需要在业务设计阶段就考虑。参考Redis使用规范。
  • 方案概述 当前,华为云DCS的Redis 4.0及以上版本不支持绑定弹性IP,无法直接通过公网访问。 本章节主要介绍通过跳板机访问VPC内Redis 4.0/5.0/6.0单机、主备、读写分离、Proxy集群实例的操作,Cluster集群实例暂不支持使用该方案进行公网访问。 图1中安装了Nginx代理工具的ECS就是一台跳板机,它与DCS Redis实例在相同VPC,可通过子网IP访问Redis实例;为ECS绑定弹性IP后,公网可以访问ECS;Nginx支持监听多个端口,并将请求内容转发到不同的后端Redis实例。 图1 通过Nginx访问VPC内DCS Redis 不建议在生产环境中使用公网访问的方式,对于因公网网络性能造成的客户端访问异常不计入SLA。
  • 配置Nginx Nginx安装后,需要配置请求转发规则,告诉Nginx哪个端口收到的请求,应该转发到后端哪个Redis实例。 打开并修改配置文件。 cd /etc/nginxvi nginx.conf 配置示例如下,如果有多个redis实例需要公网连接,可以配置多个server,在proxy_pass中配置Redis实例连接地址。 stream { server { listen 8080; proxy_pass 192.168.0.5:6379; } server { listen 8081; proxy_pass 192.168.0.6:6379; }} proxy_pass参数配置值为同一vpc下的Redis实例的IP地址,具体可从缓存实例详情页面的“连接信息”区域获取。 图4 Nginx配置信息的输入位置 重启Nginx服务。 service nginx restart 验证启动是否成功。 netstat -an|grep 808 图5 启动Nginx及验证 8080和8081两个端口都在监听状态,Nginx启动成功。
  • 安装Nginx 购买ECS后,需要在ECS上安装Nginx,本文以ECS操作系统为Centos7.x为例进行安装,不同操作系统命令稍有不同。 执行以下命令,添加Nginx到yum源。 sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 添加完之后,执行以下命令,查看是否已经添加成功。 yum search nginx 添加成功之后,执行以下命令,安装Nginx。 sudo yum install -y nginx 执行以下命令安装stream模块。 yum install nginx-mod-stream --skip-broken 启动Nginx并设置为开机自动运行。 sudo systemctl start nginx.servicesudo systemctl enable nginx.service 在本地浏览器中输入服务器地址(ECS公网IP地址),查看安装是否成功。 如果出现下面页面,则表示安装成功。
  • (可选)长连接场景 如果用户公网访问时需要使用长连接,那么需要在如上配置Nginx中增加以下配置: Nginx到后端server的超时时间 stream { server { listen 8080; proxy_pass 192.168.0.5:6379; proxy_socket_keepalive on; proxy_timeout 60m; proxy_connect_timeout 60s; } server { listen 8081; proxy_pass 192.168.0.6:6379; proxy_socket_keepalive on; proxy_timeout 60m; proxy_connect_timeout 60s; }} proxy_timeout 默认值是10m(10分钟),可以根据用户需要设为60m或其他值。Nginx官网 proxy_timeout说明 客户端到Nginx的超时时间 http { keepalive_timeout 3600s;} keepalive_timeout 默认值是75s,可以根据用户需要设为3600s或其他值。Nginx官网 keepalive_timeout 说明
  • 通过Nginx访问Redis 登录ECS控制台,确认跳板机的安全组规则是否放开,如果没有,则需要为安全组放开8080和8081两个端口。 单击ECS实例名称,进入ECS详情页面。 选择“安全组”页签,单击“配置规则”,可进入安全组配置页面。 图6 进入ECS安全组 图7 添加安全组入方向规则 在公网环境中打开Redis命令行界面,输入如下命令,登录与查询都正常。 公网环境已参考Redis-cli连接中相关步骤,安装Redis-cli客户端。 ./redis-cli -h {myeip} -p {port} -a {mypassword} 其中,命令中的{myeip}为主机连接地址,需要填写ECS的弹性IP,端口需要填写ECS上Nginx的监听端口。 如下图所示,设置的2个监听端口分别为8080和8081,对应后端2个Redis实例。 图8 通过Nginx代理连接第一个Redis实例 图9 通过Nginx代理连接第二个Redis实例
  • 方案概述 应用场景 随着互联网等数据库应用行业的逐渐发展,业务需求急速增加,数据量和并发访问量呈指数级增长,仅依附于传统关系型数据库难以支撑上层业务。传统数据库存在结构复杂、维护成本高、访问性能差、功能有限、无法轻松适应数据模型或模式的变化等问题。 解决方案 将Redis作为应用与数据库之间的缓存层可以解决上述问题,通过Redis缓存数据,提高数据读取速度,减轻数据库负载,提高应用性能,保证数据的可靠性。 因此,对于传统的关系型数据库例如MySQL,可以将其数据迁移到Redis中。Redis中的数据是以键值结构进行存储的,在迁移前需要将传统的数据库转换为特定的结构。本文以将MySQL数据库中的一张表迁移到华为云DCS Redis中为例,介绍数据迁移的过程。
  • 前提条件 已创建DCS Redis实例,作为迁移的目的数据库。请参考创建DCS Redis缓存实例。 如果您的源端是华为云的MySQL数据库,Redis实例请选择与MySQL数据库实例相同的VPC。 已有MySQL数据库,并在其中创建一张表,作为源端数据库中的数据。 例如,在MySQL数据库中创建一张名为student_info的表格,表中共有4列,迁移后表中的id列的值将成为Redis中的hash的key,其余的列名将成为hash的field,而列的值作为field对应的value。 MySQL数据库所在服务器与DCS缓存实例网络互通。 MySQL数据库与Redis实例所在VPC为同一VPC 同一VPC内网络默认互通。 MySQL数据库与Redis实例所在VPC为相同region下的不同VPC 如果MySQL数据库所在VPC与Redis实例不在相同VPC中,可以通过建立VPC对等连接方式连通网络,具体请参考:缓存实例是否支持跨VPC访问?。 MySQL数据库与Redis实例所在VPC不在相同region 如果MySQL数据库和Redis实例不在同一region,仅支持通过云专线打通网络,请参考云专线。 公网访问 MySQL数据库所在服务器公网访问Redis 4.0/5.0/6.0实例时,需要开启实例公网访问开关,具体请参考开启Redis 4.0/5.0/6.0公网访问并获取公网访问地址。 MySQL数据库所在服务器已安装JDK1.8以上版本和Intellij IDEA开发工具,下载jedis客户端(点此处下载jar包)。 本文档下载的开发工具和客户端仅为示例,您可以选择其它类型的工具和客户端。
  • 前提条件 已创建DCS缓存实例,且状态为“运行中”。 客户端所在服务器与DCS缓存实例网络互通: 客户端与Redis实例所在VPC为同一VPC 同一VPC内网络默认互通。 客户端与Redis实例所在VPC为相同region下的不同VPC 如果客户端与Redis实例不在相同VPC中,可以通过建立VPC对等连接方式连通网络,具体请参考:缓存实例是否支持跨VPC访问?。 客户端与Redis实例所在VPC不在相同region 如果客户端服务器和Redis实例不在同一region,仅支持通过云专线打通网络,请参考云专线。 公网访问 客户端公网访问Redis 4.0/5.0/6.0实例时,需要开启实例公网访问开关,具体请参考开启Redis 4.0/5.0/6.0公网访问并获取公网访问地址。
  • 实施步骤 使用Redis-py库中的Redis()方法在每个游戏服务器上创建一个Redis客户端连接。 使用pubsub()方法在每个游戏服务器上创建一个Redis订阅者和发布者。用于订阅其他游戏服务器发布的消息,以及发布本地游戏服务器的数据更新消息。当某个游戏服务器需要更新数据时,它会将更新的消息发布到Redis消息队列中。其他游戏服务器会收到更新消息并相应地更新各自的本地数据。 定义一个publish_update()方法发布更新消息,并在listen_updates()方法中使用subscriber.listen()方法来监听更新消息。 当收到更新消息时,通过调用handle_update()方法来处理更新消息并更新本地数据。在游戏服务器中,通过调用publish_update()来发布更新消息,以及调用listen_updates()来监听更新消息。
  • 方案概述 应用场景 游戏业务开合服,指一些大型网络游戏为了吸引新玩家,在运营一段时间后,会开启新服务区,当新服务区开放后,老服务区用户存在流向新服务区的趋势,用户数逐渐减少,为了改善老服务区用户的游戏体验,延长游戏生命周期,游戏开发商通常会进行新老服务区合并,将新开和原有的两个服务器(区)的数据合并到一个服务器(区),使新老玩家就能在同一个区进行游戏。在这个过程中,会遇到如何将不同服务器数据同步的相关问题。 解决方案 在游戏开合服方面,使用分布式缓存服务(DCS)的Redis缓存可以应用到以下场景: 跨服数据同步 游戏合服后,需要将多个游戏服务器的数据进行同步,以保证游戏数据的一致性。可以使用Redis的消息队列pub/sub机制,将数据变更消息发布到Redis的频道中,其他游戏服务器订阅该频道,接收数据变更消息,从而实现数据同步。 跨服资源共享 游戏合服后,可以将多个游戏服务器的资源进行共享,例如玩家道具、金币等。可以使用Redis的分布式锁机制,来保证多个游戏服务器对资源的访问互斥,避免资源冲突。 跨服排行榜 游戏合服后,可以将多个游戏服务器的排行榜进行合并,以展示全服的排名情况。可以使用Redis的有序集合机制,来存储排行榜数据,并进行排名计算和查询。 在以上三种应用场景中,“跨服资源共享”的实现方式可以参考使用DCS实现热点资源顺序访问,“跨服排行榜”的实现方式可以参考使用DCS实现排行榜功能。 本篇文档主要介绍如何通过Redis的消息队列pub/sub机制,实现“跨服数据同步”。 在使用Redis进行游戏合服方面的应用时,需要考虑数据一致性、性能和安全等方面的问题,避免出现数据错误、性能瓶颈或者安全漏洞等问题。
  • 方案概述 应用场景 在传统单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLock或synchronized)进行互斥控制。这种Java提供的原生锁机制可以保证在同一个Java虚拟机进程内的多个线程同步执行,避免出现无序现象。 但在互联网场景,例如在商品秒杀过程中,随着客户业务量上升,整个系统并发飙升,需要多台机器并发运行。例如当两个用户同时发起的请求分别落在两个不同的机器上时,虽然这两个请求可以同时执行,但是因为两个机器运行在两个不同的Java虚拟机中,因此每个机器加的锁不是同一个锁,而不同的锁只对属于自己Java虚拟机中的线程有效,对其他Java虚拟机的线程无效。此时,Java提供的原生锁机制在多机部署场景下就会失效,出现库存超卖的现象。 解决方案 基于上述场景,需要保证两台机器加的锁是同一个锁,用加锁的方式对某种资源进行顺序访问控制。这就需要分布式锁登场了。 分布式锁的思路是:在整个系统提供一个全局的、唯一的分配锁的“东西”,当每个系统需要加锁时,都向其获取一把锁,使不同的系统获取到的内容可以认为是同一把锁。 当前分布式加锁主要有三种方式:(磁盘)数据库、缓存数据库、Zookeeper。 使用DCS服务中Redis缓存实例实现分布式加锁,有几大优势: 加锁操作简单,使用SET、GET、DEL等几条简单命令即可实现锁的获取和释放。 性能优越,缓存数据的读写优于磁盘数据库与Zookeeper。 可靠性强,DCS有主备和集群实例类型,避免单点故障。 对分布式应用加锁,能够避免出现库存超卖及无序访问等现象。本实践介绍如何使用Redis对分布式应用加锁。
  • 前提条件 已创建DCS缓存实例,且状态为“运行中”。 客户端所在服务器与DCS缓存实例网络互通: 客户端与Redis实例所在VPC为同一VPC 同一VPC内网络默认互通。 客户端与Redis实例所在VPC为相同region下的不同VPC 如果客户端与Redis实例不在相同VPC中,可以通过建立VPC对等连接方式连通网络,具体请参考:缓存实例是否支持跨VPC访问?。 客户端与Redis实例所在VPC不在相同region 如果客户端服务器和Redis实例不在同一region,仅支持通过云专线打通网络,请参考云专线。 公网访问 客户端公网访问Redis 4.0/5.0/6.0实例时,需要开启实例公网访问开关,具体请参考开启Redis 4.0/5.0/6.0公网访问并获取公网访问地址。 客户端所在的服务器已安装JDK1.8以上版本和开发工具(本文档以安装Eclipse为例),下载jedis客户端(单击此处直接下载jar包)。 本文档下载的开发工具和客户端仅为示例,您可以选择其它类型的工具和客户端。
  • 实施步骤 在本地电脑中打开MobaXterm工具。 新建一个到ECS的SSH连接,使用22号端口。 图1 连接ECS SSH连接配置好后,输入登录用户和密码,连接上ECS。登录后输入TMOUT=0,避免连接超时自动关闭。 图2 输入TMOUT=0 在MobaXterm工具中找到MobaSSHtunnal,建立隧道。 图3 创建隧道 配置本地IP为127.0.0.1后,启动隧道。 图4 启动隧道 本地电脑打开Redis客户端,以Redis命令行界面为例。连接DCS缓存实例,命令如下: Redis-cli -h 127.0.0.1 -p 3306 -a {password} 参数说明: -h 主机名:localhost或者127.0.0.1,和隧道建立时配置的本地IP相同。 -p 端口号:3306,和隧道建立时配置的本地侦听端口相同。 -a 密码:DCS缓存实例连接密码。 连接成功,显示如下。 图5 连接实例
  • 方案概述 当前,华为云DCS的Redis 4.0及以上版本不支持绑定弹性IP,无法直接通过公网访问。本章节主要介绍通过ELB“跨VPC后端”方式公网访问单机、主备、读写分离、Proxy集群、Cluster集群单节点。 Cluster集群由于cluster nodes地址转换关系,只能进行单节点访问,无法进行集群访问。 不建议在生产环境中使用公网访问的方式,对于因公网网络性能造成的客户端访问异常不计入SLA。 通过ELB访问DCS流程如下图。 图1 ELB访问DCS流程图
  • 方案概述 分布式缓存服务Redis支持原生Redis的Pipeline(管道传输)机制,通过Pipeline机制可以将多个命令同时发给Redis服务端,减少网络延迟,提高性能。 通常在非Pipeline的模式下,Redis客户端(Client)向Redis发送一个命令后,会等待服务端(Server)返回结果,然后再发送下一个命令,以此类推。但在Pipeline模式下,客户端发送一个命令后无需等待服务端返回执行结果,会继续发送其他命令。在全部命令发送完毕后,客户端关闭请求,开始接收响应,把收到的执行结果与之前发送的命令按顺序进行匹配。 图1 非Pipeline模式与Pipeline模式的网络通信示意图 在Pipeline模式的具体实现中,大部分Redis客户端采用批量处理的方式,即一次发送多个命令,在接收完所有命令执行结果后再返回给上层业务。通过Pipeline模式可降低网络往返时延(Round-trip time,简称RTT),减少read()和write()的系统调用和进程切换次数,从而提升程序的执行效率与性能。 因此,在需要执行Redis批量操作,且用户无需立即获得每个操作结果的场景下,可以使用Pipeline作为优化性能的批处理工具。 使用Pipeline时客户端将独占与服务器端的连接,此期间将不能进行其他“非Pipeline”的操作,直至Pipeline被关闭。如果需要同时执行其他操作,可以为Pipeline操作单独建立一个连接,将其与常规非Pipeline操作分开。 关于Pipeline的更多介绍,请参见Redis pipeline。
  • 运行结果 编译并运行以上Demo程序,结果如下: 商品热销排行榜产品ID: product-b290c0d4-e919-4266-8eb5-7ab84b19862d, 销量: 18433产品ID: product-e61a0642-d34f-46f4-a720-ee35940a5e7f, 销量: 18334产品ID: product-ceeab7c3-69a7-4994-afc6-41b7bc463d44, 销量: 18196产品ID: product-f2bdc549-8b3e-4db1-8cd4-a2ddef4f5d97, 销量: 17870产品ID: product-f50ca2de-7fa4-45a3-bf32-23d34ac15a41, 销量: 17842产品ID: product-d0c364e0-66ec-48a8-9ac9-4fb58adfd033, 销量: 17782产品ID: product-5e406bbf-47c7-44a9-965e-e1e9b62ed1cc, 销量: 17093产品ID: product-0c4d31ee-bb15-4c88-b319-a69f74e3c493, 销量: 16432产品ID: product-a986e3a4-4023-4e00-8104-db97e459f958, 销量: 16380产品ID: product-a3ac9738-bed2-4a9c-b96a-d8511ae7f03a, 销量: 15305产品ID: product-6b8ad4b7-e134-480f-b3ae-3d35d242cb53, 销量: 14534产品ID: product-26a9b41b-96b1-4de0-932b-f78d95d55b2d, 销量: 11417产品ID: product-1f043255-a1f9-40a0-b48b-f40a81d07e0e, 销量: 10875产品ID: product-c8fee24c-d601-4e0e-9d18-046a65e59835, 销量: 10521产品ID: product-5869622b-1894-4702-b750-d76ff4b29163, 销量: 10271产品ID: product-ff0317d2-d7be-4021-9d25-1f997d622768, 销量: 9909产品ID: product-da254e81-6dec-4c76-928d-9a879a11ed8d, 销量: 9504产品ID: product-fa976c02-b175-4e82-b53a-8c0df96fe877, 销量: 8630产品ID: product-0624a180-4914-46b9-84d0-9dfbbdaa0da2, 销量: 8405产品ID: product-d0079955-eaea-47b2-845f-5ff05a110a70, 销量: 7930产品ID: product-a53145ef-1db9-4c4d-a029-9324e7f728fe, 销量: 7429产品ID: product-9b1a1fd1-7c3b-4ae8-9fd3-ab6a0bf71cae, 销量: 5944产品ID: product-cf894aee-c1cb-425e-a644-87ff06485eb7, 销量: 5252产品ID: product-8bd78ba8-f2c4-4e5e-b393-60aa738eceae, 销量: 4903产品ID: product-89b64402-c624-4cf1-8532-ae1b4ec4cabc, 销量: 4527产品ID: product-98b85168-9226-43d9-b3cf-ef84e1c3d75f, 销量: 3095产品ID: product-0dda314f-22a7-464b-ab8c-2f8f00823a39, 销量: 2425产品ID: product-de7eb085-9435-4924-b6fa-9e9fe552d5a7, 销量: 1694产品ID: product-9beadc07-aab0-438c-ac5e-bcc72b9d9c36, 销量: 1135产品ID: product-43834316-4aca-4fb2-8d2d-c768513015c5, 销量: 256 商品热销排行榜 前五大热销产品产品ID: product-b290c0d4-e919-4266-8eb5-7ab84b19862d, 销量: 18433产品ID: product-e61a0642-d34f-46f4-a720-ee35940a5e7f, 销量: 18334产品ID: product-ceeab7c3-69a7-4994-afc6-41b7bc463d44, 销量: 18196产品ID: product-f2bdc549-8b3e-4db1-8cd4-a2ddef4f5d97, 销量: 17870产品ID: product-f50ca2de-7fa4-45a3-bf32-23d34ac15a41, 销量: 17842
  • 约束与限制 Pipeline不能保证原子性。 Pipeline模式只是将客户端发送命令的方式改为批量发送命令,而服务端在批量处理命令的数据流时,仍然是解析出多个单命令并按顺序执行,各个命令相互独立,即服务端仍有可能在该过程中执行其他客户端的命令。如需保证原子性,请使用事务或Lua脚本。 若Pipeline执行过程中发生错误,不支持回滚。 Pipeline没有事务的特性,如待执行的命令前后存在依赖关系,请勿使用Pipeline。 如果某些客户端(例如redis-py)在实现Pipeline时使用事务命令MULTI、EXEC进行伪装,请您在使用过程中关注Pipeline与事务的区别,否则可能会产生报错,关于事务的限制请参见Redis transactions。
  • 方案概述 在网页和APP中经常需要用到榜单的功能,对某个key-value的列表进行降序显示。当操作和查询并发大的时候,使用传统数据库就会遇到性能瓶颈,造成较大的时延。 使用分布式缓存服务(DCS)的Redis版本,可以实现一个商品热销排行榜的功能。它的优势在于: 数据保存在内存中,读写速度非常快。 提供字符串(String)、链表(List)、集合(Set)、哈希(Hash)等多种数据结构类型的存储。
  • 前提条件 已创建DCS缓存实例,且状态为“运行中”。 客户端所在服务器与DCS缓存实例网络互通: 客户端与Redis实例所在VPC为同一VPC 同一VPC内网络默认互通。 客户端与Redis实例所在VPC为相同region下的不同VPC 如果客户端与Redis实例不在相同VPC中,可以通过建立VPC对等连接方式连通网络,具体请参考:缓存实例是否支持跨VPC访问?。 客户端与Redis实例所在VPC不在相同region 如果客户端服务器和Redis实例不在同一region,仅支持通过云专线打通网络,请参考云专线。 公网访问 客户端公网访问Redis 4.0/5.0/6.0实例时,需要开启实例公网访问开关,具体请参考开启Redis 4.0/5.0/6.0公网访问并获取公网访问地址。 客户端所在的服务器已安装JDK1.8以上版本和开发工具(本文档以安装Eclipse为例),下载jedis客户端(单击此处直接下载jar包)。 本文档下载的开发工具和客户端仅为示例,您可以选择其它类型的工具和客户端。
  • 方案概述 当前,华为云DCS的Redis 4.0及以上版本不支持绑定弹性IP,无法直接通过公网访问。 本章节主要介绍通过SSH工具的隧道代理机制,通过一台既能连接DCS缓存实例,又能被本地电脑访问的中转服务器,实现“代理转发”,从而访问VPC内Redis 4.0/5.0/6.0单机、主备、读写分离、Proxy集群实例。Cluster集群实例暂不支持使用该方案进行公网访问。 不建议在生产环境中使用公网访问的方式,对于因公网网络性能造成的客户端访问异常不计入SLA。
  • 为什么部分已签发的SSL证书不能自动续费? 问题:在CCM的管理控制台上,已经签发的SSL证书,为什么有些支持自动续费,有些不支持自动续费? 图1 自动续费按钮 原因: CCM提供的多年期SSL证书实际为多张有效期为1年的SSL证书依次生效。2年期的证书,在第一张证书到期前30天,系统自动以您第一张证书的信息为您申请第二张证书;3年期的证书,分别在第一张和第二张证书到期前30天,系统自动以您第一张证书的信息为您申请下一张证书。系统为您申请证书时,需要您配合CA机构完成 域名 验证或组织验证,才能完成证书签发。 从“证书类型”列,可以看到未显示“自动续费”按钮的证书为多年期SSL证书,多年期SSL证书仅当签发到多年期的最后一张证书时,才支持自动续费;在此之前的证书到期后,系统会为您自动申请,因此不显示自动续费。 父主题: 计费、续费与退订
  • 服务韧性 华为云数据中心按规则部署在全球各地,所有数据中心都处于正常运营状态,无一闲置。数据中心互为灾备中心,如一地出现故障,系统在满足合规政策前提下自动将客户应用和数据转离受影响区域,保证业务的连续性。为了减少由硬件故障、自然灾害或其它灾难带来的服务中断,华为云为所有数据中心提供灾难恢复计划。 当发生故障时,CFW的五级可靠性架构支持不同层级的可靠性,因此具有更高的可用性、容错性和可扩展性。 华为云CFW已面向全球用户服务,并在多个分区部署,同时CFW的所有管理面、引擎等组件均采用主备或集群方式部署。分区部署详情参见地区和终端节点。 父主题: 安全
  • 责任共担 华为云秉承“将公司对网络和业务安全性保障的责任置于公司的商业利益之上”。针对层出不穷的 云安全 挑战和无孔不入的云安全威胁与攻击,华为云在遵从法律法规业界标准的基础上,以安全生态圈为护城河,依托华为独有的软硬件优势,构建面向不同区域和行业的完善云服务安全保障体系。 安全性是华为云与您的共同责任,如图1所示。 华为云:负责云服务自身的安全,提供安全的云。华为云的安全责任在于保障其所提供的IaaS、PaaS和SaaS类云服务自身的安全,涵盖华为云数据中心的物理环境设施和运行其上的基础服务、平台服务、应用服务等。这不仅包括华为云基础设施和各项云服务技术的安全功能和性能本身,也包括运维运营安全,以及更广义的安全合规遵从。 租户:负责云服务内部的安全,安全地使用云。华为云租户的安全责任在于对使用的IaaS、PaaS和SaaS类云服务内部的安全以及对租户定制配置进行安全有效的管理,包括但不限于虚拟网络、 虚拟主机 和访客虚拟机的操作系统,虚拟防火墙、API网关和高级安全服务,各项云服务,租户数据,以及身份账号和密钥管理等方面的安全配置。 《华为云安全白皮书》详细介绍华为云安全性的构建思路与措施,包括云安全战略、责任共担模型、合规与隐私、安全组织与人员、基础设施安全、租户服务与租户安全、工程安全、运维运营安全、生态安全。 图1 华为云安全责任共担模型 父主题: 安全
  • Web应用防火墙 的主要区别 云防火墙 和Web应用防火墙是华为云推出的两款不同的产品,为您的互联网边界和VPC边界、Web服务提供防护。 CFW和WAF的主要区别说明如表1所示。 表1 CFW和WAF的主要区别说明 类别 云防火墙 Web应用防火墙 定义 云防火墙(Cloud Firewall,CFW)是新一代的云原生防火墙,提供云上互联网边界和VPC边界的防护,包括实时入侵检测与防御、全局统一访问控制、全流量分析可视化、日志审计与溯源分析等,同时支持按需弹性扩容、AI提升智能防御能力、灵活扩展满足云上业务的变化和扩张需求,极简应用让用户快速灵活应对威胁。云防火墙服务是为用户业务上云提供网络安全防护的基础服务。 Web应用防火墙(Web Application Firewall,WAF),通过对HTTP(S)请求进行检测,识别并阻断SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等攻击,保护Web服务安全稳定。 有关Web应用防火墙的详细介绍,请参见什么是Web应用防火墙。 防护对象 弹性公网IP和VPC边界。 支持对Web攻击的基础防护。 支持外部入侵和主动外联的流量防护。 针对域名或IP,华为云、非华为云或云下的Web业务。 支持对Web攻击的全面防护。 功能特性 资产管理与入侵防御:对已开放公网访问的服务资产进行安全盘点,进行实时入侵检测与防御。 访问控制:支持互联网边界访问流量的访问控制。 流量分析与日志审计:VPC间流量全局统一访问控制,全流量分析可视化,日志审计与溯源分析。 SQL注入、跨站脚本攻击、网页木马上传、命令/代码注入、文件包含、敏感文件访问、第三方应用漏洞攻击、CC攻击、恶意爬虫扫描、跨站请求伪造等攻击防护。
  • 审计与日志 日志审计是保证云防火墙可靠性、可用性和性能的重要组成部分。用户可以汇总华为云服务的操作日志并进行分析、审计、资源监控和问题定位。 CFW已对接 云审计 服务(Cloud Trace Service, CTS )。华为云云审计服务提供对各种云资源操作记录的收集、存储和查询功能,可用于支撑安全分析、合规审计、资源跟踪和问题定位等常见应用场景。 CTS的详细介绍和使用方法,请参见CTS快速入门。 父主题: 安全
  • 数据保护技术 CFW通过多种数据保护手段和特性,保证通过CFW的数据安全可靠。 表1 CFW的数据保护手段和特性 数据保护手段 简要说明 静态数据保护 CFW通过敏感 数据加密 保证用户流量中敏感数据的安全性。 传输中的数据保护 微服务间管理数据传输进行加密,防止数据在传输过程中泄露或被篡改。用户的配置数据传输采用安全协议HTTPS,防止数据被窃取。 数据完整性校验 CFW进程启动时,配置数据从配置中心获取而非直接读取本地文件。 数据隔离机制 租户区与管理面隔离,租户的所有操作权限隔离,不同租户间的策略、日志等数据隔离。 数据销毁机制 考虑到残留数据导致的信息泄露问题,华为云根据客户等级设定了不同的保留期时长,保留期到期仍未续订或充值,存储在云服务中的数据将被删除,云服务资源将被释放。CFW对云服务自动感知并在保留期到期后释放资源。 同时,CFW服务充分尊重用户隐私,遵循法律法规。以入侵防护功能为例,CFW仅会对流量进行威胁签名匹配检测和异常行为检测,不会采集和存储任何用户隐私数据。 更多隐私数据使用和保护问题,请参考隐私政策声明。 父主题: 安全
  • CFW ReadOnlyAccess策略内容 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435 { "Version": "1.1", "Statement": [ { "Action": [ "cfw:*:list", "cfw:*:get", "vpc:publicIps:list", "vpc:publicipTags:get", "vpc:vpcs:list", "vpc:vpcs:get", "vpc:subnets:get", "vpc:routeTables:list", "vpc:quotas:list", "er:instances:list", "er:attachments:list", "er:routeTables:list", "er:routeTables:list", "er:routes:list", "er:associations:list", "er:instances:get", "ecs:cloudServers:list", "ecs:availabilityZones:list", "smn:topic:list", "nat:natGateways:list", "lts:groups:list", "lts:topics:get", "dcaas:vgw:list", "eps:resources:list", "tms:predefineTags:list" ], "Effect": "Allow" } ]}
  • CFW权限 默认情况下,管理员创建的 IAM 用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 CFW部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域对应的项目中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问CFW时,需要先切换至授权区域。 根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其它角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对CFW服务,管理员能够控制IAM用户仅能对某一类云服务器资源进行指定的管理操作。 如表1所示,包括了CFW下所有的系统角色。 表1 CFW系统角色 角色名称 描述 类别 依赖关系 CFW FullAccess 云防火墙服务的所有权限。 系统策略 无 CFW ReadOnlyAccess 云防火墙服务的只读权限。 系统策略 无
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全