华为云用户手册

  • 功能描述 GaussDB 当前已有慢查询相关视图,并具备了SPM的基础能力。然而,当发生计划跳变时,无法对非慢查询的执行计划进行历史记录。因此,本特性在基于SPM的基础上,对历史执行计划进行记录,以提升SPM的易用性。由于SPM当前仅支持Generic-Plan,因此本功能所管理的计划类型限定在Generic-Plan。 当前计划跳变存在两种主要情况: 优化器对相同查询产生了不同的执行计划,并最终选用了新的计划。 每次执行时,优化器在历史已有的计划中切换。 这两种事件,均被称为跳变事件。 由于本特性涉及对计划跳变的快速感知和快速恢复两部分,以下将分别进行简明介绍。 快速感知 如果要实现全量的计划跳变历史记录,最直接的方法是记录每次执行计划与上一次的不同。这种方法会带来极大的性能开销。因此,出于性能和资源的考虑,本特性在以下两种场景进行跳变事件记录: 当优化器产生了SPM的baseline中不存在的新的计划。 当优化器产生了SPM的baseline中存在的,但超过一段时间未执行的老计划。 具体的执行流程,如图1所示。 图1 计划跳变支持快速感知流程图 此特性需要保证GUC参数spm_enable_plan_capture设置为STORE模式,且打开跳变历史记录开关spm_enable_plan_history_logging。 从图1可知,除了以下情况,均会对因产生新计划导致的跳变事件进行记录。 场景一:如果当前所捕获的基线个数已经超出上限 (spm_plan_capture_max_plannum),则查看当前计划是否是SPM所捕获过的查询的新计划。当前spm_enable_plan_history_logging打开并且历史记录数未超过上限,则进行额外的基线捕获,并进行历史记录。 场景二:如果当前所记录的跳变事件个数已经超出上限 (spm_plan_capture_max_plannum),则不进行历史记录。 为了确保在长期运行中能够记录更多的跳变历史,SPM会设置定时任务,在数据库启动起的每24小时触发一次历史记录清理,其校验准则是查看当前的历史记录数占最大上限的百分比,若超出此百分比,则会删除一些最旧的历史记录以保证记录数在此百分比要求之下,此百分比由spm_plan_history_reserved_percentage设置。 快速恢复 当发生计划跳变时,可以通过设置历史时间点的某条计划相应的baseline状态为ACC/FIXED,再结合计划选择功能spm_enable_plan_selection,即可实现回退至历史计划完成计划固化,也即完成快速回退。
  • 最佳实践 通常建议在业务低谷期打开spm_enable_plan_capture为STORE进行计划捕获,在批量执行业务完成后,打开历史记录开关spm_enable_plan_history_logging进行跳变历史记录。 在发生计划跳变时,可参考如下步骤操作。 获取unique_sql_id,比如通过statement_history查询。 gaussdb=# SELECT unique_query_id FROM DBE_PERF.statement_history; 根据unique_sql_id从PG_CATA LOG .GS_SPM_ID_HASH_JOIN中查出sql_hash。 gaussdb=# SELECT sql_hash FROM PG_CATALOG.gs_spm_id_hash_join WHERE unique_sql_id = $unique_query_id; 根据sql_hash和发生跳变的历史时间,利用系统函数(DBE_SQL_UTIL.GS_SPM_GET_PLAN_HISTORY)/视图(PG_CATALOG.GS_SPM_PLAN_HISTORY_DETAIL) /系统表(PG_CATALOG.GS_SPM_PLAN_HISTORY)中查出跳变历史。 gaussdb=# SELECT * FROM pg_catalog.gs_spm_plan_history WHERE sql_hash = $sql_hash; 锁定发生跳变的计划后,找出其plan_hash,并利用系统函数(DBE_SQL_UTIL.GS_SPM_ACCEPT_HISTORICAL_PLAN)接受指定时间的历史计划,或者直接使用系统函数(DBE_SQL_UTIL.GS_SPM_SET_PLAN_STATUS)来完成对应基线状态的设置,可设置为ACC/FIXED。 gaussdb=# SELECT dbe_sql_util.gs_spm_accept_historical_plan($sql_hash, $given_time, 'ACC'); 打开spm_enable_plan_selection完成计划快速回退。 gaussdb=# SET spm_enable_plan_selection = ON; 本特性仅支持Generic Plan。 与本特性相关的GUC参数有spm_enable_plan_history_logging,spm_enable_plan_history_logging_expired_time和spm_plan_history_reserved_percentage。 由于gs_spm_plan_history可写入记录数存在上限,因此新增GUC参数spm_plan_history_reserved_percentage用于指定gs_spm_plan_history可被占用的百分比。 快速感知和快速回退要求必须设置spm_enable_plan_capture = STORE 且 spm_enable_plan_history_logging = on。 该特性旨在解决当生成新计划时导致的计划跳变,对于智能优化器从现存的多个计划中进行最佳计划选择导致的计划变化,若未超出过期时间,则不属于新计划产生导致的计划跳变,不属于特性支持范围。
  • GS_SPM_PLAN_HISTORY_DETAIL GS_SPM_PLAN_HISTORY_DETAIL是用于查看数据库中跳变历史信息的视图,SYSADMIN和初始用户权限均可以访问该视图。 表1 GS_SPM_PLAN_HISTORY_DETAIL字段 名称 类型 描述 sql_hash bigint SPM中SQL的唯一标识。 plan_hash bigint 当前SQL中的plan的唯一标识。 plan_hash_previous bigint 上一次使用plan的唯一标识,若不存在上一次计划则为0。 unique_sql_id bigint 数据库中SQL的唯一标识。 outline text outline文本,可固定当前计划的一组Hint。 status text 计划的状态,取值: UNACC:未接受的计划。 ACC:已经接受的计划。 FIXED:一种特殊的ACC状态的计划,计划的匹配优先级高于ACC状态的计划。 gplan boolean 当前outline对应的计划是否是gplan。 cost double precision 计划的总代价。 sql_text text SQL的文本串。 param_num integer SQL的参数数量。 source text baseline的来源。 userid oid 用户的oid。 baseline_creation_time timestamp with time zone baseline的创建时间。 history_creation_time timestamp with time zone 跳变历史的创建时间。 modification_time timestamp with time zone baseline的修改时间。 父主题: SPM计划管理
  • 并行导入命令示例 1 2 3 4 5 6 7 8 9 -- CS V格式的导入命令 \COPY {data_destination} from '/path/export.txt' encoding {file_encoding} parallel {parallel_num} csv; --FIXED格式的导入命令 \COPY {data_destination} from '/path/export.txt' encoding {file_encoding} parallel {parallel_num} fixed; --TEXT格式的导入命令 \COPY {data_destination} from '/path/export.txt' encoding {file_encoding} parallel {parallel_num}; --data_destination 只能是一个表名称 --file_encoding 表示该二进制文件导出时指定的编码格式 --parallel_num 表示数据导入时的客户端数量,在集群资源较为充足时建议此值为8。
  • \COPY命令示例 \COPY的导出命令与COPY命令的区别为把命令中的COPY换成\COPY即可,此处提供一个简单的CSV格式COPY导出命令转换为\COPY导出命令的示例: 1 2 3 4 5 6 --COPY命令 COPY {data_source} to '/path/export.csv' encoding {server_encoding} csv; COPY {data_source} from '/path/export.csv' encoding {server_encoding} csv; --对应的\COPY命令 \COPY {data_source} to '/path/export.csv' encoding {server_encoding} csv; \COPY {data_source} from '/path/export.csv' encoding {server_encoding} csv;
  • 数据存在错误时需要支持容错的导入场景 当使用COPY或 \COPY命令执行数据导入时,若检测到数据异常,系统将默认终止导入任务。为此,GaussDB提供了两种容错机制:智能修正模式与严格校验模式。建议优先采用严格校验模式(Level1容错等级),该模式可在保证数据完整性的前提下跳过异常记录并且不会对导入性能影响造成太大的影响。详细信息可参考数据存在错误时的导入操作指南。 以下是严格校验模式Level1容错等级的导入命令: 1 2 3 4 5 6 7 8 9 10 11 --CSV格式 \COPY {data_destination} from '/path/export.txt' log errors reject limit '{limit_num}' encoding {file_encoding} CSV; --BINARY格式 \COPY {data_destination} from '/path/export.txt' log errors reject limit '{limit_num}' encoding {file_encoding} BINARY; --FIXED格式 \COPY {data_destination} from '/path/export.txt' log errors reject limit '{limit_num}' encoding {file_encoding} FIXED; --TEXT格式 \COPY {data_destination} from '/path/export.txt' log errors reject limit '{limit_num}' encoding {file_encoding}; --data_destination 只能是一个表名称 --file_encoding 表示该二进制文件导出时指定的编码格式 --limit_num 表示数据导入时容错行数的上限,一旦此COPY FROM语句错误数据超过选项指定条数,则会按照原有机制报错。 如果是普通用户期望使用该特性时,需要对该用户赋权容错特性两张系统表的相关权限,具体SQL如下: 1 2 grant insert,select,delete on pgxc_copy_error_log to {user_name}; grant insert,select,delete on gs_copy_summary to {user_name}; 父主题: 典型场景
  • 网络隔离 SFS Turbo仅支持从绑定的VPC网络中直接访问SFS Turbo文件系统数据。 SFS Turbo支持通过安全组规则,限制允许访问SFS Turbo文件系统数据的客户端IP地址。 SFS Turbo支持配置IP鉴权规则,根据不同的IP或网段授予不同的权限。 为了更好地使用这些功能,建议 在创建SFS Turbo文件系统前,在VPC中规划不同的子网,为SFS Turbo文件系统规划一个独立的子网,为不同权限的客户端规划不同的子网,详情请参考“创建虚拟私有云和子网”。 在创建SFS Turbo文件系统前,规划独立的安全组,入方向仅放通访问SFS Turbo文件系统所需的端口,源IP地址为客户端规划的子网。不同规格的SFS Turbo文件系统所需端口不同,详情请参考“创建SFS Turbo文件系统”。 在创建SFS Turbo文件系统时,选择VPC中为SFS Turbo文件系统规划的子网,选择为SFS Turbo文件系统规划的安全组,详情请参考“创建SFS Turbo文件系统”。 在创建SFS Turbo文件系统后,配置IP鉴权规则,根据不同的IP或网段授予不同的权限,详情请参考“管理SFS Turbo文件系统权限”。
  • 数据备份 当发生病毒入侵、人为误删除、数据丢失等事件时,可以使用SFS Turbo备份数据创建新的文件系统,创建后的文件系统原始数据将会和SFS Turbo备份数据内容相同。 创建SFS Turbo文件系统时,建议开启备份,详情请参考“创建SFS Turbo文件系统”。 SFS Turbo文件系统如果未绑定SFS Turbo备份存储库,建议绑定SFS Turbo备份存储库,详情请参考“绑定存储库的资源”。 SFS Turbo文件系统绑定的SFS Turbo备份存储库,如果未绑定备份策略,建议绑定备份策略,详情请参考“绑定策略至存储库”。 SFS Turbo文件系统绑定的SFS Turbo备份存储库绑定的备份策略,如果未启用,建议启用备份策略,详情请参考“修改策略”。
  • 返回结果 表2 返回结果 参数类型 描述 表3 说明: 该接口返回是一个Promise类型,需要使用Promise、async/await语法处理。 参数解释: 接口返回信息,详见表3。 表3 Response 参数名称 参数类型 描述 CommonMsg ICommonMsg 参数解释: 接口调用完成后的公共信息,包含HTTP状态码,操作失败的错误码等,详见ICommonMsg。 InterfaceResult 表5 参数解释: 操作成功后的结果数据,详见表5。 约束限制: 当Status大于300时为空。 表4 ICommonMsg 参数名称 参数类型 描述 Status number 参数解释: OBS服务端返回的HTTP状态码。 取值范围: 状态码是一组从2xx(成功)到4xx或5xx(错误)的数字代码,状态码表示了请求响应的状态。完整的状态码列表请参见状态码。 Code string 参数解释: OBS服务端返回的错误码。 Message string 参数解释: OBS服务端返回的错误描述。 HostId string 参数解释: OBS服务端返回的请求服务端ID。 RequestId string 参数解释: OBS服务端返回的请求ID。 Id2 string 参数解释: OBS服务端返回的请求ID2。 Indicator string 参数解释: OBS服务端返回的详细错误码。 表5 GetObjectOutput 参数名称 参数类型 描述 RequestId string 参数解释: OBS服务端返回的请求ID。 DeleteMarker string 参数解释: 标识删除的对象是否是删除标记。 LastModified string 参数解释: 对象的最近一次修改时间。 ContentLength string 参数解释: 对象数据的长度。 CacheControl string 参数解释: 响应中的Cache-Control头。 ContentDisposition string 参数解释: 响应中的Content-Disposition头。 ContentEncoding string 参数解释: 响应中的Content-Encoding头 ContentLanguage string 参数解释: 响应中的Content-Language头 ContentType string 参数解释: 对象的MIME类型。 Expires string 参数解释: 响应中的Expires头。 ETag string 参数解释: 对象的ETag值。 VersionId string 参数解释: 对象的版本号。 WebsiteRedirectLocation string 参数解释: 当桶设置了Website配置,该参数指明对象的重定向地址。 StorageClass string 参数解释: 对象的存储类型,当对象存储类型是标准存储时,该值为空。 Restore string 参数解释: 归档存储类型对象的恢复状态。 Expiration string 参数解释: 对象的详细过期信息。 Content string | stream.Readable 参数解释: 对象的内容。当设置了SaveAsFile时该值为空;当设置了SaveAsStream且为true时该值为stream.Readable对象;当SaveAsFile和SaveAsStream都未设置时为String对象。 Metadata object 参数解释: 对象自定义元数据。需要在桶的CORS配置中增加允许响应中可返回的附加头域。例如,新增x-amz-meta-property1以获取自定义元数据property1。
  • 接口约束 您必须是桶拥有者或拥有下载对象的权限,才能下载对象。建议使用 IAM 或桶策略进行授权,如果使用IAM则需授予obs:object:GetObject权限,如果使用桶策略则需授予GetObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 对于存储类别为归档存储或深度归档存储的对象,需要确认对象的状态为“已恢复”才能对其进行下载。
  • 接口约束 您必须是桶拥有者或拥有下载对象的权限,才能下载对象。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:GetObject权限,如果使用桶策略则需授予GetObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 对于存储类别为归档存储或深度归档存储的对象,需要确认对象的状态为“已恢复”才能对其进行下载。
  • 接口约束 您必须是桶拥有者或拥有下载对象的权限,才能下载对象。建议使用IAM或桶策略进行授权,如果使用IAM则需授予obs:object:GetObject权限,如果使用桶策略则需授予GetObject权限。相关授权方式介绍可参见OBS权限控制概述,配置方式详见使用IAM自定义策略、配置对象策略。 OBS支持的Region与Endpoint的对应关系,详细信息请参见地区与终端节点。 对于存储类别为归档存储或深度归档存储的对象,需要确认对象的状态为“已恢复”才能对其进行下载。
  • SQL命令 创建CATALOG的SQL命令以及参数说明。 CREATE CATALOG hive_catalog_OBS PROPERTIES ( 'type'='hms', 'hive.metastore.uris' = 'thrift://192.x.x.x:port,thrift://192.x.x.x:port', 'hive.metastore.sasl.enabled' = 'true', 'hive.server2.thrift.sasl.qop'='auth-conf', 'hive.server2.authentication' = 'KERBEROS', 'hive.server2.authentication.kerberos.principal' = 'hive/hadoop.99261318_1115_4b1a_bcbd_f944f2d68731.com@99261318_1115_4B1A_BCBD_F944F2D68731.COM', 'hive.metastore.kerberos.principal' = 'hive/hadoop.99261318_1115_4b1a_bcbd_f944f2d68731.com@99261318_1115_4B1A_BCBD_F944F2D68731.COM', 'hadoop.security.authentication'='kerberos', 'hadoop.kerberos.principal' = 'USER_NAME', 'hive.version' = '3.1.0', 'fs.defaultFS'='hdfs://hacluster', 'hadoop.rpc.protection'='privacy', 'AWS_AC CES S_KEY' = '***', 'AWS_SECRET_KEY' = '***', 'AWS_ENDPOINT' = '***', 'AWS_REGION' = '***' ); 表2 参数说明 参数 说明 type 对接外部数据类型。 hive.metastore.uris hive元数据uri,可在hive-site.xml配置文件查看。 hive.metastore.sasl.enabled 可在hive-site.xml配置文件查看。 hive.server2.thrift.sasl.qop 可在hive-site.xml配置文件查看。 hive.server2.authentication 认证类型,在集群连接页面查看。 hive.server2.authentication.kerberos.principal 可在hive-site.xml配置文件查看。 hive.metastore.kerberos.principal 可在hive-site.xml配置文件查看。 hadoop.security.authentication 可在core-site.xml配置文件查看。 hadoop.kerberos.principal \ hive.version Hive版本。 fs.defaultFS 可在core-site.xml配置文件查看。 hadoop.rpc.protection 可在core-site.xml配置文件查看。 AWS_ACCESS_KEY access key,获取方式请参见 对象存储服务 的获取访问密钥(AK/SK)章节。 AWS_SECRET_KEY secret key,获取方式请参见对象存储服务的获取访问密钥(AK/SK)章节。 AWS_ENDPOINT obs地址,获取方式见请参见对象存储服务的获取终端节点章节。 AWS_REGION obs region,在obs页面查看。 参数获取方法。 连接mrs集群,请参见使用mrs客户端章节。 进入client目录下,显示出 MRS 的全部组件,目前使用的组件有HDFS和Hive组件。 cd /opt/Bigdata/client/ HDFS组件中包含了core-site.xml、hdfs-site.xml配置文件,Hive组件中包含了hive-site.xml配置。 进入组件中的配置文件查看参数。 HDFS组件查看。 cd ./HDFS/hadoop/etc/ 进入hadoop目录。 cd hadoop/hdfs-site.xml 打开hdfs-site.xml配置文件,查找相关参数。 vim hdfs-site.xml Hive组件查看。 /opt/Bigdata/client/Hive/config/hive-site.xml 打开hive-site.xml配置文件,查找相关参数。 vim hive-site.xml catalog中的obs指的是obs桶,不是obs并行文件系统,目前还不支持obs并行文件系统。
  • 创建MRS Hive连接步骤 登录 表格存储服务 管理控制台。 用户在CloudTable集群管理界面,选择需要操作的集群进入集群详情页面。 单击tab页中的“连接设置”,弹出连接页面。 单击左上角“新建连接”创建MRS Hive连接。 新建连接类型:安全认证hive on OBS,认证类型选择KERBEROS,OBS按钮开启状态。 表1 参数说明 参数 描述 名称 根据连接的数据源类型,用户可以自定义连接名。 说明: 必须以字母开头,由字母、数字、中划线组成,不能包含其他的特殊字符,并且长度为4~64个字符。 连接器 Doris支持的外部数据目录组件,目前支持可选:Hive。 Hadoop类型 Doris支持hadoop组件,目前支持的可选:MRS。 集群名称 MRS集群名称。 说明: Doris只能对接一个kerberos集群中的一个用户。 Manager IP MRS Manager的浮动IP地址,选择连接的集群后,ip地址会自动填充。 认证类型 MRS集群鉴权类型,安全集群可选“KERBEROS”,非安全集群可选“SIMPLE”。选择连接的集群后,安全类型会自动填充。 连接器版本 MRS集群的数据源组件的版本,HIVE支持3版本,可选:3.X。 用户名 MRS集群的用户名。 密码 MRS集群mrs_user_name对应的密码。 OBS支持 打开按钮,则支持OBS。关闭按钮则不支持OBS。 配置好参数后,单击测试。如果测试失败请检查用户名和密码是否正确。 测试完成后,单击确定按钮,连接设置页面会出现一条新的连接记录。
  • 步骤1:购买服务 登录 a. 使用Chrome浏览器访问系统,打开登录页面。 图2 登录页 b. 输入华为云账号,用户名和密码 ,点击“登录”按钮, 登录成功后,进入OptVerse首页界面,如下图所示: 图3 OptVerse首页 购买服务 在使用OptVerse服务之前,用户需要先购买算法服务,OptVerse提供“包年/包月”和“按需”两种计费模式以满足不同场景下的用户需求。购买流程可参考购买服务 创建/授权子账户 创建iam子账户流程可以参考《OptVerse_用户指南》创建/授权iam用户 获取ProjectId a. 调用服务需要获取用户所在节点的ProjectId b. 鼠标移动至右上角用户名处,之后在弹框中选在我的凭证跳转至用户API凭证页,复制用户所需项目的ProjectId,如下图所示: 图4 项目列表
  • 场景说明 二维切割问题又称为排版问题(Nesting problems)或填充问题(Packing Problem),是指将若干尺寸不相同的零件在给定的矩形原料上以最优的方式排布,要求所有待排零件都必须放在原料内,并且各个零件之间不发生重叠,并满足一定的工艺要求。切割问题普遍存在于工程领域,如服装排料、钣金下料、家具生产、玻璃切割。 排版软件在各离散制造行业已广泛使用,但自动排版算法存在实际落地的问题,主要包括: 1. 排版料率低:现有排版软件作业流程较冗长,原料利用率不够高,增加企业成本。 2. 切割效率低:现有排版软件排版方案切割路线长,加工效率低。 3. 排版约束不满足实际生产:排版约束多且复杂,现有排版软件使用的自动排版核心算法基于国外引擎,很难基于国内实际生产情况进行调整。 在使用OptVerse二维切割服务优化后,能够很好地支持企业解决以上问题。
  • 操作步骤 使用OptVerse服务之前,必须先申请华为云账号并进行实名认证。通过此账号,您可以使用所有华为云服务,并且只需为您所使用的服务付费。具体申请信息请见账号注册和实名认证。 调用OptVerse服务的具体步骤如下: 步骤1:购买服务:用户在OptVerse管理控制台页面“服务列表”栏选择二维切割服务购买套餐包。 步骤2:安装SDK:获取和安装SDK。 步骤3:开始使用:根据示例使用SDK发送请求,查看返回结果或状态码与错误码。
  • 开通OptVerse服务 如果您还没有华为账号,请参见 注册华为账号 并开通华为云。 如果您已有华为账号并已开通华为云,请继续执行以下步骤,步骤详情可参考:调用服务。 进入“OptVerse服务”主页,单击“立即使用”,进入天筹求解器服务管理控制台(需要使用华为云账号登录)。 “购买套餐包”。 选择要使用的region(当前仅支持北京四)和服务,并选择总并发数进行分配,点击购买进行支付。 进入授权管理页面,创建应用并授权。 获取用户的AK/SK及所在节点的ProjectId以调用服务。 父主题: 开发准备
  • 功能描述 OptVerse服务为用户提供数学规划求解器、数值计算求解器、高级计划与排程、二维切割等多种运筹优化和数值计算问题求解能力。简要介绍如下: 数学规划求解器:找到一组满足若干约束条件,且最优化目标函数取值的解。根据目标函数、约束和变量类型可划分为不同问题。OptVerse服务提供线性规划和混合整数线性规划问题的求解服务,详见:数学规划求解器。 数值计算求解器:通过数值计算方法,高效求解CAE仿真底层的数学问题。OptVerse服务提供线性方程组的直接法和迭代法及预处理求解、非线性方程组的迭代求解、矩阵的特征值求解、智能加速求解以及基于云HPC的高性能计算服务,详见:数值计算求解器。 高级计划与排程:以运筹学理论基础,旨在通过先进的算法和计算机系统,优化和解决生产制造过程中的计划、调度、产能、人员、物料等一系列问题,达成工厂智能化、精益化制造的目标。OptVerse服务提供生产计划、生产排程、运输计划等服务,详见:高级计划与排程 二维切割:在一定约束条件下,将一定数量的零件放置在指定的原料中,以达到最佳的利用率,减少原料的浪费。OptVerse服务提供服装切割、钣金切割、木材电子锯和雕刻机切割等服务,详见:二维切割。 父主题: 服务介绍
  • 支持功能 服装切割 材料利用率优化 算法应能最大化材料利用率,减少废料。 原料形状 支持矩形原料 原料修边距 零件距离原料最小边距,要求长度相同 零件形状 支持矩形以及异形零件 裁片旋转 裁片90、180度旋转 裁片翻转 裁片翻转 裁片间距 裁片之间间隔相等距离 锁定排料 裁片固定在面料上 组合排料 控制多个裁片之间的位置关系 避瑕疵排料 自动避开布料上设定的瑕疵区域 分行排料 不同套裁片在面料上下不同区排版 分列排料 不同套裁片在面料左右不同区排版 同套同方向排料 同套裁片有相同的旋转角度 空洞套料 优先在大零件内部空洞排版小零件 共线切割 形状相同的2个零件直线边共线切割
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。 当资源不存在的时候,PATCH可能会去创建一个新的资源。 例如,在创建任务的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://optverse.cn-north-4.myhuaweicloud.com/v2/{{project_id}}/optverse/{service_type}/tasks
  • 请求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条数据。 例如您需要获取IAM在“华北-北京四”区域的Token,则需使用“华北-北京四”区域的Endpoint(iam.cn-north-4.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-4.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 如下公共消息头需要添加到请求中。 表3 公共请求消息头 名称 说明 是否必选 示例 Content-Type 发送的实体的MIME类型。 是 application/json; charset=utf-8 X-Auth-Token 用户Token。 是 -
  • 请求消息体 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 { "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 } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。
  • 定义问题 根据业务的需求,一般需要定义的问题内容包括问题描述、已知参数、约束条件、优化目标。 问题描述:运筹优化算法所要解决的实际问题描述,例如计划生产的产品收益等。 已知参数:解决问题过程中的已知参数,例如生产原料,具备不同技能的生产工人、各种生产机器等。 约束条件:解决问题过程中的约束条件,例如每台机器不能连续生产20小时,每个工人不能连续工作16小时等。 优化目标:待解决的问题目标,例如最大化生产利润、最低运营成本等。
  • 支持功能 数学规划求解器 求解性能 LP/MIP求解性能,3万约束3.5万变量50万非零元规模的问题,平均求解时间在10分钟内 支持问题类型 支持求解大规模线性问题、二次型问题和混合整数线性问题。 需具备对多种算法模型的兼容性,以满足行业多样化业务场景的要求,支持线性、非线性、混合整数、二次约束规划等算法模型的建模和求解 支持算法 支持优先级和权重的控制,具备单纯形法、内点法、分支定界算法等能力 并行运算 支持并行运算,允许同时进行多个算法的求解,支持多优化任务接口同时调用的业务场景 接口友好 提供方便易用的多种主流语言接口,包括Java、Python、C++SDK接口以及命令行、lp/mps文件等多种API接口调用
  • 准备工作 已注册华为云账号,并完成实名认证,账号不能处于欠费或冻结状态。 已具备开发环境,Go SDK 支持 go 1.14 及以上版本,可执行 go version 检查当前 Go 的版本信息。 登录“我的凭证 ”页面,获取“IAM用户名”“、账号名”以及待使用区域的“项目ID”。 调用服务时会用到这些信息,请提前保存。 本样例以“华北-北京四”区域为例,获取对应的项目ID(project_id)。 图1 我的凭证 图2 应用详情
  • 开始使用 详细的SDK介绍请参见 SDK中心 、Go SDK使用指导、Go SDK使用视频。 导入依赖模块 import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/httphandler" optverse "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/optverse/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/optverse/v2/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/optverse/v2/region" ) 配置客户端连接参数 默认配置 // 使用默认配置 httpConfig := config.DefaultHttpConfig() 网络配置(可选) // 根据需要配置代理 httpConfig.WithProxy(config.NewProxy(). WithSchema("http"). WithHost("proxy.huaweicloud.com"). WithPort(80). WithUsername("username"). WithPassword("password")))) 超时配置(可选) // 默认超时时间为120秒,可根据需要配置 httpConfig.WithTimeout(120); SSL配置(可选) // 根据需要配置是否跳过SSL证书校验 httpConfig.WithIgnoreSSLVerification(true); 配置认证信息 配置AK、SK、project_id信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。 使用永久AK和SK basicAuth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() 认证参数说明: ak、sk:访问密钥信息,获取方法请参见获取AK/SK。 project_id:华为云项目ID,获取方法请参见准备工作。 初始化客户端 指定云服务region方式(推荐) // 增加region依赖 import ( "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/optverse/v2/region" ) // 初始化客户端认证信息,使用当前客户端初始化方式可不填 projectId/domainId,以初始化basic.NewCredentialsBuilder()为例 basicAuth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() // 初始化指定云服务的客户端 New{Service}Client ,以初始化 Region 级服务 OptVerse 的 NewOptVerseClient 为例 client := optverse.NewOptVerseClient( optverse.OptVerseClientBuilder(). WithRegion(region.ValueOf("cn-north-4")). WithCredential(basicAuth). WithHttpConfig(config.DefaultHttpConfig()). Build()) 指定云服务endpoint方式 // 指定终端节点,以 OptVerse 服务北京四的 endpoint 为例 endpoint:="https://optverse.cn-north-4.myhuaweicloud.com" // 初始化客户端认证信息,需要填写相应 projectId/domainId,以初始化 basic.NewCredentialsBuilder() 为例 basicAuth:=basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). WithProjectId(projectId). Build() // 初始化指定云服务的客户端 New{Service}Client ,以初始化 Region 级服务 OptVerse 的 NewOptVerseClient 为例 client := optverse.NewOptVerseClient( optverse.OptVerseClientBuilder(). WithEndpoint(endpoint). WithCredential(basicAuth). WithHttpConfig(config.DefaultHttpConfig()). Build()) endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看 地区和终端节点 。 发送请求并查看响应 // 以调用天筹求解器查询任务列表接口ListTask为例 request := &model.ListTaskRequest{} request.ServiceType = "irregular-textile" response, err := client.ListTask(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } 异常处理 表1 异常处理 一级分类 一级分类说明 ServiceResponseError 服务响应异常 url.Error url异常 // 异常处理 response, err := client.ListTask(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) }
  • 开始使用 详细的SDK介绍,使用异步客户端,配置日志请参见SDK中心、Python SDK使用指导、Python SDK使用视频。 导入依赖模块 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcore.http.http_config import HttpConfig # 导入OptVerse服务库huaweicloudsdkoptverse from huaweicloudsdkoptverse.v2.region.optverse_region import OptVerseRegion from huaweicloudsdkoptverse.v2 import * 配置客户端连接参数 默认配置 # 使用默认配置,如出现'HttpConfig' is not defined报错,请检查是否已正确安装sdk config = HttpConfig.get_default_config() 网络配置(可选) # 根据需要配置代理 config.proxy_protocol = 'http' config.proxy_host = 'proxy.huaweicloud.com' config.proxy_port = 80 config.proxy_user = 'username' config.proxy_password = 'password' 超时配置(可选) # 默认连接超时时间为60秒,读取超时时间为120秒,支持统一指定超时时长timeout=timeout,或分别指定超时时长timeout=(connect timeout, read timeout) config.timeout = 120 SSL配置(可选) # 根据需要配置是否跳过SSL证书校验 config.ignore_ssl_verification = True # 配置服务器端CA证书,用于SDK验证服务端证书合法性 config.ssl_ca_cert = ssl_ca_cert 配置认证信息 配置AK、SK、project_id信息。华为云通过AK识别用户的身份,通过SK对请求数据进行签名验证,用于确保请求的机密性、完整性和请求者身份的正确性。 使用永久AK和SK credentials = BasicCredentials(ak, sk) 认证参数说明: ak、sk:访问密钥信息,获取方法请参见获取AK/SK。 project_id:华为云项目ID,获取方法请参见准备工作。 初始化客户端 指定region方式(推荐) # 增加region依赖 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkoptverse.v2.region.optverse_region import OptVerseRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkoptverse.v2 import * # 初始化客户端认证信息,使用当前客户端初始化方式可不填 project_id/domain_id,以BasicCredentials为例 basic_credentials = BasicCredentials(ak, sk) # 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务OptVerse的 OptVerseClient 为例 client = OptVerseClient.new_builder() \ .with_http_config(config) \ .with_credentials(basic_credentials) \ .with_region(OptVerseRegion.value_of("cn-north-4")) \ .build() 指定云服务endpoint方式 # 指定终端节点,以 OptVerse 服务北京四的 endpoint 为例 endpoint = "https://optverse.cn-north-4.myhuaweicloud.com" # 初始化客户端认证信息,需要填写相应 project_id/domain_id,以初始化 BasicCredentials 为例 basic_credentials=BasicCredentials(ak, sk, project_id) # 初始化指定云服务的客户端 {Service}Client ,以初始化 Region 级服务OptVerse的 OptVerseClient 为例 client = OptVerseClient.new_builder() \ .with_http_config(config) \ .with_credentials(basic_credentials) \ .with_endpoint(endpoint) \ .build() endpoint是华为云各服务应用区域和各服务的终端节点,详情请查看 地区和终端节点 。 发送请求并查看响应 # 以调用天筹求解器查询任务列表接口ListTask为例 request = ListTaskRequest() request.service_type = "irregular-textile" response = client.list_task(request) print(response) 异常处理 表1 异常处理 一级分类 一级分类说明 二级分类 二级分类说明 ConnectionException 连接类异常 HostUnreachableException 网络不可达、被拒绝。 SslHandShakeException SSL认证异常。 RequestTimeoutException 响应超时异常 CallTimeoutException 单次请求,服务器处理超时未返回。 RetryOutageException 在重试策略消耗完成后,仍无有效的响应。 ServiceResponseException 服务器响应异常 ServerResponseException 服务端内部错误,Http响应码:[500,]。 ClientRequestException 请求参数不合法,Http响应码:[400, 500) # 异常处理 try: request = ListTaskRequest() request.service_type = "irregular-textile" response = client.list_task(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
  • 安装SDK 支持Python3及以上版本,执行python --version检查当前Python的版本信息。 使用SDK前,需要安装“huaweicloudsdkcore”和“huaweicloudsdkoptverse”。有两种安装方式,分别如下。 使用pip安装 # 安装核心库 pip install huaweicloudsdkcore # 安装OptVerse服务库 pip install huaweicloudsdkoptverse 使用源码安装 # 安装核心库 cd huaweicloudsdkcore-3.0.89 python setup.py install # 安装OptVerse服务库 cd huaweicloudsdkoptverse-3.0.89 python setup.py install
共100000条
提示

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