云服务器内容精选

  • Redis实例支持的持久化方式 Redis实例默认仅支持AOF的方式进行持久化,同时支持客户自行开关数据持久化配置。创建的实例(单机或单副本集群除外)默认开启AOF持久化。 Redis实例默认不支持RDB持久化,因此也无法支持客户自行配置save参数。如果需要进行RDB持久化,可以使用主备或者集群实例的备份恢复功能,备份恢复时,Redis 4.0及以上版本实例,可以支持选择生成RDB持久化文件并且自动转储到OBS中。
  • Redis实例是否支持开启主节点不持久化,仅从节点持久化 DCS Redis 4.0/5.0/6.0基础版的主备和集群实例、企业版高性能型主备实例,可以通过将实例参数appendonly设置为only-replica,开启实例仅从节点持久化。 其他版本和实例类型暂不支持该特性。 appendonly参数默认只有yes和no两个选项,如需设置为only-replica,需要联系运维人员放通该参数的白名单。 仅从节点持久化相对与主从节点同时持久化,因主节点减少了AOF写入和重写的影响,性能会有所提升,但可靠性会有所降低,请根据实际业务情况选择。
  • 开启/关闭AOF持久化的影响 开启AOF持久化后,由于Redis-Server进程需要在AOF文件中记录对应的操作信息,用来进行数据持久化。开启持久化可能存在的影响: 当出现底层计算节点磁盘硬件故障或者IO故障时,可能会造成时延冲高或者主备倒换等情况发生。 Redis-Server进程会定期进行AOF重写操作,重写期间可能会造成短暂的时延冲高,AOF重写规则请参考AOF文件在什么情况下会被重写?。 如果在缓存场景下使用DCS实例进行应用加速,建议可以关闭持久化参数以获得更高的性能和稳定性。 关闭持久化需根据实际业务慎重操作,关闭持久化后在极端故障场景(例如主备节点同时故障等)下可能出现缓存数据丢失的问题。 关闭操作:在实例详情的配置参数中将appendonly参数修改为no即可关闭AOF持久化。
  • 不同实例类型的副本和分片数 单机实例:单机实例只有1个节点,1个Redis进程,当Redis进程故障后,DCS为实例重新拉起一个新的Redis进程。 主备/读写分离实例:分片数为1,包含一个主节点,一个或多个备节点。当主节点出现故障时,会进行主备倒换,恢复业务。副本数(备节点)越多,保障性更强,对实例的性能没有影响。 集群实例:集群实例由多个分片组成,每个分片默认是一个双副本的主备实例。例如一个3分片,3副本的集群实例,则每个分片都有3个节点(1个主节点,2个备节点)。 实例类型 分片数 副本数 负载均衡 占用IP数 单机 单分片 单副本,不支持多副本 - 1个 主备 单分片 默认双副本 Redis 4.0/5.0版本主备实例支持2-10副本,其他版本仅支持2副本 不支持 占用IP个数=副本数 读写分离 单分片 默认双副本,支持2-6副本 支持 1个 Proxy集群 多分片 双副本,不支持其他副本数 支持 1个 Cluster集群 多分片 默认双副本 Redis 4.0/5.0版本Cluster集群支持1-5副本,Redis 6.0版本支持1-2副本 不支持 占用IP个数=副本数*分片数
  • DCS实例的CPU规格是怎么样的 Redis基础版: 使用DCS Redis基础版实例的用户无需关心CPU规格的指标,仅需关心QPS,带宽,内存大小等核心指标。 Redis基础版的实例基于开源Redis构造,开源Redis使用单个主线程处理命令,只能利用一个核的CPU,因此,只需认为单个Redis节点仅使用1核CPU即可。提升基础版Redis实例的内存大小,CPU规格不变。 Redis基础版由于社区版单线程处理模型的限制,如需增加实例CPU处理性能,请使用集群类型的Redis实例,通过增加分片的方式,来增加整个集群的处理性能。集群实例每个节点默认分配1核CPU进行处理。 Redis企业版: DCS Redis企业版为多线程版本,企业版Redis线程数请参考表1。企业版Redis的CPU最大使用率=线程数x100%,例如线程数为3的企业版Redis,最大CPU使用率为300%。 表1 企业版Redis线程数 实例内存规格 线程数(企业版高性能型主备实例) 线程数(企业版存储型主备实例) 8 GB 3 3 16 GB 4 6 32 GB 4 7 64 GB 4 - 父主题: 实例特性
  • URI GET /v2/{project_id}/apigw/instances/{instance_id}/instance-features 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID,获取方式请参见获取项目ID。 instance_id 是 String 实例ID,在API网关控制台的“实例信息”中获取。 表2 Query参数 参数 是否必选 参数类型 描述 offset 否 Long 偏移量,表示从此偏移量开始查询,偏移量小于0时,自动转换为0 缺省值:0 limit 否 Integer 每页显示的条目数量,条目数量小于等于0时,自动转换为20,条目数量大于500时,自动转换为500 最小值:1 最大值:500 缺省值:20
  • 响应示例 状态码: 200 OK { "total" : 3, "size" : 3, "features" : [ "health_check_in_instance_etcd", "shubao_support_add_node", "resize_huge_flavor" ] } 状态码: 401 Unauthorized { "error_code" : "APIC.7102", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIC.7106", "error_msg" : "No permissions to request for the method" } 状态码: 500 Internal Server Error { "error_code" : "APIC.9000", "error_msg" : "Failed to request internal service" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 size Integer 本次返回的列表长度 total Long 满足条件的记录数 features Array of strings 实例支持的特性列表: "resize_huge_flavor" "health_check_in_instance_etcd" "shubao_support_add_node" "upgrade_uninterrupted" "sm_cipher_type" 与实例版本有关,列表中不展示的特性为实例不支持的特性 状态码: 401 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 响应示例 状态码: 201 Created { "config" : "on", "enable" : true, "id" : "db9a9260cd3e4a16a9b5747a65d3ffaa", "instance_id" : "eddc4d25480b4cd6b512f270a1b8b341", "name" : "app_api_key", "update_time" : "2020-08-24T01:17:31.041984021Z" } 状态码: 400 Bad Request { "error_code" : "APIG.2000", "error_msg" : "unrecognized feature app-api-key" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3030", "error_msg" : "The instance does not exist;id:eddc4d25480b4cd6b512f270a1b8b341" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 特性名称 最小长度:1 最大长度:64 enable 是 Boolean 是否开启特性 config 否 String 特性参数配置
  • 响应参数 状态码: 201 表4 响应Body参数 参数 参数类型 描述 id String 特性编号 name String 特性名称 最小长度:1 最大长度:64 enable Boolean 是否开启特性 config String 特性参数配置 instance_id String 实例编号 update_time String 实例特性更新时间 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 特性名称 最小长度:1 最大长度:64 enable 是 Boolean 是否开启特性 config 否 String 特性参数配置
  • 响应示例 状态码: 201 Created { "config" : "on", "enable" : true, "id" : "db9a9260cd3e4a16a9b5747a65d3ffaa", "instance_id" : "f0fa1789-3b76-433b-a787-9892951c620e", "name" : "app_api_key", "update_time" : "2020-08-24T01:17:31.041984021Z" } 状态码: 400 Bad Request { "error_code" : "APIG.2000", "error_msg" : "unrecognized feature app-api-key" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3030", "error_msg" : "The instance does not exist;id:f0fa1789-3b76-433b-a787-9892951c620e" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }
  • 响应参数 状态码: 201 表4 响应Body参数 参数 参数类型 描述 id String 特性编号 name String 特性名称 最小长度:1 最大长度:64 enable Boolean 是否开启特性 config String 特性参数配置 instance_id String 实例编号 update_time String 实例特性更新时间 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 401 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 403 表7 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 404 表8 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述 状态码: 500 表9 响应Body参数 参数 参数类型 描述 error_code String 错误码 error_msg String 错误描述
  • 响应示例 状态码: 200 OK { "total" : 1, "size" : 1, "features" : [ { "config" : "on", "enable" : true, "id" : "db9a9260cd3e4a16a9b5747a65d3ffaa", "instance_id" : "f0fa1789-3b76-433b-a787-9892951c620e", "name" : "app_api_key", "update_time" : "2020-08-24T01:17:31.041984Z" } ] } 状态码: 400 Bad Request { "error_code" : "APIG.2012", "error_msg" : "Invalid parameter value,parameterName:instance_id. Please refer to the support documentation" } 状态码: 401 Unauthorized { "error_code" : "APIG.1002", "error_msg" : "Incorrect token or token resolution failed" } 状态码: 403 Forbidden { "error_code" : "APIG.1005", "error_msg" : "No permissions to request this method" } 状态码: 404 Not Found { "error_code" : "APIG.3030", "error_msg" : "The instance does not exist;id:f0fa1789-3b76-433b-a787-9892951c620e" } 状态码: 500 Internal Server Error { "error_code" : "APIG.9999", "error_msg" : "System error" }