华为云用户手册

  • Windows操作系统使用须知 不要结束系统进程,结束系统进程可能会导致服务器发生蓝屏、重启。 建议您预留2G以上的内存,否则在使用过程中可能会出现蓝屏、卡顿、服务无法正常运行等情况。 不建议修改注册表,修改注册表可能会导致系统启动失败。如果一定要修改,请在修改前备份注册表。 不建议修改服务器时钟,修改服务器时钟可能会使DHCP租约失效进而导致IP丢失。 不建议删除重置密码进程“CloudResetPwdAgent”和“CloudResetPwdUpdateAgent”,否则会导致一键重置密码功能不可用。 不建议关闭虚拟内存,关闭虚拟内存可能会使系统性能降低或运行异常。 不要删除VMTool程序,会导致云服务器运行异常。
  • Linux操作系统使用须知 不要修改“/etc/issue”文件内容,否则可能导致系统发行版本无法被识别。 不要删除系统目录或文件,否则可能导致系统无法正常运行或启动。 不要修改系统目录的权限或名称,否则可能导致系统无法正常运行或启动。 请勿随意升级Linux操作系统的内核。 不建议删除重置密码进程“CloudResetPwdAgent”和“CloudResetPwdUpdateAgent”,否则会导致一键重置密码功能不可用。 不建议修改系统默认DNS SERVER(“/etc/resolv.conf”),否则可能会导致软件源、NTP等内部服务无法使用。 不建议修改主机默认的内网网络配置信息(IP、子网掩码及网关地址),否则可能会导致网络异常。
  • 场景须知 禁止使用云耀云服务器搭建赌博、私服、跨境VPN等违法违规业务。 禁止使用云耀云服务器对电商网站开展刷单、刷广告等虚假交易操作。 禁止利用云耀云服务器对外部系统发起网络攻击,如:DDoS攻击、CC攻击,Web攻击,暴力破解,传播病毒、木马等。 禁止使用云耀云服务器提供流量穿透服务。 禁止利用云耀云服务器搭建爬虫环境,对外部系统发起爬虫搜索。 未经外部系统主体授权,禁止利用云耀云服务器对外部系统发起扫描、渗透等探测行为。 禁止在云耀云服务器上部署任何违法违规网站和应用。
  • 通用使用须知 请勿卸载云服务器硬件的驱动程序。 请勿修改网卡的MAC地址。 部分软件的鉴权模式可能会导致License与物理机的硬件信息绑定,云服务器的迁移操作可能会引起物理信息变更进而导致License失效。 由于物理机故障导致云服务器发生迁移,迁移时可能会出现重启或关机现象,建议您在系统业务进程配置自动拉起和开机自启动,或者通过业务集群部署、主备部署等方式实现业务的高可用。 建议您为部署核心关键业务的云服务器做好数据备份。 建议您为云服务器上的应用业务指标做好监控配置。 不建议您修改默认的DNS,如您有公网DNS配置需求,可以在云服务器上配置公网DNS和内网DNS。
  • 解决方法 登录云耀云服务器控制台。 单击“X实例”、“L实例”或“HECS(旧版)”页签进入对应的云耀服务器控制台。 您可在对应页签中查看到具体的服务器资源。 L实例控制台为您展示所有区域的服务器资源。 X实例控制台为您展示单个区域的服务器资源,请切换区域查找X实例。 旧版HECS控制台在服务器的列表页上方,为您统计了云耀云服务器的资源分布信息,请切换至正确的区域查找资源。 在控制台收藏“云耀云服务器”,以便管理云耀云服务器资源。 在控制台首页单击。 单击收藏按钮收藏“云耀云服务器 HECS”。 图1 添加云耀云服务器 添加完成后可在控制台“服务列表”管理您收藏的服务。 图2 管理收藏的服务云耀云服务器资源
  • 修订记录 发布日期 修订记录 2024-05-31 第十六次正式发布。 新增 L实例有公网IP吗? X实例的处理器以及基频睿频是什么? 修改 云耀云服务器L实例有哪些套餐类型?,补充弹性公网IP信息。 2024-04-15 第十五次正式发布。 新增 云耀数据库 什么是云耀数据库? 云耀数据库可以与标准数据库相互访问吗? 云耀数据库怎么扩CPU/内存规格? 云耀数据库支持跨AZ高可用吗? 云耀数据库的备份策略是什么? 云耀数据库的备份是如何收费的? 如何下载备份文件,在本地进行恢复? root账号为什么没有super权限? 云耀数据库提供什么引擎? 为什么云耀数据库不支持MyISAM引擎? 云耀数据库支持只读实例吗? 开通实例以后如何创建账号和数据库? 云耀数据库支持哪些版本,对应的小版本是多少? 为什么没有提供按需的实例计费模式? 云耀数据库是否支持磁盘扩容? 2024-04-10 第十四次正式发布。 新增 云硬盘FAQ 2024-01-02 第十三次正式发布。 新增 私有镜像未安装重置密码插件或缺少onekey_resetpasswd特性标签,无法使用镜像创建/切换L实例怎么办? 2023-12-26 第十二次正式发布。 新增 忘记云服务器用户名密码怎么办? 使用Linux私有镜像创建/切换L实例后,无法重置密码怎么办?(遗忘私有镜像初始密码) 使用Linux私有镜像创建/切换L实例后,无法重置密码怎么办?(已知私有镜像初始密码) 2023-12-20 第十一次正式发布。 新增 云耀云服务器L实例和云耀云服务器是什么关系? 云耀云服务器L实例套餐有哪些? 云耀云服务器L实例支持升级vCPU/内存/系统盘容量/峰值带宽/流量包规格吗? 是否支持跨云迁移到云耀云服务器L实例? 没有购买云耀云服务器L实例的权限怎么办? 云耀云服务器L实例中的流量包如何使用? 2023-07-25 第十次正式发布。 新增控制台登录类常见问题。 新增云服务器资源冻结/释放/退订常见问题。 2022-11-21 第九次正式发布。 新增:如何释放“已过期”或“已冻结”云耀云服务器资源? 2022-10-27 第八次正式发布。 修改: 在管理控制台找不到我的云耀云服务器资源怎么办?,更新操作截图。 2021-09-02 第七次正式发布。 修改文件上传/数据传输,补充云服务器数据传输的方法。 2021-01-08 第六次正式发布。 新增重置Windows旧版HECS云服务器密码(未安装重置密码插件)。 新增重置Linux旧版HECS云服务器密码(未安装重置密码插件)。 2020-11-19 第五次正式发布。 修改无法登录到Windows云服务器怎么办?、无法登录到Linux云服务器怎么办?、弹性公网IP Ping不通?,补充排查思路截图。 修改Windows云服务器如何配置多用户登录?,补充操作视频链接。 2020-07-13 第四次正式发布。 修改无法登录到Windows云服务器怎么办?,补充检查SSH登录IP白名单的操作步骤,补充检防火墙配置的操作步骤。 修改无法登录到Linux云服务器怎么办?,补充检查SSH登录IP白名单的操作步骤,补充检防火墙配置的操作步骤。 修改Windows云服务器如何配置多用户登录?,补充常见问题“多用户登录后无法打开浏览器”的资料链接。 修改弹性公网IP Ping不通?,补充检查网络ACL的详细操作步骤。 2020-04-30 第三次正式发布。 新增TCP 25端口出方向无法访问时怎么办?。 2020-02-19 第二次正式发布。 新增4.1.10-云耀云服务器性能指标。 新增在管理控制台找不到我的云耀云服务器资源怎么办? 新增云耀云服务器X实例挂载磁盘时有什么限制? 2020-02-06 第一次正式发布。
  • 云耀云服务器L实例有哪些套餐类型? 云耀云服务器L实例包含以下两种套餐类型。 云耀云服务器L实例套餐:包含多种实例规格(包括vCPU/内存、系统盘、流量包)、一个弹性公网IP,并且可根据需要自定义选择数据盘、主机安全、云备份服务 ,具体规格详见表1。更多资源配置信息详见L实例资源配置。 云耀组合套餐:包含基础套餐和高可用套餐,具体规格详见表2。 云耀组合套餐为固定规格,包含实例规格(包括vCPU/内存、系统盘、流量包)、一个弹性公网IP,并且集成了必选的服务(包括云备份、主机安全、云耀负载均衡)。其中,仅高可用套餐支持云耀负载均衡。 表1 L实例预置实例规格 云主机vCPU/内存规格 系统盘容量/类型 峰值带宽 | 流量包 随实例购买的服务(可选) 2vCPUs | 2G 40 GiB 高IO 2 Mbps | 200 GB 支持随L实例购买的服务: 数据盘:通用型SSD V2 | 自定义容量 主机安全:基础版 云备份:服务器备份 | 自定义存储库容量 2vCPUs | 2G 40 GiB 高IO 3 Mbps | 400 GB 2vCPUs | 2G 50 GiB 高IO 4 Mbps | 600 GB 2vCPUs | 4G 50 GiB 高IO 3 Mbps | 400 GB 2vCPUs | 4G 70 GiB 高IO 5 Mbps | 1000 GB 2vCPUs | 4G 80 GiB 高IO 6 Mbps | 1200 GB 2vCPUs | 4G 100 GiB 高IO 8 Mbps | 1600 GB 2vCPUs | 8G 120 GiB 高IO 10 Mbps | 2000 GB 4vCPUs | 8G 180 GiB 高IO 6 Mbps | 1200 GB 4vCPUs | 16G 180 GiB 高IO 10 Mbps | 2000 GB 表2 L实例云耀服务组合套餐 类型 云主机vCPU/内存规格 系统盘容量/类型 峰值带宽 | 流量包 随实例购买的服务(必选) 云耀服务组合(基础套餐) 2vCPUs | 4G 70 GiB 高IO 5 Mbit/s | 1000 GB 云备份:服务器备份 | 存储库100 GB 主机安全:基础版 云耀服务组合(高可用套餐) 2vCPUs | 4G(2台) 70 GiB 高IO(2个) 2 Mbit/s | 100 GB 云备份:服务器备份 | 存储库100 GB 主机安全:基础版 云耀负载均衡:最大连接数 2000|每秒新建连接数 200 父主题: 高频问题
  • HECS L实例、HECS X实例、旧版HECS以及ECS有什么区别? HECS与ECS区别概述 HECS适用于中低负载业务场景,与弹性云服务器相比,云耀云服务器简化了购买ECS过程中的一些高级配置,一站式融合购买、登录、磁盘配置、网络配置、云监控、主机安全等多种功能,帮助您更加便捷高效的部署、配置和管理应用。 ECS提供多种计费模式、规格类型、镜像类型、磁盘类型,针对不同的业务场景,自定义配置弹性云服务器。 HECS底层使用的物理硬件资源与ECS一致,同CPU、内存的HECS与ECS计算能力在同一标准。 高负载应用场景推荐使用ECS,性能更稳定。 L实例、X实例以及旧版HECS区别概述 L实例、X实例以及旧版HECS为HECS的三款服务器类型。 旧版HECS即原云耀云服务器。旧版HECS将逐步下线,请优先使用L实例或X实例。 L实例是旧版HECS的全新升级,提供更优体验、更低价格和更强性能。L实例的购买配置简单,以套餐形式整体售卖、管理,更适合刚接触云服务的入门级用户。 X实例提供比L实例更多的实例规格和镜像,实例配置较L实例更为灵活。 旧版HECS将逐步下线,这里仅介绍L实例、X实例和ECS的具体区别。 表1 L实例、X实例和ECS的区别 项目 L实例 X实例 ECS 适用对象 适用于业务负载要求相对较低,且期望即开即用、超快部署的中小企业和开发者。 适用于中负载业务,且期望资源灵活选配的中小企业和开发者。 适用于网站应用、企业电商、图形渲染、数据分析、高性能计算等高负载、全业务应用场景。 实例特点 内置丰富的解决方案与镜像,零门槛快速搭建业务环境,轻松启动和管理业务 灵活自定义规格、性能稳定强劲、按需灵活计费。 支持灵活地选择所需的内存、CPU、带宽等配置,帮助您打造可靠、安全、灵活、高效的应用环境。 CPU架构 X86 X86 X86、ARM 计费模式 包年/包月 L实例以套餐形式整体售卖、管理,随L实例创建的资源不支持单独卸载、解绑、删除、退订等操作。 按需计费 包年/包月 包年/包月 按需计费 竞价计费 规格 包含云耀服务组合套餐和多种流量套餐类型。 vCPU2核~16核、内存2G~64G灵活选配。 不同vCPUs对应的内存范围不同,具体以控制台为准。 支持多种实例规格系列。 ECS实例类型推荐参考ECS智选推荐。 磁盘 每个套餐默认配置一个固定容量的系统盘,最多支持一个数据盘。 系统盘:高IO 数据盘:通用型SSD V2 自定义配置系统盘规格,支持多个不同类型的数据盘。 系统盘:普通IO、高IO、通用型SSD、超高IO、通用型SSD V2 数据盘:普通IO、高IO、通用型SSD、超高IO、通用型SSD V2 支持选择全磁盘类型。 弹性云服务器支持使用的磁盘类型,请参见云硬盘。 网络 默认分配一个固定弹性公网IP。 公网带宽按流量计费,套餐包含每月固定流量包。 自定义是否绑定弹性公网IP。 线路类型可选。 带宽类型分为按带宽计费、按流量类计费、共享带宽。 自定义是否绑定弹性公网IP。 线路类型可选。 带宽类型分为按带宽计费、按流量类计费、共享带宽。 产品特点 易搭建、更实惠、易维护、更安全 易搭建、更实惠、易维护、更安全 Huawei Cloud EulerOS 2.0公共镜像支持Nginx、Redis或MySQL应用加速 稳定可靠、安全保障、软硬结合、弹性伸缩 镜像 支持5款主流系统镜像 支持11款严选应用镜像 支持使用私有镜像 镜像种类、数目丰富,包括:公共镜像、私有镜像、共享镜像。 镜像种类、数目丰富,包括:公共镜像、私有镜像、共享镜像、市场镜像。 鉴权方式 密码 密码、密钥对 密码、密钥对 集成的云产品 主机安全(基础版) 云备份 云耀负载均衡 主机安全(所有版本) 云监控 云备份 主机安全(所有版本) 云监控 云备份 父主题: 高频问题
  • L实例有公网IP吗? L实例创建后,默认分配一个固定的公网IP地址,因此L实例具备访问互联网并被互联网访问的能力。您可能还需要了解如下信息: L实例的弹性公网IP计费方式 仅对公出流量计费。L实例包含了每月固定流量包,业务优先使用流量包,超出流量包的流量按需计费。 公网IP使用限制 L实例不支持解除、更换公网IP地址。 L实例被释放后不支持保留其公网IP地址。 L实例不支持配置IPv6地址。 更多L实例网络资源及配置信息详见实例规格配置。 父主题: 高频问题
  • 步骤二:创建RocketMQ实例 本步骤以在“华北-北京四”区域创建一个开启SSL的RocketMQ 4.8.0实例为例,介绍如何在控制台创建RocketMQ 实例。 进入购买RocketMQ实例页面。 “计费模式”选择“按需计费”。 在“区域”下拉列表中,选择靠近您应用程序的区域,可降低网络延时、提高访问速度。 在“项目”下拉列表中,选择项目。 在“可用区”区域,根据实际情况选择1个或者3个及以上可用区。 设置“实例名称”和“企业项目”。 设置实例信息,配置详情请参考表2。 表2 设置实例信息 参数 配置说明 规格选择模式 选择“默认”。 版本 选择“4.8.0”。 RocketMQ实例创建后,版本号不支持修改。 部署架构 选择“集群”。 CPU架构 选择“x86计算”。 代理规格 选择“rocketmq.4u8g.cluster”。 代理数量 选择“1”。 代理存储空间 选择“超高I/O 300GB”。 实例总存储空间 = 单个代理的存储空间 * 代理数量 设置实例网络环境信息,配置详情请参考表3。 表3 设置实例网络环境信息 参数 配置说明 虚拟私有云 选择已经创建好的虚拟私有云和子网。 虚拟私有云和子网在RocketMQ实例创建完成后,不支持修改。 安全组 选择已经创建好的安全组。 SSL 开启。 ACL访问控制 开启。 单击“更多配置”,设置更多相关信息,配置详情请参考表4。 表4 更多配置 参数 配置说明 公网访问 不开启。 标签 不设置。 描述 不设置。 填写完上述信息后,单击“立即购买”,进入规格确认页面。 确认实例信息无误后,提交请求。 在实例列表页面,查看RocketMQ实例是否创建成功。 创建实例大约需要3到15分钟,此时实例的“状态”为“创建中”。 当实例的“状态”变为“运行中”时,说明实例创建成功。 当实例的“状态”变为“创建失败”,请删除创建失败的实例,然后重新创建。如果重新创建仍然失败,请联系客服。
  • 步骤四:连接实例生产消费消息 本步骤主要介绍在命令行模式下调用TCP协议连接已开启SSL的RocketMQ实例。 下载“rocketmq-tutorial”示例软件包。 wget https://dms-demo.obs.cn-north-1.myhuaweicloud.com/rocketmq-tutorial.zip 解压“rocketmq-tutorial”。 unzip rocketmq-tutorial.zip 进入“rocketmq-tutorial/bin”目录。 cd rocketmq-tutorial/bin 运行生产普通消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" 使用Ctrl+C命令退出。 运行消费普通消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test 如需停止消费使用Ctrl+C命令退出。 运行生产带消息轨迹的消息示例。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "${连接地址}" -t ${Topic名称} -p "hello rocketmq" -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin sendMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -p "hello rocketmq" -m true 使用Ctrl+C命令退出。 运行消费消息示例,并发送消息轨迹。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "${连接地址}" -t ${Topic名称} -m true 参数说明如下: 连接地址:表示RocketMQ实例的“连接地址”。 Topic名称:RocketMQ实例下创建的Topic名称。 示例如下,其中“100.xxx.xxx.89:8200;100.xxx.xxx.144:8200”为RocketMQ实例的连接地址,“topic-test”为Topic名称。 JAVA_OPT=-Dtls.enable=true sh mqadmin consumeMessage -n "100.xxx.xxx.89:8200;100.xxx.xxx.144:8200" -t topic-test -m true 使用Ctrl+C命令退出。
  • 步骤三:创建Topic Topic,即消息主题,消息发送与接收的基本单元。创建RocketMQ实例成功后,需要手动创建Topic,然后才能进行生产消息和消费消息。 登录分布式消息服务RocketMQ版控制台。 单击RocketMQ实例的名称,进入实例详情页面。 在左侧导航栏,单击“Topic管理”,进入“Topic管理”页面。 单击“创建Topic”,弹出“创建Topic”页面。 参考表5,填写Topic名称和配置信息。 表5 Topic参数说明 参数 说明 Topic名称 您可以自定义Topic名称,用于区分不同的Topic。 Topic名称不能设置为相同,否则会创建失败。 创建Topic后不能修改名称。 说明: 如果Topic名称中包含“%”或“|”,在云监控中会将“%”或“|”转换为“_”显示,例如Topic名称为“test%01”,在云监控中Topic名称显示为“test_01”。 权限 Topic的权限,包括发布+订阅、发布和订阅。 关联代理 选择在某个代理上创建Topic,并设置Topic的队列个数。 如果实例部署在多个代理上,单击“添加关联代理”,可以在其他代理上创建Topic,并设置Topic的队列个数。 配置完成后,单击“确定”,完成Topic的创建。
  • 操作流程 图1 RocketMQ使用流程 环境准备。 RocketMQ实例运行于虚拟私有云中,在创建实例前需要确保有可用的虚拟私有云。 创建RocketMQ实例。 在创建实例时,您可以根据需求选择需要的实例规格和数量,并开启SSL访问。开启SSL后,数据加密传输,安全性更高。 创建Topic。 在实例创建成功后,您需要创建Topic,用于发送与接收消息。 连接RocketMQ实例。 使用客户端连接实例,并通过命令行生产消费消息。 关于RocketMQ的相关概念,请参考RocketMQ基本概念。
  • 方案概述 在RocketMQ的实际业务中,消息堆积是比较常见的问题。在消息处理过程中,如果客户端的消费速度跟不上服务端的发送速度,未处理的消息会越来越多,这部分消息就被称为堆积消息。消息没有被及时消费而产生消息堆积,从而会造成消息消费延迟。对于消息消费实时性要求较高的业务系统,即使是消息堆积造成的短暂消息延迟也无法接受。造成消息堆积的原因有以下两个: 消息没有及时被消费,生产者生产消息的速度快于消费者消费消息的速度,从而产生消息积压且无法自行恢复。 业务系统本身逻辑耗费时间较长,导致消息消费效率较低。 消息消费过程 一个完整的消息消费过程主要分为2个阶段: 消息拉取 客户端通过批量拉取的方式从服务端获取消息,将拉取到的消息缓存到本地缓存队列中。对于拉取式消费,在内网环境下的吞吐量很高,因此消息拉取阶段一般不会引起消息堆积。 消息消费 客户端将本地缓存的消息提交到消费线程中,提供给业务消费逻辑进行消息处理,待消息处理完成后获取处理结果。此阶段的消费能力依赖于消息的消费耗时和消费并发度。如果由于业务处理逻辑复杂等原因,导致处理单条消息的耗时较长,就会影响整体的消息吞吐量。而消息吞吐量低会导致客户端本地缓存队列达到上限,从而停止从服务端拉取消息,引起消息堆积。 所以,消息堆积的主要瓶颈在于客户端的消费能力,而消费能力由消费耗时和消费并发度决定。消费耗时的优先级要高于消费并发度,应在保证消费耗时合理性的前提下,再考虑消费并发度问题。 消费耗时 影响消息处理时长的主要因素是业务处理的代码逻辑,而代码逻辑中会影响处理时长的主要有两种代码类型:CPU内部计算型代码和外部I/O操作型代码。如果代码中没有复杂的递归和循环处理,CPU内部计算耗时相对于外部I/O操作耗时来说几乎可以忽略,因此应关注外部I/O操作型代码的消息处理效率。 外部IO操作型代码主要有以下业务操作: 读写外部数据库,例如对远程MySQL数据库读写。 读写外部缓存系统,例如对远程Redis读写。 下游系统调用,例如Dubbo的RPC远程调用,Spring Cloud对下游系统的HTTP接口调用。 提前梳理下游系统的调用逻辑,掌握每个调用操作的预期耗时,有助于判断业务逻辑中I/O操作的耗时是否合理。通常消息堆积都是由于下游系统出现了服务异常或容量限制,从而导致消费耗时增加。而服务异常,并不仅仅是系统出现报错,也可能是更加隐蔽的问题,比如网络带宽问题。 消费并发度 客户端的消费并发度由单客户端线程数和客户端数量决定。单客户端线程数是指单个客户端所包含的线程数量,客户端数量是指消费组所包含的客户端(消费者)数量。对于普通消息、定时/延时消息、事务消息及顺序消息的消费并发度计算方法如下: 消息类型 消费并发度 普通消息 单客户端线程数 * 客户端数 定时/延时消息 事务消息 顺序消息 Min(单客户端线程数 * 客户端数,队列数) 单客户端线程数的调整需谨慎,不能盲目调大线程数,如果设置过大的线程数反而会带来大量的线程切换开销。 理想环境下单客户端的最优线程数计算模型为:C *(T1+T2)/T1。 其中,C为单机vCPU核数,T1为业务逻辑的CPU计算耗时,T2为外部I/O操作耗时,另外线程切换耗时忽略不计,I/O操作不消耗CPU,线程需有足够消息等待处理且内存充足。 此处最大线程数的计算模型是在理想环境下得到的,在实际应用中建议逐步调大线程数,在观察效果后再进行调整。
  • 实施步骤 为了避免在实际业务中出现非预期的消息堆积问题,需要在业务系统的设计阶段梳理业务逻辑的消费耗时和设置消费并发度。 梳理消费耗时 通过压测获取消息的消费耗时,并对耗时较高的操作代码逻辑进行分析和优化。梳理消息的消费耗时需要注意以下几点: 消息消费逻辑的计算复杂度是否过高,代码是否存在复杂的递归和循环处理。 消息消费逻辑中的I/O操作是否是必须,是否可以使用本地缓存等方案规避。 消息消费逻辑中的复杂耗时操作是否可以做异步化处理。 设置消费并发度 对于消费并发度的计算,可以按如下方法进行处理: 逐步调大单个客户端的线程数,并观测客户端的系统指标,得到单个客户端的最优消费线程数和消息吞吐量。 根据上下游链路的流量峰值,计算出需要设置的客户端数量:客户端数=流量峰值/单客户端消息吞吐量。
  • 实施步骤 订阅一个Topic且订阅一个Tag 同一消费组Group1中的消费者Consumer1、Consumer2和Consumer3都订阅了Topic_A,且都订阅了Topic_A的Tag_A,符合订阅关系一致原则。Consumer1、Consumer2、Consumer3的订阅关系一致,即Consumer1、Consumer2、Consumer3订阅消息的代码必须完全一致,代码示例如下: DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("Group1"); consumer.subscribe("Topic_A", "Tag_A"); 订阅一个Topic且订阅多个Tag 同一消费组Group1中的消费者Consumer1、Consumer2和Consumer3都订阅了Topic_A,且都订阅了Topic_A的Tag_A和Tag_B(即订阅Topic_A中所有Tag为Tag_A或Tag_B的消息),顺序都是Tag_A||Tag_B,符合订阅关系一致性原则。Consumer1、Consumer2、Consumer3的订阅关系一致,即Consumer1、Consumer2、Consumer3订阅消息的代码必须完全一致,代码示例如下: DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("Group1"); consumer.subscribe("Topic_A", "Tag_A||Tag_B"); 订阅多个Topic且订阅多个Tag 同一消费组Group1中的消费者Consumer1、Consumer2和Consumer3都订阅了Topic_A和Topic_B,且订阅Topic_A都未指定Tag(即订阅Topic_A中的所有消息),订阅Topic_B的Tag都是Tag_A和Tag_B(即订阅Topic_B中所有Tag为Tag_A或Tag_B的消息),顺序都是Tag_A||Tag_B,符合订阅关系一致性原则。Consumer1、Consumer2、Consumer3的订阅关系一致,即Consumer1、Consumer2、Consumer3订阅消息的代码必须完全一致,代码示例如下: DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("Group1"); consumer.subscribe("Topic_A", "*"); consumer.subscribe("Topic_B", "Tag_A||Tag_B");
  • 方案概述 订阅关系一致指的是同一个消费组下所有消费者所订阅的Topic、Tag必须完全一致。如果订阅关系不一致,消息消费的逻辑就会混乱,甚至导致消息丢失。 消费原理 RocketMQ为每个Topic划分了消息队列(Queue),队列数越大消费的并发度越大。一个消费组表示一个消费者群组,在分布式应用场景下,同一个消费组中的多个消费者共同完成Topic所有Queue的消费。Queue的分配以消费组为单位,会均匀分配给消费组下的消费者,而不会在意该消费者是否订阅了当前Topic。一个消费者只会分配到Topic中的某几个Queue,而一个Queue只会分配给一个消费者。 正确的订阅关系 在分布式应用场景下,一个消费组中所有的消费者拥有一个相同的消费组ID,他们需订阅相同的Topic和Tag,保持订阅关系一致,才能保证消息消费逻辑正确,消息不丢失。 同一个消费组的消费者必须订阅同一个Topic。例如,消费组1中有消费者A和消费者B,消费者A订阅了Topic A和Topic B,则消费者B也必须订阅Topic A和Topic B,不能只订阅Topic A或只订阅Topic B,或者额外订阅Topic C。 同一个消费组的消费者订阅同一个Topic下的Tag必须一致,包括Tag的数量和顺序。例如,消费组2中有消费者A和消费者B,消费者A订阅Topic A且Tag为Tag1||Tag2,则消费者B订阅Topic A时Tag也必须为Tag1||Tag2,不能只订阅Tag1或只订阅Tag2或订阅Tag2||Tag1。 订阅关系一致性保证了同一个消费组中消费者的正常运行,避免消息逻辑混乱和消息丢失。在实际使用中,生产者端要做好消息的分类,便于消费者可以使用Tag进行消息的准确订阅。而在消费者端,则要保证订阅关系的一致性。 错误的订阅关系 同一消费组下的消费者订阅了不同的Topic 例如,消费组Group1下有消费者A和消费者B,消费者A订阅了Topic A,消费者B订阅了Topic B。当生产者向Topic A发送消息时,消息会按Queue均匀发送给消费者A和消费者B。由于消费者B没有订阅Topic A的消息,会把Topic A消息过滤掉(即图中Topic A的Queue2中的消息会被消费者B过滤),从而导致部分Topic A消息未被消费。 图1 错误的Topic订阅 同一消费组下的消费者订阅了相同Topic下不同的Tag 例如,消费组Group1下有消费者A和消费者B,消费者A订阅了Topic A的Tag A,消费者B订阅了Topic A的Tag B。当生产者向Topic A发送Tag A的消息时,Tag A消息会按Queue均匀发送给消费者A和消费者B。由于消费者B没有订阅Tag A的消息,会把Tag A消息过滤掉(即图中Queue2中的Tag A消息会被消费者B过滤),从而导致部分Tag A消息未被消费。 图2 错误的Tag订阅
  • DCS Redis DCS Redis当前支持的Redis版本为Redis 4.0、Redis 5.0、Redis 6.0。 DCS Redis 3.0已暂停售卖,建议使用Redis 4.0/5.0/6.0。 Redis 6.0实例目前仅在部分Region上线,具体请以控制台显示为准。 Redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等典型应用场景。Redis使用ANSI C语言编写,提供字符串(String)、哈希(Hash)、列表(List)、集合结构(Set、 Sorted_Set )、流(Stream)等数据类型的直接存取。数据读写基于内存,同时可持久化到磁盘。 DCS Redis拥有灵活的实例配置供您选择: 华为云DCS Redis 4.0/5.0/6.0基础版。 表1 DCS Redis 4.0/5.0/6.0基础版 实例类型 提供单机、主备、Proxy集群、Cluster集群、读写分离类型,分别适配不同的业务场景。 单机:适用于应用对可靠性要求不高、仅需要缓存临时数据的业务场景。单机实例支持读写高并发,但不做持久化,实例重启后原有缓存数据不会加载。 主备:包含一个主节点,一个或多个备节点,主备节点的数据通过实时复制保持一致,当主节点故障后,备节点自动升级为主节点。同时用户可通过读写分离技术,在主节点上写,从备节点读,从而提升缓存的整体读写性能。 Proxy集群:在Cluster集群的基础上,增加挂载Proxy节点和ELB节点,通过ELB节点实现负载均衡,将不同请求分发到Proxy节点,实现客户端高并发请求。每个Cluster集群分片是一个双副本的主备实例,当主节点故障后,同一分片中的备节点会升级为主节点来继续提供服务。 Cluster集群:通过分片化分区来增加缓存的容量和并发连接数,每个分片是一个主节点和0到多个备节点,分片本身对外不可见。分片中主节点故障后,同一分片中备节点会升级为主节点来继续提供服务。用户可通过读写分离技术,在主节点上写,从备节点读,从而提升缓存的整体读写能力。 读写分离:在主备实例的基础上,增加挂载Proxy节点和ELB节点,通过ELB节点实现负载均衡,将不同请求分发到Proxy节点,Proxy节点识别用户读写请求,将请求发送到主节点或备节点,从而实现读写分离。 规格 Redis提供128MB~1024G的多种规格。 兼容开源Redis版本 DCS提供不同的实例版本,分别兼容开源Redis的4.0、5.0、6.0。 底层架构 在物理机上容器化部署,Redis 4.0、5.0单节点QPS达10万/秒,Redis 6.0基础版单机、主备实例QPS分别达15万/秒和17万/秒。 高可用与容灾 除单机实例外,其他类型的实例都提供Region内的跨可用区部署,实现实例内部节点间的电力、网络层面物理隔离。 有关开源Redis技术细节,您可以访问Redis官方网站https://redis.io/了解。 华为云DCS Redis 6.0企业版。 华为云DCS 企业版,为华为云全自研的版本,由传统的master-worker线程模型升级为master-N*worker多线程模型,对比传统缓存软件模型,整体性能N倍提升。DCS 企业版100%兼容Redis协议、模块和脚本,如脚本和事务的原子性等,在相同的硬件上,企业版的QPS约是Redis的两倍,且延迟可降低约60%。 多线程高性能版,适用于对单节点性能有超高要求的用户,比如互联网热点事件、大咖直播等高并发访问场景。Redis 6.0之前版本,通常受到慢请求单线程处理的制约,任何一个慢请求的出现都会带来其它用户请求的延时。Redis多线程高性能版对从IO到后端事件处理的全流程,进行了多线程并行优化;通过公平自旋锁实现多线程高效访问缓存数据;通过优化Key逐出算法,提升逐出效率1倍以上;通过支持SubKey过期提高了大Key读写性能。 表2 DCS Redis 6.0企业版 实例类型 Redis 6.0企业版分为高性能型和企业版存储型,目前只支持主备实例类型。(企业版存储型由内存+SSD磁盘组成。) 主备实例包含一个主节点,一个备节点,主备节点的数据通过实时复制保持一致,当主节点故障后,备节点自动升级为主节点。同时用户可通过读写分离技术,在主节点上写,从备节点读,从而提升缓存的整体读写性能。 规格 Redis提供8GB、16GB、32GB、64GB多种规格。 兼容开源版本 DCS企业版完全兼容开源Redis 6。 底层架构 基于虚拟机部署,单节点QPS达40万/秒。 高可用与容灾 除单机实例外,其他类型的实例都提供Region内的跨可用区部署,实现实例内部节点间的电力、网络层面物理隔离。
  • DCS Memcached(已停售) DCS Memcached已停售,建议使用Redis实例。 Memcached是一种内存Key-Value缓存系统,它支持简单字符串数据的存取,通常作为后端数据库内容缓存,以提升web的应用性能,降低对后端数据库的性能依赖,具体了解请参考Memcached(已停售)典型应用场景。 DCS全面兼容Memcached协议并增强实现了双机热备和数据持久化。 表3 DCS Memcached灵活的实例配置 实例类型 提供单机、主备两种类型,分别适配不同的业务场景。 单机:适用于应用对可靠性要求不高、仅需要缓存临时数据的业务场景。单机实例支持读写高并发,但不做持久化,实例重启后原有缓存数据不会加载。 主备:包含一个主节点和一个备节点,主备节点的数据通过实时复制保持一致,备节点对用户不可见且不能直接读写数据,当主节点故障后,备节点自动升级为主节点。 内存规格 单机和主备实例均提供2G、4G、8G、16G、32G、64G共6种内存规格。 高可用与容灾 主备实例提供Region内的跨可用区部署,实现实例内部节点间的电力、网络层面物理隔离。 有关开源Memcached技术细节,您可以访问Memcached官方网站https://memcached.org/。
  • 数据保护技术 DCS通过多种数据保护手段和特性,保障DCS的数据安全可靠。 表1 DCS的数据保护手段和特性 数据保护手段 简要说明 详细介绍 容灾和多活 根据对数据与服务的不同可靠性要求,您可以选择将缓存实例部署在单可用区内(单机房),或者跨可用区(同城灾备)。 容灾多活策略 副本冗余 副本通过增量数据同步的方式保持缓存数据一致,当网络发生异常或节点故障时,通过冗余副本自动故障切换,并且故障恢复后进行一次全量同步,保持数据一致性。 数据复制 数据持久化 业务系统日常运行中可能出现一些小概率的异常事件。部分可靠性要求非常高的业务系统,除了要求缓存实例高可用,还要求缓存数据安全、可恢复,甚至永久保存,以便在缓存实例发生异常后能够使用备份数据进行恢复,保障业务正常运行。 备份与恢复 父主题: 安全
  • 数据复制 DCS的主备和集群实例支持部署高可用实例。租户可选择在单可用区或多可用区中部署实例。当租户选择跨AZ实例时,DCS实例会主动建立和维护Redis同步复制。在实例主节点故障的情况下,缓存实例会自动将备实例升为主节点,从而达到高可用的目的。如果租户使用缓存实例时,业务中读取数据比例大,可以选择4.0以上版本的读写分离实例或者集群多副本实例,缓存实例会自动维护主节点和多个备节点之间的数据同步复制,租户可以根据业务需要连接不同的地址进行读写分离。
  • 网络隔离 VPC允许租户通过配置VPC入站IP范围,来控制连接缓存实例的IP地址段。DCS实例运行在租户独立的VPC内。租户可以创建一个跨可用区的子网组,之后可以根据业务需要,将部署DCS的高可用实例选择此子网完成,DCS在创建完实例后会为租户分配此子网的IP地址,用于缓存实例。DCS实例部署在租户VPC后,租户可通过VPN使其它VPC能够访问实例所在VPC,也可以在VPC内部创建ECS,通过私有IP连接缓存实例。租户可以综合运用子网、安全组、白名单等配置,来完成DCS实例的隔离,提升DCS实例的安全性。
  • 访问控制 租户创建DCS实例时,可以选择配置安全组(仅Redis 3.0/Redis 6.0企业版/Memcached实例支持)或者白名单(仅Redis 4.0、Redis 5.0和Redis 6.0基础版支持)。 租户可以通过VPC,对DCS实例所在的安全组或白名单入站、出站规则进行限制,从而控制可以连接实例的网络范围。 配置安全组/白名单不需要重启实例。 租户创建DCS实例时,建议将访问方式设置为密码访问,并为实例设置访问密码,防止未经认证的客户端误操作实例,以达到对客户端进行认证访问的目的,提高实例使用的安全性。
  • 传输和存储加密 Redis的传输协议RESP在Redis 6.0之前的版本仅支持明文传输。Redis 6.0基础版实例支持RESP3传输协议,支持SSL传输加密。 当前DCS实例在开启公网访问时(仅Redis 3.0实例支持),支持基于Stunnel的客户端与服务端TLS加密传输(参考文档:Stunnel安装和配置)。在开启公网访问时,指定的CA会为每个实例生成唯一的服务证书。客户端可以使用从服务控制台上下载的CA根证书,并在连接实例时提供该证书,对实例服务端进行认证并达到加密传输的目的。 由于需要兼容开源RESP协议,在未开启公网访问时,如果客户有传输加密诉求,建议在数据存储前使用加密算法进行加密后传输(例如AES 256等),并且控制在信任域内进行访问,加密后的数据在落盘保存时同样也会加密保存。
  • 迁移信息收集表 评估和准备阶段收集的信息填写参考下表: 表2 迁移信息收集 迁移源 信息项 说明 源Redis (列出所有待迁移的实例) 源Redis实例的IP地址 - Redis访问密码(如有) - 总数据量大小 info memory命令查询得到,参考used_memory_human的值。 用于评估迁移方案、DCS缓存实例规格、ECS可用磁盘空间等是否满足,以及预估迁移耗时(业务中断时间)。 不为空的数据库编号 info keyspace命令查询得到。 用于确认迁移是否涉及多数据库,非AOF文件方式迁移,部分开源工具可能须逐库处理导出和导入。 DCS缓存实例中,单机和主备实例支持0-255共256个数据库,集群默认只提供一个数据库。 各数据库的key数量 用于迁移后进行数据完整性验证。 数据类型 CDM迁移服务当前支持Hash和String两种数据格式,如果源数据含有list、set之类数据,请采用第三方迁移工具。 华为云ECS(弹性云服务器) 如果待迁移实例较多,可准备多台ECS并行迁移 弹性IP地址 选择与DCS缓存实例网络互通的弹性云服务器进行数据导入,确保导入过程网络稳定。 带宽建议选取高配,提升数据传输效率。 系统登录用户/密码 - CPU/内存 部分迁移工具支持多线程并行导入,使用高规格ECS,能提升导入速度。 可用磁盘空间 ECS需要预留足够的可用磁盘空间,存储压缩文件以及解压后的缓存数据文件。 注:为提高数据传输效率,对于较大的数据文件,建议压缩后再传输到弹性云服务器。 DCS缓存实例 (根据源Redis实例数与数据量情况选择合适的规格与实例数) 实例连接地址 - 实例连接端口 - 实例访问密码 - 实例类型 - 实例规格/可用内存 - 网络配置 VPC 提前规划VPC,确保应用服务、DCS缓存实例等处于相同VPC中。 子网 - 安全组或白名单 由于Redis 3.0和Redis 4.0/5.0/6.0实例部署模式不一样,控制访问方式也不一样,需要制定相应的安全组或白名单规则,确保网络连通。具体请根据目标Redis实例参考配置安全组或者配置白名单 ... ... 其他配置信息。
  • DCS实例配置建议 读取模式(readMode) 建议采用MASTER,即Master节点承担所有的读写流量,一方面避免数据因主从同步时延带来的一致性问题;另一方面,如果从节点故障,配置值=SLAVE,所有读请求会触发报错;配置值=MASTER_SLAVE,部分读请求会触发异常。读报错会持续failedSlaveCheckInterval(默认180s)时间,直至从可用节点列表中摘除。 如需读写流量分流处理,DCS服务提供了针对读写流量分流的读写分离实例类型,通过在中间架设代理节点实现读写流量分发,遇到从节点故障时,自动切流至主节点,对业务应用无感知,且故障感知时间窗口远小于redisson内部的时间窗口。 订阅模式(subscriptionMode) 建立采用MASTER,原理同上。 连接池配置 以下计算方式只适用于一般业务场景,建议根据业务情况做适当调整适配。 连接池的大小没有绝对的标准,建议根据业务流量进行合理配置,一般连接池大小的参数计算公式如下: 最小连接数 =(单机访问Redis QPS)/(1000ms / 单命令平均耗时) 最大连接数 =(单机访问Redis QPS)/(1000ms / 单命令平均耗时)* 150% 举例:某个业务应用的QPS为10000左右,每个请求需访问Redis10次,即每秒对Redis的访问次数为100000次,同时该业务应用有10台机器,计算如下: 单机访问Redis QPS = 100000 / 10 = 10000 单命令平均耗时 = 20ms(Redis处理单命令耗时为5~10ms,遇到网络抖动按照15~20ms来估算) 最小连接数 =(10000)/(1000ms / 20ms)= 200 最大连接数 =(10000)/(1000ms / 20ms)* 150% = 300
  • SSL连接配置(可选配置) 当实例开启了SSL,通过SSL连接实例时,请将基于Bean方式配置中的RedissonClient构造方法clientConfiguration()中添加如下configRedissonSSL(serverConfig)逻辑,同时将redis的连接地址从redis://ip:port改为rediss://ip:port格式。Redis实例支持SSL的情况请参考配置Redis SSL数据加密传输。 private void configRedissonSSL(BaseConfig serverConfig) { TrustManagerFactory trustManagerFactory = null; try { //加载自定义路径下的ca证书,可结合具体业务配置 CertificateFactory cf = CertificateFactory.getInstance("X.509"); Certificate ca; try (InputStream is = new FileInputStream(certificationPath)) { ca = cf.generateCertificate(is); } //创建keystore String keyStoreType = KeyStore.getDefaultType(); KeyStore keyStore = KeyStore.getInstance(keyStoreType); keyStore.load(null, null); keyStore.setCertificateEntry("ca", ca); //创建TrustManager trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); trustManagerFactory.init(keyStore); } catch (CertificateException | IOException | KeyStoreException | NoSuchAlgorithmException e) { e.printStackTrace(); return; } serverConfig.setSslTrustManagerFactory(trustManagerFactory); }
  • 分布式缓存服务控制台简介 您可以登录分布式缓存服务管理控制台,购买缓存实例、进行实例日常操作和维护,查看实例状态和实例内存使用情况,进行在线咨询,解决使用过程的问题。 下图为分布式缓存服务控制台页面简介,控制台各区域内容请以实际页面为准。 图3 分布式缓存控制台页面 切换区域 切换不同区域(Region),您可以选择接近您的应用程序的区域。 切换云服务 切换到其他云服务的Console页面,例如,虚拟私有云服务、云监控服务。 购买入口 购买Redis实例入口。 菜单区域 提供缓存实例日常操作、数据迁移等功能入口。 热门活动、通知区域 主要显示当前阶段分布式缓存服务新上线的功能,以及优惠活动。 实例数 显示当前用户下所有的资源实例总数,以及故障实例数量。 实例监控和告警 显示当前用户下实例内存使用率排行较前的实例。如果您需要了解单个实例的信息,可参考查看和修改DCS实例基本信息。 您可以为自己的实例创建告警规则,当产生告警时,可以第一时间处理。设置操作,请参考配置告警。 常用操作指导 提供分布式缓存服务中常用的操作指导链接,您可以进入操作文档,了解更多业务细节。 在线帮助 在产品使用过程中有任何疑问,可以使用智能客服进行在线咨询。
  • 公网连接Redis (仅Redis 3.0涉及) 在进行公网访问时,请先仔细阅读公网连接章节,检查实例是否满足公网访问的要求。 连接时提示:Error: Connection reset by peer或者出现:远程主机强迫关闭一个现有的连接。 原因1:安全组没有配置正确。 解决方法:需要允许Redis实例被访问,具体配置操作和公网连接操作,请按照公网连接章节中的操作进行。 原因2:查看Redis所在vpc子网是否被ACL关联,同时这个ACL出方向被限制了。若是,放开限制。 原因3:开启了SSL加密传输,连接时没有安装配置Stunnel,直接使用了界面提示的IP地址进行连接。 解决方法:开启SSL加密时,必须安装配置Stunnel客户端,具体操作,请按照公网连接Redis实例(开启SSL加密)执行。其中,请注意,在连接Redis实例命令中,IP地址需要配置为Stunnel客户端地址和端口,不要使用控制台展示的Redis实例公网连接地址和端口。 已经开启了公网访问的Redis实例,公网访问被关闭了,无法使用公网访问。 原因:该Redis实例绑定的弹性公网IP被解绑,导致Redis实例公网被关闭。 解决方法:在控制台重新开启实例的公网访问,绑定弹性公网IP,并重新连接。
  • 带宽超限导致连接问题 当实例已使用带宽达到实例规格最大带宽,可能会导致部分Redis连接超时现象。 您可以查看监控指标“流控次数”,统计周期内被流控的次数,确认带宽是否已经达到上限。 然后,检查实例是否有大Key和热Key,如果存在大Key或者单个Key负载过大,容易造成对于单个Key的操作占用带宽资源过高。大Key和热Key操作,请参考分析实例大Key和热Key。 Redis 4.0及之后版本的实例,支持通过控制台对Redis实例进行带宽扩容,可用于解决带宽超限的问题。
共100000条