云服务器内容精选
-
API返回数据规格 数据服务适用于小批量数据的快速响应交互场景,不适用于将大量数据通过API的方式返回。当前通过数据服务API返回数据的规格如下表所示。 表5 API的返回数据条数限制 API分类 使用场景 数据源 默认规格(条) 配置类API 调试API DLI /MySQL/RDS/DWS 10 调用API DLI/MySQL/RDS/DWS 100 脚本类API 测试SQL - 10 调试API DLI 默认分页:100 自定义分页:1000 MySQL/RDS/DWS 默认分页:10 自定义分页:2000 调用API DLI 默认分页:100 自定义分页:1000 MySQL/RDS/DWS 默认分页:10 自定义分页:2000
-
共享版规格 数据服务共享版无具体的规格指标,在表3中给出了用户创建和使用API的相关配额说明。 如果您需要修改默认限制值,请参考如何申请扩大配额。 表3 数据服务使用限制明细 限制项 默认限制 能否修改 API分组数量 每个用户最多创建50个API分组。 √ API数量 每个用户最多创建200个API。 √ 后端策略数量 每个用户最多创建5个后端策略。 √ 应用数量 每个用户最多创建50个应用。应用配额包括用户自行创建的应用和API市场购买API生成的应用。 √ 流控策略数量 每个用户最多创建30个流控策略。 用户流量限制不超过API流量限制。 应用流量限制不超过用户流量限制。 源IP流量限制不超过API流量限制。 √ 访问控制策略数量 每个用户最多可以创建100个访问控制策略。 √ VPC通道数量 每个用户最多创建30个VPC通道。 √ 变量数量 每个分组在任意一个环境中,最多创建50个变量。 √ 弹性云服务器数量 每个VPC通道最多添加200个弹性云服务器。 √ 参数数量 每个API最多创建50个参数。 √ 发布历史数量 同一个API在每个环境中最多记录10条最新的发布历史。 √ 每个API的访问频率 不超过200次/秒。 √ 特殊应用 阈值不超过API流量限制值。 x 子 域名 访问次数 每个子域名每天最多可以访问1000次。 x 调用请求包的大小 API每次最大可以调用12M的请求包 x TLS协议 支持TLS1.1和TLS1.2,推荐使用TLS1.2。 x 实名认证 未实名认证的用户,无法进行任何的创建操作。 x
-
共享版与专享版对比 数据服务当前提供共享版与专享版两种服务方式。其中共享版数据服务即开即用但仅限于存量用户调测使用,专享版数据服务需要购买专享版集群增量包并在集群中管理API。 数据服务共享版当前仅限于华东-上海一、华北-北京四、华南-广州的存量用户调测使用,受限于服务稳定性和生命周期策略,不建议用于生产环境。 专享版数据服务常用于企业内部系统解耦,各服务部署在云上的VPC内,服务之间以RESTful API方式通信,通信链路在VPC内部进行,网络安全得到进一步保障。同时专享版实例支持前端或后端服务部署在公有网络,通过绑定弹性公网IP实现网络交互。 表1 共享版与专享版数据服务差异 差异项 共享版 专享版 计费 - 根据集群规格按包年包月计费。 按照API使用额度计费:每个工作空间具有10个API免费试用额度,超过试用配额每天每个API按1元收费。 网络访问 公网访问。 实例运行在虚拟私有云(VPC)中,在VPC内,使用实例子网地址调用API。 可通过开启公网入口与出口访问,允许外部服务调用API,及后端部署在外部网络环境中。 云市场售卖 API可在云市场公开售卖。 不支持将API上架到云市场公开售卖。 使用对象 小型用户。 物理隔离要求较低,能够开箱即用,快速实现API能力开放。 中大型用户。 专享版数据服务拥有物理隔离的独立集群, 更丰富的特性。 满足内部API调用跟API开放,独立的出、入网带宽选择。 数据服务的共享版与专享版在功能上的异同点如下表所示。 表2 共享版与专享版数据服务功能差异 规格分类 规格描述 共享版 专享版 基本功能 精细化流控策略 30个 500个 IP&用户访问控制 √ √ 安全认证 √ √ API生命周期管理 √ √ 自定义域名 √ √ Excel导入导出 √ √ 支持VPC通道 √ √ API参数编排-配置方式 √ √ API参数编排-脚本方式 √ √ API参数编排-MyBatis方式 × √ API编排 × √ 注册现有API √ × 应用管理绑定API × √ 返回总条数 × √ API分组变量管理 √ √ 高级功能 自定义认证 √ √ 创建应用 50个 1000个 支持对接API云市场 √ × 支持协议 HTTP或HTTPS HTTPS 支持API策略路由 √ √ 运维分析展示 √ √ 支持后端负载均衡 × √ 支持内部API管理 × √ 后端支持对接私有云 × √ 支持对接专线服务 × √ 性能指标 独立物理多租集群 × √ 出、入网带宽独立 × √ 推荐每秒请求次数 200TPS 8000-30000TPS
-
约束与限制 对于数据服务共享版 IAM 认证方式的API,系统已默认记录了当前账号的白名单,不支持删除,因此共享版IAM认证方式的API无需进行授权即可进行调用。而专享版中使用IAM认证方式的API则必须先通过应用或白名单授权才能调用。 申请API授权时,仅支持通过应用授权的方式,暂不支持白名单授权方式。 APP认证方式的API只能授权给APP类型的应用。 IAM认证方式的API只能授权给IAM类型的应用。
-
操作场景 DataArts Studio 数据服务的API流量控制基于指定规则对API的访问流量进行调节控制的限流策略,能够提供多种维度的后端服务保护功能。当前API流控支持通过用户、应用和时间段等不同维度限制API的调用次数。 为了提供持续稳定的服务,您需要通过创建并选择流控策略,针对部分API进行流量控制。流控策略和API本身是相互独立的,只有将流控策略绑定API后,流控策略才对绑定的API生效。 同一个环境中一个API只能被一个流控策略绑定,一个流控策略可以绑定多个API。
-
API开放方使用流程 您作为API提供者,需要实现一个或一组API的开放,那么您需要先后完成以下工作: 购买并管理专享版集群 如果您需要使用数据服务专享版,需要先购买专享版集群。 新建数据服务审核人 在创建API前,需要新建数据服务审核人。 创建API 创建API即生成API和注册API。其中,生成API支持两种方式(配置方式生成API和脚本/MyBatis方式生成API)。 调试API API创建后需要验证服务是否正常,管理控制台提供了调试功能。 发布API 只有将API发布后,API才支持被调用。 管理API 您可以根据您的需要,对已创建发布的API进行管理。 编排API 编排API是将已经开发好的服务API接口,在无需编写复杂代码的情况下,根据特定的业务逻辑和流程进行可视化的重组和重构,从而实现在不影响原生接口的前提下进行简便的二次开发。 (可选)配置流控策略 为了保护后端服务的稳定的考虑,您可以对API进行流量控制。 (可选)主动授权API 应用定义了一个API调用者的身份。对于使用APP或IAM认证方式的API,必须在API授权后,才能获得认证信息以用于API调用。
-
总览页面说明 在总览页用户可以看到丰富的监控数据视图。数据服务总览页面分别从API和APP的视角,统计了相关度量数据。 以专享版为例,监控视图各项指标含义介绍如下: 图2 API视角数据统计 表1 API视角数据统计 分类 指标 说明 数据总览区 已发布 统计已成功发布的API数量。 开发中 统计开发中的API数量。 申请者 统计已发布API所授权的应用数量。 总调用 近7天(不含当天)所有集群下API的调用总次数。 成功 统计API调用成功的次数。 失败 统计API调用失败的次数。 合法 统计API合法调用的总次数,合法调用指校验通过的调用。 非法 统计API非法调用的总次数,非法调用指由于请求参数填写错误等原因导致的校验不通过的调用。 趋势图 调用趋势 展示所选时间维度下,集群维度的API调用次数曲线。 时间维度:近12小时,近1天,近7天,近 30天 集群维度:单集群,所有集群 调用次数:调用总次数、成功次数/失败次数、合法次数/非法次数 发布趋势 展示所选时间维度下,API发布次数曲线。 时间维度:今日、本周、本月、今年。 TOP5统计 调用比率TOP5 统计所选时间维度下,按照集群维度的API调用比率,排序出TOP5 API。 时间维度:近12小时,近1天,近7天,近 30天 集群维度:单集群,所有集群 比率:成功率、失败率、合法率、非法率 调用时间TOP5 统计所选时间维度下,按照集群维度的API调用时长,排序出TOP5 API。 时间维度:近12小时,近1天,近7天,近 30天 集群维度:单集群,所有集群 时长:时长平均总值、成功时长平均总值,失败时长平均总值 总调用次数TOP5 统计所选时间维度下,按照集群维度的API调用次数(同一API授权不同应用则合并计数),排序出TOP5 API。 时间维度:近12小时,近1天,近7天,近 30天 集群维度:单集群,所有集群 调用次数:调用总次数、成功次数、失败次数、合法次数和非法次数。 单API调用次数TOP5 统计所选时间维度下,按照集群维度的API调用次数(同一API授权不同应用则分开计数),排序出TOP5 API。 时间维度:近12小时,近1天,近7天,近 30天 集群维度:单集群,所有集群 调用次数:调用总次数、成功次数、失败次数、合法次数和非法次数。 图3 APP视角数据统计 表2 APP视角数据统计 分类 指标 说明 数据总览区 已申请 统计所有API授权的APP数量。 总调用 近7天(不含当天)所有集群下APP和IAM证方式API的调用总次数。 成功 统计APP和IAM认证方式API调用成功的次数。 失败 统计APP和IAM认证方式API调用失败的次数。 合法 统计APP和IAM认证方式API合法调用的总次数,合法调用指校验通过的调用。 非法 统计APP和IAM认证方式API非法调用的总次数,非法调用指由于请求参数填写错误等原因导致的校验不通过的调用。 趋势图 调用趋势 展示所选时间维度下,所有集群的APP和IAM认证方式API调用次数曲线。 时间维度:近12小时,近1天,近7天,近 30天 调用次数:调用总次数、成功次数/失败次数、合法次数/非法次数 TOP5统计 调用比率TOP5 统计所选时间维度下,所有集群的APP和IAM认证方式API调用比率,排序出TOP5 API。 时间维度:近12小时,近1天,近7天,近 30天 比率:成功率、失败率、合法率、非法率 调用时间TOP5 统计所选时间维度下,所有集群的APP和IAM认证方式API调用时长,排序出TOP5 API。 时间维度:近12小时,近1天,近7天,近 30天 时长:时长平均总值、成功时长平均总值,失败时长平均总值 总调用次数TOP5 统计所选时间维度下,所有集群的APP和IAM认证方式API调用次数(同一API授权不同应用则合并计数),排序出TOP5 API。 时间维度:近12小时,近1天,近7天,近 30天 调用次数:调用总次数、成功次数、失败次数、合法次数和非法次数。 单APP调用次数TOP5 统计所选时间维度下,所有集群的APP和IAM认证方式API调用次数(同一API授权不同应用则分别计数),排序出TOP5 API。 时间维度:近12小时,近1天,近7天,近 30天 调用次数:调用总次数、成功次数、失败次数、合法次数和非法次数。
-
SDK调用常见错误码/错误信息 表1 常见错误码/错误信息 错误码 错误信息 错误原因 解决方案 DLM.0 null 表示API调用成功。 表示调用成功,无需处理。 APIG.0101 The API does not exist or has not been published in the environment API未发布 url错误 发布API 确认请求的url和实际url是否相同 APIG.0106 Orchestration error: Invalid header parameter: x-Authorization, required SDK未添加x-Authorization。 SDK使用前准备步骤3。 APIG.0106 Orchestration error: Invalid ___ parameter: ___, required 未传指定参数。 调用时上传此参数。 APIG.0201 Backend timeout 后端超时(API网关请求维持50秒后未收到返回结果,会返回此错误信息。) 请先确认数据服务访问日志,如果访问日志中有数据(数据略有延迟),则说明数据源取数时间过长,请尽量优化取数sql逻辑。 如果访问日志中无数据,请确认(共享版:数据服务gateway/专享版:数据服务集群)是否运行中。 APIG.0303 Incorrect app authentication information: app not found 应用不存在。 确认请求的key和secret是否准确。 APIG.0304 The app is not authorized to access the API 应用无权访问当前API。 确认API已授权给应用。 确认请求的key和secret是否准确。 APIG.0308 The throttling threshold has been reached: policy domain over ratelimit, limit:1000, time:1 day 域名的请求次数达到了给定的上限:1天1000次。 建议:去API网关,为分组绑定域名。 临时规避:切换分组。域名以分组为单位,每个分组限制独立计算。 DLM.4018 Api is not exist API不存在。 20200630版本前发布的API: 请确认调用时参数x-api-id的值,是否正确(该值为所访问API的ID,请向此API的提供者获取) 20200630版本后发布的API: 确认请求的url和实际url是否相同。 若为专享版刚发布的API,请稍作等待,API下发至集群存在短暂的延时。 其他(数据同步异常): 停用/下线对应API,然后恢复/发布。 尝试重启集群(逐个节点重启可避免业务影响)。 DLM.4094 Call api failed. 调用API失败。 确认调用所执行的SQL正确,可以正常使用(所执行SQL详见访问日志,仅API方可见)。 CDM 中代理异常,错误原因详见返回的DLG错误信息。 调用超时,若为DWS数据库,建议API采用自定义分页。 调用超时,请优化查询语句,确保数据库中能短时间内完成执行。 DLM.4211 Token invalid token校验不通过。 确认token是否正确。 确认token所属租户,是否已授权或已位于白名单中。 DLM.4312 Missing parameters: ___ 缺少指定参数。 调用时上传此参数。 400 App does not have permission to access API. 应用无权访问当前API。 确认API已授权给应用。 确认请求的key和secret是否准确。 确认API和APP的授权关系仍在有效期内。 401 Authorization not found. 签名信息未找到。 应用认证:SDK使用前准备步骤3。 发布到网关的专享版IAM认证:IAM认证的API发布到网关后,不支持直接访问集群的token认证形式。 401 Authorization format incorrect. 签名格式错误。 建议使用SDK生成签名。 401 Signing key not found. 签名密钥未找到。 确认请求的key和secret是否准确。 401 Signed header ___ not found. 签名头未找到。 请确认用于签名的header头参数在调用时上传了。 401 Header x-sdk-date not found. 签名头x-sdk-date未找到。 此参数为签名时自动生成,若通过其他方式调用,请将SDK签名后的此参数在调用时也进行上传。 401 Signature expired. 签名过期。 签名具有一定的有效期,当前签名已过期,请重新生成签名。 请确认本地时间和实际时间是否一致。 如果本地时间是准确的,请联系相关人员确认集群节点时间,可能节点时间存在异常。 401 Verify authorization failed. 签名校验失败。 请确认进行签名的所有参数,均已上传且和签名时相同,包括且不限于url、path、header、query、body等。 说明: 如果自行对接了第三方网关等,请求地址和数据服务展示的地址不一致,需要在请求头中补充参数x-forwarded-host,值为签名时使用的请求地址。 如果使用get请求,不要定义body体。 DLG.0902 Fail to call the agent. For details about No matching constant for [-1], see the CDM logs. CDM上的代理拒绝服务。 SQL执行时间过长 CDM资源不足了 确认SQL执行时长,如果时间过长,建议优化SQL(默认分页的话则建议使用自定义分页)。 如果SQL执行时间较短,当前没有其他服务正在作业的话,重启CDM。 DAYU.1088 Failed to process the request sent by the agent. CDM无响应。 尝试重启CDM。 可能是CDM升级引起,考虑新买一个CDM。 父主题: 数据服务SDK参考
-
URI URI格式: POST http://{Endpoint}/rdm_{appID}_app/services/dynamic/api/{entityName}/find/{pageSize}/{curPage} 参数说明: 表1 URI参数说明 参数 是否必填 参数类型 描述 Endpoint 是 String 承载REST服务端点的服务器域名或IP地址。 appID 是 String 应用ID。 entityName 是 String 实体的英文名称。 pageSize 否 String 分页查询时,每页最多展示的记录数。 curPage 否 String 分页查询的页数。
-
请求示例 示例背景 已在设计态构建一个名称为“employee”的数据实体,该实体自定义了“age”和“gender”两个属性,并完成了实体发布、应用发布和应用部署。 已在运行态通过控制台或API的方式创建多个 数据实例 。 需要查询“gender”为“男性”的数据实例,且结果需要先按名称倒序排序,再按年龄倒序排序。 示例代码 { "params": { "sorts": [ { "sort": "DESC", "orderBy": "name" }, { "sort": "DESC", "orderBy": "age" } ], "filter": { "joiner": "and", "conditions": [ { "conditionName": "gender", "operator": "=", "conditionValues": [ "男" ] } ] }, "isNeedTotal": true } }
-
响应示例 { "result": "SUC CES S", "data": [ { "id": "455304645330341888", "creator": "test1 3c03e719256a427eb9277b64fcXXXXXX", "createTime": "2023-01-13T01:38:07.000+00:00", "modifier": "test1 3c03e719256a427eb9277b64fcXXXXXX", "lastUpdateTime": "2023-01-13T01:38:07.000+00:00", "rdmVersion": 1, "rdmExtensionType": "People", "rdmDeleteFlag": 0, "tenant": { "id": "-1", "clazz": "Tenant" }, "className": "People", "name": "李四", "description": null, "kiaguid": null, "securityLevel": "internal", "gender": "男", "age": 20 }, { "id": "455304534248394752", "creator": "test1 3c03e719256a427eb9277b64fcXXXXXX", "createTime": "2023-01-13T01:37:40.000+00:00", "modifier": "test1 3c03e719256a427eb9277b64fcXXXXXX", "lastUpdateTime": "2023-01-13T01:37:40.000+00:00", "rdmVersion": 1, "rdmExtensionType": "People", "rdmDeleteFlag": 0, "tenant": { "id": "-1", "clazz": "Tenant" }, "className": "People", "name": "张三", "description": null, "kiaguid": null, "securityLevel": "internal", "gender": "男", "age": 18 } ], "errors": [], "pageInfo": { "curPage": 1, "pageSize": 20, "totalRows": 2, "totalPages": 1 } }
-
请求参数 根据实体类型、功能的不同,请求body参数不同,您可以在全量数据服务查看API具体参数。为篇幅起见,这里只展示部分内容。 表2 请求body参数 参数 是否必填 参数类型 描述 sorts 否 List 排序。 sort 否 String 排序方式(asc/desc)。 orderBy 否 String 排序字段,可填写模型自身属性、参考对象的属性、扩展属性及分类属性。 filter 否 Object 查询条件。 isNeedTotal 否 Boolean 是否需要查询总记录数(false/true)。
-
响应参数 状态码:200 表9 响应Body参数 参数 参数类型 描述 result String 参数解释: 请求结果。 取值范围: SUCCESS:请求成功。 FAIL:请求失败。 默认取值: 不涉及。 data Array of longs 参数解释: 请求操作数据数量。 取值范围: 不涉及。 默认取值: 不涉及。 errors Array of strings 参数解释: 异常信息。 取值范围: 不涉及。 默认取值: 不涉及。
-
请求示例 POST https://dme.cn-north-4.huaweicloud.com/rdm_b3f9b7523a6141f4b2d76b92d6595281_app/publicservices/api/PersistableModel/logicalDeleteByCondition { "applicationId" : "b3f9b7523a6141f4b2d76b92d6595281", "params" : { "condition" : { "characterSet" : "UTF8", "isNeedTotal" : true, "isPresentAll" : true, "publicData" : "INCLUDE_PUBLIC_DATA", "decrypt" : false, "filter" : { "joiner" : "and", "ignoreStr" : false, "conditions" : [ { "conditionName" : "id", "conditionValues" : [ "666" ], "operator" : "=", "ignoreStr" : false } ] }, "sorts" : [ ] }, "modifier" : "test1" } }
-
URI POST /rdm_{identifier}_app/publicservices/api/{modelName}/logicalDeleteByCondition 表1 路径参数 参数 是否必选 参数类型 描述 identifier 是 String 参数解释: 应用唯一标识。 约束限制: 不涉及。 取值范围: 由英文字母和数字组成,且长度为32个字符。 默认取值: 不涉及。 modelName 是 String 参数解释: 数据模型的英文名称。 约束限制: 不涉及。 取值范围: 大写字母开头,只能包含字母、数字、“_”,且长度为[1-60]个字符。 默认取值: 不涉及。