华为云用户手册

  • 修订记录 发布日期 修改说明 2023-06-26 第三十五次正式发布。 优化如何购买并申请国密SSL证书?,补充申请国密证书必须选择SM2密钥算法的描述。 2023-12-15 第三十四次正式发布。 新增SSL证书自动替换功能开启失败的原因有哪些?章节 优化如何申请测试证书?章节,测试证书有效期缩短为三个月。 2023-11-16 第三十三次正式发布。 新增一键部署SSL证书至云产品和手动部署SSL证书至云产品的区别是什么?章节。 2023-10-17 第三十二次正式发布。 新增 域名 证书监控配置失败的原因有哪些?章节。 优化如何配置SSL证书到期提醒?章节,新增关闭某张证书到期提醒的功能描述。 优化SSL证书管理服务是否提供免费证书?章节,新增测试证书有效期即将调整的描述。 2023-06-30 第三十一次正式发布。 新增如何解决IIS服务器部署SSL证书时提示证书链中的一个或多个中间证书丢失的问题? 2023-06-12 第三十次正式发布。 优化吊销证书和删除证书的区别是什么?章节证书吊销的限制条件。 2023-05-23 第二十九次正式发布。 刷新测试(免费)证书与收费证书的区别章节,增加关于O CS P的描述。 刷新DV证书DNS验证失败该如何处理?,增加DNS验证失败可能存在的问题。 2023-01-19 第二十八次正式发布。 新增如何查询免费测试证书剩余额度?章节。 2023-01-11 第二十七次正式发布。 刷新DV证书DNS验证失败该如何处理?章节,增加DNS验证失败报错提示。 刷新如何申请测试证书?章节,购买后未申请的证书不再占用免费证书额度。 2022-11-16 第二十六次正式发布。 新增 如何购买并申请国密SSL证书? 续费SSL证书后,还需要重新安装SSL证书吗? DV证书DNS验证失败该如何处理? 2022-10-31 第二十五次正式发布。 优化常见问题分类。 刷新购买证书相关问题,该如何解决?、如何增加、解绑、替换或修改SSL证书域名?章节内容,新增CFCA证书品牌的重签说明。 优化常见问题内网域名可以申请SSL证书吗?。 2022-09-29 第二十四次正式发布。 优化常见问题如何在服务器上安装SSL证书?SSL证书的安装和配置提供咨询服务吗?, 云证书管理服务 不提供证书安装和配置咨询服务。 2022-09-23 第二十三次正式发布。 优化常见问题如何增加、解绑、替换或修改SSL证书域名?、提交 SSL证书申请 后,发现证书信息填写错误或变更怎么办?,不支持多域名证书更新域名。 新增常见问题购买证书后未立即申请,订单多久后会失效?、购买或续费选择的多年期证书,为什么新证书的有效期只有1年?、吊销证书需要多长时间、如何查询证书还有多久到期?。 2022-08-19 第二十二次正式发布。 刷新常见问题如何申请测试证书?,支持一键创建免费测试证书。 2022-07-27 第二十一次正式发布。 优化常见问题如何进行手动DNS验证?。 2022-06-22 第二十次正式发布。 新增常见问题私有证书签发后,能否停用私有CA?。 2022-05-31 第十九次正式发布。 新增常见问题测试证书额度已用完,该如何处理?。 2022-05-27 第十八次正式发布。 新增常见问题私有证书的有效期快到了,怎么避免业务中断?。 2022-04-20 第十七次正式发布。 优化常见问题如何将SSL证书应用到 华为云产品 ?、一键部署SSL证书到云产品后,HTTPS服务就自动启用了吗?、非华为云SSL证书如何配置到华为云服务中?,支持一键部署证书到云产品。 2021-12-15 第十六次正式发布。 SSL证书支持退订吗?,优化内容描述。 部署了SSL证书后,为什么网站仍然提示不安全?,优化内容描述。 如何申请测试证书?,优化内容描述。 SSL证书管理服务是否提供免费证书?,优化内容描述。 2021-11-26 第十五次正式发布。 刷新常见问题SSL证书过期了怎么办?、SSL证书是否支持续费?,SSL证书支持在控制台进行续费。 2021-11-01 第十四次正式发布。 根据界面控制台显示修改刷新资料。 调整文档架构。 新增如何申请测试证书?、证书链配置说明章节。 2021-10-18 第十三次正式发布。 优化常见问题SSL证书管理服务是否提供免费证书?、域名相关问题,该如何解决?。 2021-09-30 第十二次正式发布。 新增常见问题私有证书有效期相关问题。 优化常见问题如何进行手动DNS验证?、SSL证书审核需要多久时间?。 优化常见问题SSL证书支持退订吗?,SSL证书支持用户在控制台进行退订。 2021-08-16 第十一次正式发布。 私有证书管理服务商用版本发布,刷新相关章节内容。 优化常见问题如何查看域名验证是否生效?、域名验证未生效如何处理?、域名验证完成后,为什么SSL证书还是停留在“待完成域名验证(申请进度为40%)”的状态?。 2021-06-15 第十次正式发布。 优化常见问题测试(免费)证书与收费证书的区别、如何在服务器上安装SSL证书?、非华为云SSL证书如何配置到华为云服务中?。 2021-05-26 第九次正式发布。 优化常见问题如何进行域名验证?、如何进行手动DNS验证?、为什么“证书状态”长时间停留在审核中?。 2021-04-29 第八次正式发布。 刷新常见问题如何选择SSL证书?、多泛域名和混合域名证书的申请方法、SSL证书管理服务中,单域名、多域名、泛域名的区别是什么?、域名相关问题,该如何解决?,新增支持购买组合域名证书。 2021-04-14 第七次正式发布。 增加常见问题测试(免费)证书与收费证书的区别。 2021-03-19 第六次正式发布。 刷新SSL证书过期了怎么办?、如何配置SSL证书到期提醒?章节内容,上传SSL证书支持到期邮件和短信提醒。 更新新旧证书有效期说明。 2021-03-12 第五次正式发布。 根据申请SSL证书优化后的界面刷新截图。 SSL证书管理新增自动DNS验证功能。 2021-01-26 第四次正式发布。 合入SSL证书管理相关功能。 增加常见问题如何增加、解绑、替换或修改SSL证书域名?。 2020-08-31 第三次正式发布。 优化“什么是私有证书管理?”,增加了私有证书管理的有效期说明。 2020-02-27 第二次正式发布。 新增以下常见问题: 如何制作CSR文件? 什么是公钥和私钥? 为什么要使用无密码保护的私钥? 主流数字证书有哪些格式? 2020-01-17 第一次正式发布。
  • SSL证书自动替换功能开启失败的原因有哪些? 华为云 云证书管理 服务支持对您已购买的多年期证书或已续费的证书开启证书到期自动替换功能,当您在使用该功能时提示开启失败,可能有以下原因: 多年期证书剩余张数不足或已购买证书未开启自动续费。 解决方法: 如果您购买的多年期证书剩余张数不足,建议您重新购买证书并完成证书的申请签发流程。如未开启自动续费,请您在开启SSL证书自动续费后再进行证书自动替换操作,自动续费操作步骤请参见自动续费。 取消了隐私授权。 解决方法: 在您的SSL证书列表找到您需要重新开启隐私授权的证书,单击证书名称进入证书详情,下拉找到隐私授权的开关,重新打开即可。 取消隐私信息授权后,该证书所属的所有隐私信息将无法恢复,不建议您对已有证书进行取消隐私授权的操作。 预埋根证书变化。 解决方法: 因CA机构每5-10年会更换一次根证书,如果根证书已经变化,证书自动替换功能会开启失败,此时需要您手动完成证书替换。 父主题: SSL证书应用类
  • 配置平台侧参数 登录行业视频管理服务后台。 单击“设备管理”,选择需要添加设备的设备组,单击“添加设备”。 选择“单个添加”设备,国标协议接入,根据图1填写基本信息。 图1 添加设备 表1 参数说明 参数 说明 设备名称 自定义,应用于本平台的名称。 支持数字、中文、英文、空格、-、_,最大长度26个字符,首位字符不能为空格。 设备ID 设备ID为20位纯数字。其中,第11-13位与设备类型对应关系如下: 摄像机:132 NVR:118 DVR:111 其他位自定义。 设备用户名 登录设备的用户名。 长度5-32个字符,首位字符不能为数字。 设备密码 设备在平台中的注册密码。 注册认证算法 选择设备注册的认证算法类型。建议选择SHA265,安全性更高。 添加设备后,会弹出“添加成功”界面。 请手动记录该信息,配置设备侧参数时需要使用。 单击“关闭”,关闭后可在设备详情页面单击“SIP信息”查看。
  • 主备实例 对于Memcached主备实例,需要预留持久化的内存,其可用内存如表2所示。主备实例可以调整实例可用内存,以更好地支持数据持久化、主从同步等后台任务。 表2 Memcached主备实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 连接数上限(默认/可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 2 1.5 5,000/50,000 42/128 50,000 dcs.memcached.master_standby 4 3.2 5,000/50,000 64/192 100,000 dcs.memcached.master_standby 8 6.8 5,000/50,000 64/192 100,000 dcs.memcached.master_standby 16 13.6 5,000/50,000 85/256 100,000 dcs.memcached.master_standby 32 27.2 5,000/50,000 85/256 100,000 dcs.memcached.master_standby 64 58.2 5,000/50,000 128/384 100,000 dcs.memcached.master_standby
  • 单机实例 因系统开销占用一部分资源,Memcached单机实例可用内存比实例规格略小,如表1所示。 表1 Memcached单机实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 连接数上限(默认/可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 2 1.5 5,000/50,000 42/128 50,000 dcs.memcached.single_node 4 3.2 5,000/50,000 64/192 100,000 dcs.memcached.single_node 8 6.8 5,000/50,000 64/192 100,000 dcs.memcached.single_node 16 13.6 5,000/50,000 85/256 100,000 dcs.memcached.single_node 32 27.2 5,000/50,000 85/256 100,000 dcs.memcached.single_node 64 58.2 5,000/50,000 128/384 100,000 dcs.memcached.single_node
  • 主备实例特点 Memcached主备实例在单机实例基础上,增强服务高可用以及数据高可靠性。 Memcached主备实例具有以下特性: 持久化,确保数据高可靠 实例包含一个主节点和一个备节点,都默认开启数据持久化。同时支持数据持久化,确保数据高可靠。 Memcached主备实例的备节点对用户不可见,不支持客户端直接读写数据。 数据同步 主备节点通过增量数据同步的方式保持缓存数据一致。 当网络发生异常或有节点故障时,主备实例会在故障恢复后进行一次全量同步,保持数据一致性。 故障后自动切换主节点,服务高可用 当主节点故障后,备节点在30秒内自动完成主备切换,无需用户操作,业务平稳运行。 多种容灾策略 跨AZ部署(可用区):DCS支持将主备实例部署在不同的AZ内,节点间电力与网络均物理隔离。您可以将应用程序也进行跨AZ部署,从而达到数据与应用全部高可用。
  • Memcached主备实例架构设计 DCS的Memcached主备实例架构,如图1所示。 图1 Memcached主备实例示意图 示意图说明: VPC 虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。 Memcached主备实例不支持公网访问,客户端需要与主备实例处于相同VPC,并且配置安全组访问规则。 相关参考:如何选择和配置Redis实例以及客户端的安全组。 客户应用 运行在ECS上的客户应用程序,即Memcached的客户端。 Memcached实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考用户指南的连接缓存实例。 DCS缓存实例 DCS实例。主备实例包含了Master和Slave两个节点。默认开启数据持久化功能,同时保持节点间数据同步。 DCS实时探测实例可用性,当主节点故障后,备节点升级为主节点,恢复业务。 Memcached实例访问端口为11211。
  • 实例架构设计 DCS的Memcached单机实例架构,如图1所示。 图1 Memcached单机实例示意图 示意图说明: VPC 虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。 Memcached单机实例不支持公网访问,客户端需要与实例处于相同VPC,并且配置安全组访问规则。 相关参考:如何选择和配置Redis实例以及客户端的安全组。 客户应用 运行在ECS上的客户应用程序,即实例的客户端。 Memcached实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考用户指南的连接缓存实例。 DCS缓存实例 DCS实例,单机实例只有1个节点,1个Memcached进程。 DCS实时探测实例可用性,当Memcached进程故障后,DCS为实例重新拉起一个新的Memcached进程,恢复业务。 Memcached实例访问端口为11211。
  • 单机实例特点 系统资源消耗低,支持高QPS 单机实例不涉及数据同步、数据持久化所需消耗的系统开销,因此能够支撑更高的并发。Memcached的单机实例QPS达到10万以上。 进程监控,故障后自动恢复 DCS部署了业务高可用探测,单机实例故障后,30秒内会重启一个新的进程,恢复业务。 即开即用,数据不做持久化 单机实例开启后不涉及数据加载,即开即用。如果服务QPS较高,可以考虑进行数据预热,避免给后端数据库产生较大的并发冲击。 低成本,适用于开发测试 单机实例各种规格的成本相对主备减少40%以上。适用于开发、测试环境搭建。 总体说来,单机实例支持读写高并发,但不做持久化,实例重启时不保存原有数据。单机实例主要服务于数据不需要由缓存实例做持久化的业务场景,如数据库前端缓存,用以提升数据读取效率,减轻后端并发压力。当缓存中查询不到数据,可穿透至磁盘数据库中获取,同时,重启服务、缓存实例时,可从磁盘数据库中获取数据进行预热,降低后端服务在启动初期的压力。
  • 主备实例 主备实例有x86和Arm两种CPU类型,支持多副本,副本数支持2到5,如果是Arm类型,即Arm主备2副本、Arm主备3副本……Arm主备5副本。主备实例默认1个主节点、2个副本数(包含主副本)。 同一个内存规格,x86主备实例、Arm主备实例、主备多副本实例有如下差异: 可使用内存、连接数上限、基准/最大带宽、QPS:都一样。 产品规格编码(实例规格名称):表2中仅列出了x86和Arm的实例规格名称,如果是其他副本个数,名称中相应修改副本数量,例如,8G规格的Arm主备实例,Arm主备2副本的名称为redis.ha.au1.large.r2.8,3副本为redis.ha.au1.large.r3.8,以此类推。 占用IP个数:占用的IP个数=主节点个数*副本个数。例如: 主备2副本实例,占用IP个数=1*2=2; 主备3副本实例,占用IP个数=1*3=3。 表2 Redis 4.0和Redis 5.0主备实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 最大连接数(默认/最大可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 0.125 0.125 10,000/10,000 40/40 80,000 x86:redis.ha.xu1.tiny.r2.128 Arm:redis.ha.au1.tiny.r2.128 0.25 0.25 10,000/10,000 80/80 80,000 x86:redis.ha.xu1.tiny.r2.256 Arm:redis.ha.au1.tiny.r2.256 0.5 0.5 10,000/10,000 80/80 80,000 x86:redis.ha.xu1.tiny.r2.512 Arm:redis.ha.au1.tiny.r2.512 1 1 10,000/50,000 80/80 80,000 x86:redis.ha.xu1.large.r2.1 Arm:redis.ha.au1.large.r2.1 2 2 10,000/50,000 128/128 80,000 x86:redis.ha.xu1.large.r2.2 Arm:redis.ha.au1.large.r2.2 4 4 10,000/50,000 192/192 80,000 x86:redis.ha.xu1.large.r2.4 Arm:redis.ha.au1.large.r2.4 8 8 10,000/50,000 192/192 100,000 x86:redis.ha.xu1.large.r2.8 Arm:redis.ha.au1.large.r2.8 16 16 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.16 Arm:redis.ha.au1.large.r2.16 24 24 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.24 Arm:redis.ha.au1.large.r2.24 32 32 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.32 Arm:redis.ha.au1.large.r2.32 48 48 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.48 Arm:redis.ha.au1.large.r2.48 64 64 10,000/50,000 384/384 100,000 x86:redis.ha.xu1.large.r2.64 Arm:redis.ha.au1.large.r2.64
  • 单机实例 Redis 4.0/5.0单机实例有x86和Arm两种CPU类型,具体规格如下表。 表1 Redis 4.0和Redis 5.0单机实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 最大连接数(默认/最大可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 0.125 0.125 10,000/10,000 40/40 80,000 x86:redis.single.xu1.tiny.128 Arm:redis.single.au1.tiny.128 0.25 0.25 10,000/10,000 80/80 80,000 x86:redis.single.xu1.tiny.256 Arm:redis.single.au1.tiny.256 0.5 0.5 10,000/10,000 80/80 80,000 x86:redis.single.xu1.tiny.512 Arm:redis.single.au1.tiny.512 1 1 10,000/50,000 80/80 80,000 x86:redis.single.xu1.large.1 Arm:redis.single.au1.large.1 2 2 10,000/50,000 128/128 80,000 x86:redis.single.xu1.large.2 Arm:redis.single.au1.large.2 4 4 10,000/50,000 192/192 80,000 x86:redis.single.xu1.large.4 Arm:redis.single.au1.large.4 8 8 10,000/50,000 192/192 100,000 x86:redis.single.xu1.large.8 Arm:redis.single.au1.large.8 16 16 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.16 Arm:redis.single.au1.large.16 24 24 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.24 Arm:redis.single.au1.large.24 32 32 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.32 Arm:redis.single.au1.large.32 48 48 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.48 Arm:redis.single.au1.large.48 64 64 10,000/50,000 384/384 100,000 x86:redis.single.xu1.large.64 Arm:redis.single.au1.large.64
  • Proxy集群实例 Redis Proxy集群实例与单机、主备实例的区别,不仅在于支持高规格内存,客户端连接数、内网带宽上限、QPS指标都有很大的提升。 表3 Redis 3.0 Proxy集群实例产品规格 规格 (GB) 实例可使用内存 (GB) 连接数上限(默认/可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 64 64 90,000/90,000 600/5,120 500,000 dcs.cluster 128 128 180,000/180,000 600/5,120 500,000 dcs.cluster 256 256 240,000/240,000 600/5,120 500,000 dcs.cluster 512 512 480,000/480,000 600/5,120 500,000 dcs.cluster 1024 1024 960,000/960,000 600/5,120 500,000 dcs.cluster 按需付费的Redis Proxy集群实例,支持的实例规格为64GB、128GB和256GB; 包年/包月付费的Redis Proxy集群实例,支持的实例规格为64GB、128GB、256GB、512GB和1024GB。
  • 单机实例 因系统开销占用一部分资源,Redis单机实例可用内存比实例规格略小,如表1所示。 表1 Redis 3.0单机实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 连接数上限(默认/可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 2 1.5 5,000/50,000 42/512 50,000 dcs.single_node 4 3.2 5,000/50,000 64/1,536 100,000 dcs.single_node 8 6.8 5,000/50,000 64/1,536 100,000 dcs.single_node 16 13.6 5,000/50,000 85/3,072 100,000 dcs.single_node 32 27.2 5,000/50,000 85/3,072 100,000 dcs.single_node 64 58.2 5,000/60,000 128/5,120 100,000 dcs.single_node
  • 主备实例 对于Redis主备实例,需要预留持久化的内存,部分规格的实际可使用与单机实例相比略少,如表2所示。主备实例可以调整实例可用内存,以更好地支持数据持久化、主从同步等后台任务。 表2 Redis 3.0主备实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 连接数上限(默认/可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 2 1.5 5,000/50,000 42/512 50,000 dcs.master_standby 4 3.2 5,000/50,000 64/1,536 100,000 dcs.master_standby 8 6.4 5,000/50,000 64/1,536 100,000 dcs.master_standby 16 12.8 5,000/50,000 85/3,072 100,000 dcs.master_standby 32 25.6 5,000/50,000 85/3,072 100,000 dcs.master_standby 64 51.2 5,000/60,000 128/5,120 100,000 dcs.master_standby
  • 如何选择区域? 选择区域时,您需要考虑以下几个因素: 地理位置 一般情况下,建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。不过,在基础设施、BGP网络品质、资源的操作与配置等方面,中国大陆各个区域间区别不大,如果您或者您的目标用户在中国大陆,可以不用考虑不同区域造成的网络时延问题。 中国-香港、曼谷等其他地区和国家提供国际带宽,主要面向非中国大陆地区的用户。如果您或者您的目标用户在中国大陆,使用这些区域会有较长的访问时延,不建议使用。 在除中国大陆以外的亚太地区有业务的用户,可以选择“中国-香港”、“亚太-曼谷”或“亚太-新加坡”区域。 在非洲地区有业务的用户,可以选择“南非-约翰内斯堡”区域。 在欧洲地区有业务的用户,可以选择“欧洲-巴黎”区域。 云服务之间的关系 如果多个云服务一起搭配使用,需要注意: 不同区域的弹性云服务器、关系型数据库、 对象存储服务 内网不互通。 不同区域的弹性云服务器不支持跨区域部署在同一负载均衡器下。 资源的价格 不同区域的资源价格可能有差异,请参见华为云服务价格详情。
  • 什么是区域、可用区? 我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。 区域(Region):从地理位置和网络时延维度划分,同一个Region内共享弹性计算、块存储、对象存储、VPC网络、弹性公网IP、镜像等公共服务。Region分为通用Region和专属Region,通用Region指面向公共租户提供通用云服务的Region;专属Region指只承载同一类业务或只面向特定租户提供业务服务的专用Region。 可用区(AZ,Availability Zone):一个AZ是一个或多个物理数据中心的集合,有独立的风火水电,AZ内逻辑上再将计算、网络、存储等资源划分成多个集群。一个Region中的多个AZ间通过高速光纤相连,以满足用户跨AZ构建高可用性系统的需求。 图1阐明了区域和可用区之间的关系。 图1 区域和可用区 目前,华为云已在全球多个地域开放云服务,您可以根据需求选择适合自己的区域和可用区。
  • 请求参数 备注:公测阶段以下信息由华为云提供 表1 请求参数 名称 类型 IN 必选 描述 X-Auth-Token string header 是 用户凭证 project_id string path 是 项目ID service_group string path 是 服务类别,针对不同服务类场景, 用户侧不需单独赋值 service_type string path 是 子服务类型,针对不同服务, 用户侧不需单独赋值 task_id string path 是 待查询任务id
  • 响应结果示例 { "task_id": "344fxxxx-0xxx-4xxx-a248-ce26cff7xxxx", "input_json": null, "obs_input_url": { "bucket": "example_bucket",, "object": " path/to/input/example.mps " }, "obs_output_url": { "bucket": "example_bucket",, "object": "path/to/output/344fd304-0937-4d25-a248-ce26cff78388_completeResult.sol" }, "status": "Running", "progress": null, "output_json": null, "output_file_base64": null, "start_time": "2023-00-00T07:19:35Z", "end_time": null, "create_time": "2023-00-00T07:19:33.607Z" }
  • 响应参数 状态码: 200 创建成功响应信息 参数 参数类型 是否必选 描述 task_id sring 是 任务id input_json string 是 求解器不涉及 input 表6 是 求解器输入文件信息 output 表7 是 求解器输出文件信息 status string 是 任务状态,包括: Pending:任务等待处理中(排队中) Running:任务正在运行 Failed:任务失败 Succeeded:任务成功 progress string 是 返回求解器日志。求解状态在日志最后显示,可能的状态包括: - Unknown: 未知状态,可能处于问题读取过程中,或其他未定义状态 - Time limit reached: 达到时间上限 - Memory limit reached: 达到宿主机内存上限 - Optimal solution found: 找到最优解(或达到目标gap) - Problem is infeasible: 问题不可行 - Problem is unbounded: 问题无边界 - Problem is infeasible or unbounded: 问题不可行或无边界 output_json string 是 求解器服务不涉及 output_file_base64 string 是 求解器服务不涉及 start_time String 是 任务开始执行时间 end_time String 是 任务结束时间 create_time String 是 任务创建时间
  • 请求示例 { "input_json": { "id": "fu", "order": "fu", "name": "fu", "time": 1, "gap_mode": 0, "overlap": 0, "fabric": { "width": 38, "grid_x": 0, "grid_y": 0 }, "polygon": [ { "index": 0, "profile": [ 0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 0.0, 10.0 ] }, { "index": 1, "profile": [ 0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 0.0, 10.0 ] }, { "index": 2, "profile": [ 0.0, 0.0, 14.0, 0.0, 14.0, 9.0, 0.0, 9.0 ] }, { "index": 3, "profile": [ 0.0, 0.0, 14.0, 0.0, 7.0, 7.0 ] }, { "index": 4, "profile": [ 0.0, 9.0, 0.0, 0.0, 14.0, 9.0 ] }, { "index": 5, "profile": [ 0.0, 0.0, 14.0, 0.0, 14.0, 14.0, 0.0, 14.0 ] }, { "index": 6, "profile": [ 0.0, 0.0, 10.0, 4.0, 10.0, 9.0, 0.0, 9.0 ] }, { "index": 7, "profile": [ 0.0, 0.0, 5.0, 0.0, 5.0, 9.0, 0.0, 9.0 ] }, { "index": 8, "profile": [ 0.0, 0.0, 14.0, 0.0, 14.0, 14.0 ] }, { "index": 9, "profile": [ 0.0, 0.0, 10.0, 0.0, 10.0, 10.0, 0.0, 14.0 ] }, { "index": 10, "profile": [ 0.0, 8.0, 4.0, 0.0, 8.0, 8.0 ] }, { "index": 11, "profile": [ 0.0, 0.0, 14.0, 0.0, 7.0, 12.0 ] } ], "piece": [ { "id": 0, "polygon_index": 0, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 1, "polygon_index": 1, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 2, "polygon_index": 2, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 3, "polygon_index": 3, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 4, "polygon_index": 4, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 5, "polygon_index": 5, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 6, "polygon_index": 6, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 7, "polygon_index": 7, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 8, "polygon_index": 8, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 9, "polygon_index": 9, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 10, "polygon_index": 10, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] }, { "id": 11, "polygon_index": 11, "gap_index": -1, "hole_index": -1, "tilted": 0, "gap": 0, "pose_group": -1, "column_group": -1, "rot": 90, "flip_x": 0, "flip_y": 0, "remark": "no Y constraints", "y": [] } ], "hole": [], "constraints": {} } }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 task_id String 任务编号。 input_json String 输入数据,当前为null obs_input_url String Obs桶中输入文件地址,当前为null obs_output_url String Obs桶中输出文件地址,当前为null status String 任务运行状态。(Pending,Running, Failed, Succeeded) progress String 任务进度,当前为null output_json Array of 表4 objects 任务处理结果,json格式,任务状态为finished时携带。具体数据结构参见IrregularTextileResultDetail output_file_base64 String 当前为null start_time String 任务开始时间 end_time String 任务结束时间 create_time String 任务创建时间 表4 IrregularTextileResultDetail 参数 参数类型 描述 id String 任务编号。 time Double 任务运行时长,单位秒。 ratio Double 排版利用率 order String 订单名。 length Double 使用面料长度。 pieces Array of 表5 objects 裁片排版位置定义。 表5 Piece 参数 参数类型 描述 id String 裁片id。 angle Double 裁片旋转角度。 flip_x Integer 裁片是否沿x轴翻转。 flip_y Integer 裁片是否沿y轴翻转。 box Array of 表6 objects 裁片先旋转再翻转后放入指定位置形成的包络矩形,由矩形左底点和右上点表示。 表6 box 参数 参数类型 描述 x Double 二维点x轴坐标。 y Double 二维点y轴坐标。
  • 响应示例 成功响应示例 { "total": 1, "count": 1, "tasks": [ { "task_id": "40axxxxx-701a-47cf-8b56-648xxxxxxx25", "status": "running", "result": {}, "error_detail": null } ] }
  • 请求消息体 请求消息体通常以结构化格式发出,与请求消息头中Content-type对应,传递除请求消息头之外的内容。若请求消息体中参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 例如,对于创建任务接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxx为project的ID。 POST https//optverse.cn-north-4.myhuawei.com/v2/optverse/regular-plate/tasks Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "id": "xxxxxxxx" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 例如,在创建任务的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https//optverse.cn-north-4.myhuawei.com/v2/optverse/regular-plate/tasks Content-Type: application/json X-Auth-Token: ABCDEFJ....
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 表3 公共请求消息头 名称 说明 是否必选 示例 Content-Type 发送的实体的MIME类型。 是 application/json; charset=utf-8 X-Auth-Token 用户Token。 是 - AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URI中的参数说明 参数 说明 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从地区和终端节点中获取。 例如OptVerse服务在“华北-北京四”区域的Endpoint为“optverse.cn-north-4.myhuaweicloud.com”。 resource-path 资源路径,也即API访问路径。 从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 示例 请求示例 POST https://{endpoint}/v2/{project_id}/optverse/regular-plate/tasks Request Header: Content-Type: application/json;charset=utf-8 Auth-Token: Body: { "items": [ { "item_id": 0, "item_material": "18MM_PLATE", "item_length": 60.0, "item_width": 553.0, "item_turn": true, "item_num": 1, "item_name": "底板", "item_thick": 18, "is_substitute": false, "label_info": { "order_code": "订单号", "plan_code": "批次号", "item_code": "小板标识" } }, { "item_id": 0, "item_material": "18MM_PLATE", "item_length": 60.0, "item_width": 553.0, "item_turn": true, "item_num": 1, "item_name": "底板", "item_thick": 18, "is_substitute": true, "label_info": { "order_code": "订单号", "plan_code": "批次号", "item_code": "小板标识" } } ], "parameters": [ { "calculate_time": 30, "first_cut_direction": 2, "item_backward_trim": 0.0, "item_forward_trim": 0.0, "kerf_horizontal": 4.4, "kerf_vertical": 4.4, "max_stack_height": 80, "plate_trim_horizontal": 10.0, "plate_trim_vertical": 10.0, "time_cost": 200, "max_cut_stage_num": 3, "min_stack_utilization": 0.8, "item_sort_location": false, "item_num_limit": 0 } ], "plates": [ { "plate_grain": true, "plate_id": 0, "plate_length": 2440.0, "plate_material": "18MM_PLATE", "plate_num": 9999, "plate_thick": 18.0, "plate_width": 1220.0, "plate_cost": 100 } ] } 成功响应示例 { "task_id": "40axxxx-701a-47cf-8b56-648xxxxxxd25" } 参数说明如表4所示。 表4 参数说明 参数 参数类型 说明 task_id String 任务ID 失败响应示例 { "error_code": "optverse.00000006", "error_msg": "Input data validate error: the item material is 18MM_PLATE, item_id is 0: Length and width are larger than plate.\n" }
  • 响应参数 表2 响应参数说明 参数 参数类型 说明 error_detail String 如果运行出错会提示 result Object 如果运行正常会在该属性内给出结果 status String 任务运行状态,详情请参见表3 task_id String 任务id result_list Array of objects 切割方案列表 plan_info Array of objects 切割方案的统计信息列表 cut_file String 以字符串形式保存的切割方案文件 plan_name String 此方案序号(根据参数设置可给出多组方案) material_info String 统计信息,详情请参见表4 material_name String 材料名称 problem_id Int 按材料划分的问题序列号 表3 任务状态说明 状态 说明 waiting 在任务队列中,等待执行, 当等待时间超过一定时间,会超时,转为abnormal状态 running 任务正在执行 finished 任务成功运行结束,通过`result`获取结果 failed 任务执行出错,通过`error_detail`获取错误信息 abnormal 任务异常,可能是排队超时,可能是重试次数超时,可能是计算时间超时,通过`error_detail`获取错误信息 表4 统计信息响应参数说明 参数 单位 参数类型 说明 cut_length 米(m) float 切割长度 cut_sum - Int 切割刀数 cut_time 分钟(min) float 锯切时间 item_num - Int 开料件数 material - String 材料 program_num - Int 锯切图数量 run_program_num - Int 运行的锯切图数 rate 百分比(%) float 原材料利用率 sum_area 平方米(m2) float 原材料使用面积 sum_cost - Float 锯切成本 sum_plate_num - Int 原材料使用数量 sum_used_area 平方米(m2) float 原材料利用面积
  • Token认证 Token认证就是在调用API的时候将Token加到请求消息头,从而通过身份认证,获得操作API的权限。 在应用授权后 获取Token ,再调用其他接口时,您需要在请求消息头中添加“X-Auth-Token”。例如Token值为“ABCDEFJ....”,则调用接口时将“X-Auth-Token: ABCDEFJ....”加到请求消息头即可,如下所示。 GET https://optverse.cn-north-4.myhuawei.com/v2/optverse/regular-plate/tasks/{task_id} Content-Type: application/json X-Auth-Token: ABCDEFJ....
  • 请求Body体示例 { "input_json": { "input": { "type": "obs", "data": { "bucket": "oroas-bi-data", "object": "oroas-optvsolver/input/dcmulti.mps" } }, "output": { "type": "obs", "data": { "bucket": "oroas-bi-data", "object": "oroas-optvsolver/output" } }, "parameters": { "time_limit": 60.0, "gap": 0.0 } } } 或 { "input_json": { "input": { "type": "base64", "data": { "content": "Kk5BTUU6ICAgICAgICAgZG....==", "file_type": ".mps" } }, "output": {}, "parameters": { "time_limit": 60.0, "gap": 0.0 } } }
共100000条