华为云用户手册

  • 计费样例 表2中,网格管理规模指服务网格可管理的最大实例数(Pod个数)。 表2 收费样例 网格类型 计费模式 网格管理规模 实例数规模阶梯 收费(元/小时) 企业版网格 按需计费 5000实例 0-20 4.2(20实例 * 0.21元/小时每实例) 说明: 购买成功后即开始计费。治理不足20实例时,按20实例数收取费用。 21-5000 实例数 * 0.21元/小时每实例 说明: 购买成功后即开始计费。超过20实例时,按实际实例数收取费用。 基础版网格 免费 200实例 0-200 免费 专有网格 按需计费 20实例 0-20 免费 说明: 网格管理规模为20实例,目前不收取费用。 按需计费 5000实例 0-5000 实例数 * 0.21元/小时每实例 说明: 网格管理规模为5000实例,购买成功后即开始计费,按实际实例数收取费用。 以上价格为举例,实际价格以创建集群时的价格为准。
  • 优势 内置灰度流程:基于细粒度的分流规则,在ASM中内置了多种典型的灰度发布流程,提供一个灰度发布的向导,方便用户便捷的进行灰度发布实践。在一个服务版本正常工作,正常处理流量的同时,用户可以创建一个新的灰度版本。当灰度版本启动成功后,引导用户配置灰度规则来切分流量。 灵活的灰度策略:灰度规则可以是基于权重的按比例切分流量,也可以根据服务访问的内容来将特定内容的请求发往灰度版本,对于常用的HTTP协议,如请求中的OS、浏览器、Cookie和Header信息等,在配置了灰度规则后,可以实时的观察到多个线上版本的运行和访问信息,从而在向导中一键式完成版本选择,将所有流量都切换到最终选定的版本上。 多集群上灰度:在多集群场景下,基于ASM灵活的分流能力,用户可以选择将灰度版本和生产版本部署在不同的集群,渐进的切分流量。这样不只是把开发和生产环境的流量打通,可以通过流水线配合将开发和生产的流程打通。
  • 优势 无侵入的迁移方案:对于大量当前使用传统SDK开发的服务,当要使用服务网格能力时,ASM提供了一套迁移业务无侵入的迁移方案。在服务调用方将Outbound的流量引流到网格的数据面上来。即短路原有SDK里的服务发现和负载均衡,直接通过Kubernetes的服务名访问,使用Kubernetes的服务发现,SDK里的治理逻辑也可逐步的被网格替换。这样服务的运行治理能力都下沉到由Kubernetes和服务网格提供的基础设施上。 统一策略管理:控制面使用ASM统一的控制面做服务发现和治理规则管理,不需要独立的注册中心和配置中心;数据面的服务发现、负载均衡和各种治理都在ASM数据面Envoy上执行,SDK作为开发框架,回归到开发框架的本来职能,作为一个纯净轻量的应用开发框架供用户开发代码。 多种基础设施:在方案中,数据面可以是容器,也可以是VM。服务可以是各种语言,本身开发框架也没有限制。统一通过网格的控制面下发流量规则,对所有形态的数据面进行一致的管理。
  • 优势 重试:服务访问失败自动重试,从而提高总体访问成功率和质量。支持配置HTTP请求重试次数、重试超时时间和重试条件。 超时:服务访问超时自动处理,快速失败,从而避免资源锁定和请求卡顿。支持配置HTTP请求超时时间。 连接池:通过连接池管理,可以对四层协议配置TCP的最大连接数、连接超时时间、最大无响应次数、最短空闲时间和健康检查间隔,对七层协议配置HTTP最大请求数、最大重试次数、最大等待请求数、每连接最大请求数、连接最大空闲时间,从而防止一个服务的失败级联影响到整个应用。 熔断:通过熔断配置实例被驱逐前的连续错误次数、驱逐间隔时长、最小驱逐时间、最大驱逐比例等参数,从而定期考察被访问的服务实例的工作情况,如果连续出现访问异常,则将服务实例标记为异常并进行隔离,在一段时间内不为其分配流量。过一段时间后,被隔离的服务实例会再次被解除隔离,尝试处理请求,如果还不正常,则被隔离更长的时间。从而实现异常服务实例的故障隔离和自动故障恢复。 负载均衡:配置各种负载均衡策略,如随机、轮询、最少连接,还可以配置一致性哈希将流量转发到特定的服务实例上。 HTTP头域:灵活增加、修改和删除指定HTTP头域,包括将HTTP请求转发到目标服务之前对Headers的操作,以及将HTTP响应回复给客户端前,对Headers的操作,以非侵入方式管理请求内容。 故障注入:通过对选定的服务注入中断故障、延时故障来构造故障场景,无需修改代码即可进行故障测试。
  • 基础版、企业版及社区开源版本对比 大类 功能项 功能点 社区开源版本 基础版 企业版 规格 管理规模 支持最大管理实例数 - 200 5000 基础功能 服务发现和服务注册 通过服务中心集群获取服务列表、服务实例状态自动刷新、容器服务自动服务注册,业务无需实现注册逻辑、容器服务自动服务发现,业务无需实现发现订阅逻辑、服务实例副本数动态管理 √ √ √ 服务多版本 服务创建分版本管理、支持分版本进行监控 - √ √ 支持分版本进行服务负载管理 √ √ √ 服务多端口 支持管理多个端口的服务、支持管理多个端口多协议的服务 √ √ √ 灰度发布支持多端口 - √ √ 服务多形态 支持容器类型的服务后端 √ √ √ 协议及语言支持 HTTP协议灰度、治理、监控(根据协议特征不同细节不同,参照协议功能矩阵)、gRPC协议灰度、治理、监控(根据协议特征不同细节不同,参照协议功能矩阵)、开发语言无关、开发框架不限定、业务代码无侵入 √ √ √ 应用网关 支持四层协议对外访问、支持七层协议对外访问、支持入口路径映射、支持网关处TLS终止,支持配置对外证书和密钥 √ √ √ 负载均衡 支持轮询、随机、最小连接数以及一致性哈希的LB算法,可以基于特定的HTTP Header,或者基于Cookie值 √ √ √ 故障注入 支持注入指定时延或特定错误的故障,支持配置故障百分比 √ √ √ 熔断 支持配置最大请求数、每连接最大请求数、最大等待请求数、最大重试次数等七层请求管理;支持配置最大连接数、连接超时时间等四层连接管理;支持异常点检查、故障实例的自动隔离和自动恢复 √ √ √ 治理流量类型 支持对服务间内部通信流量进行治理、支持对服务外网访问流量(即Ingress流量)进行治理 √ √ √ 运行环境支持 支持容器应用治理 √ √ √ 认证 非侵入的双向TLS认证和通道加密 √ √ √ 授权 服务访问授权管理 √ √ √ 灰度发布 支持基于浏览器、操作系统、自定义HTTP Header、Cookie内容等配置灰度分流策略,支持基于URL配置灰度分流策略,支持基于请求参数、流量权重的灰度发布 √ √ √ 支持金丝雀灰度发布模板 - √ √ 支持蓝绿灰度发布模板 - √ √ 支持灰度发布过程中服务运行情况的监控以辅助灰度发布决策 - √ √ 支持灰度发布过程中服务请求情况的监控以辅助灰度发布决策 - √ √ 灰度发布时动态配置服务实例数 - √ √ 支持灰度发布过程中动态的流量比例监控 - √ √ 应用拓扑 提供应用下服务调用关系的全局拓扑 - √ √ 提供拓扑图上各个服务间请求数、异常请求数等重要指标 - √ √ 实时应用拓扑查看 - √ √ 链路跟踪/调用链 支持非侵入调用链埋点 √ √ √ 指标监控 提供服务实例CPU、内存、磁盘等运行数据监控,提供服务访问RPS、时延等访问指标的监控,提供对访问指标、异常指标的统计分析,支持对接Prometheus等开源Metric组件,支持通过配置对接不同的Metric后端 √ √ √ 访问日志 访问日志非侵入采集 √ √ √ 安装 支持现有、新建Kubernetes集群按需一键安装启用Istio能力 - √ √ 升级 支持控制面平滑升级,不中断应用业务 √ √ √ 支持数据面平滑升级,不中断应用业务 √ √ √ 插件管理 支持社区插件按需一键安装,支持Grafana、Prometheus - √ √ 支持社区插件按需一键安装,支持Tracing插件 - √ √ 支持社区插件按需一键安装,支持Kiali插件 - √ √ 支持社区插件按需一键安装,支持ELK插件 - √ √ API 非企业版网格提供基于CCE接口的开放社区兼容的流量规则配置 √ √ √ 代理管理 透明流量拦截、基于Iptables流量拦截、支持代理自动注入、支持Namespace级别和工作负载级别的注入管理 √ √ √ 代理形态 支持每Pod的Sidecar模式 √ √ √ 命令行工具 支持使用命令行进行流量策略管理(如istioctl、kubectl) - √ √ 企业版高阶能力 多集群 支持扁平网络多集群统一流量治理 - - √ 灰度发布 支持灰度负载部署在多集群,支持跨集群的灰度流量 - - √ 应用拓扑 应用拓扑可以下钻到版本或实例级别观测对应的服务访问指标 - - √ 提供按时段观察应用拓扑 - - √ 支持跨集群应用拓扑 - - √ 链路跟踪/调用链 支持全服务请求链的链路追踪 - - √ 支持基于时间、异常、响应时间等指标的检索 - - √ 支持对调用详细信息的查看,快速定位 - - √ 支持跨集群的调用链 - - √ 支持对接第三方调用链系统 - - √ SpringCloud SpringCloud服务发现配置修改复用网格服务发现和能力 - - √ SpringCloud框架ASM结合最佳实践 - - √ 安装 支持控制面按照与应用运行节点独享/共享方式运行 - - √
  • 响应示例 状态码: 200 成功响应示例 Http Status Code: 200{ "data": { "schema": [ { "label": "__DEFAULT__" }, { "label": "friends" }, { "label": "movie", "properties": [ { "name": "ChineseTitle", "type": "string", "cardinality": "single" }, { "name": "Year", "type": "int", "cardinality": "single" }, { "name": "Genres", "type": "string", "cardinality": "set" } ] }, { "label": "user", "properties": [ { "name": "Name", "type": "string", "cardinality": "single" }, { "name": "Gender", "probableValue": [ "", "F", "M" ], "type": "enum", "cardinality": "single" }, { "name": "Age", "probableValue": [ "", "Under 18", "18-24", "25-34", "35-44", "45-49", "50-55", "56+" ], "type": "enum", "cardinality": "single" }, { "name": "Occupation", "type": "string", "cardinality": "single" }, { "name": "Zip-code", "type": "char array", "cardinality": "single" } ] }, { "label": "rate", "properties": [ { "name": "Score", "type": "int", "cardinality": "single" }, { "name": "Datetime", "type": "date", "cardinality": "single" } ] } ] }} 状态码: 400 失败响应示例 Http Status Code: 400{ "errorMessage": "graph [demo] is not found", "errorCode": "GES.8003"}
  • 优势 非侵入监控数据采集:在复杂应用的场景下,服务间的访问拓扑,调用链,监控等都是对服务整体运行状况进行管理,服务访问异常时进行定位定界的必要手段。服务网格技术的一项重要能力就是以应用非侵入的方式提供这些监控数据的采集,用户只需关注自己的业务开发,无需额外关注监控数据的生成。 丰富APM能力:ASM基于网格生成服务访问数据,集成各种不同的APM服务,提供跨集群智能的服务运行管理。包括跨集群的服务调用链、服务访问拓扑和服务运行健康状态。通过跨集群的全局视图来关联服务间的访问状况。 灵活的服务运行管理:在拓扑图上通过服务的访问数据,可以直观的观察到服务的健康状况,服务间的依赖情况。并且可以对关心的服务进行下钻,从服务级别下钻到服务版本级别,还可以进一步下钻到服务实例级别。通过实例级别的拓扑可以观察到配置了熔断规则后,网格如何隔离故障实例,使其逐渐接收不到流量。并且可以在故障实例正常时,如何进行实例的故障恢复,自动给恢复的实例重新分配流量。
  • 应用服务网格与其他服务的关系 表1 应用服务网格与其他服务的关系 服务名称 应用服务网格与其他服务的关系 主要交互功能 云容器引擎 CCE 云容器引擎(Cloud Container Engine,CCE)提供高可靠高性能的企业级容器应用管理服务,支持Kubernetes社区原生应用和工具,简化云上自动化容器运行环境搭建。 您可以为CCE集群启用服务网格功能,对集群中的服务进行治理。 购买CCE集群 弹性负载均衡 ELB 弹性负载均衡(Elastic Load Balance,ELB)将访问流量自动分发到多台云服务器,扩展应用系统对外的服务能力,实现更高水平的应用容错。 您可以通过弹性负载均衡从外部访问应用服务网格。 创建共享型负载均衡器 应用性能管理 APM 应用性能管理(Application Performance Management,APM)实时监控并管理云应用性能和故障的云服务,提供专业的分布式应用性能分析能力,可以帮助运维人员快速解决应用在分布式架构下的问题定位和性能瓶颈等难题,为用户体验保驾护航。 您可以使用应用性能管理,对应用服务网格中运行的服务进行全链路拓扑管理和分布式调用链追踪,方便您快速进行故障定位和根因分析。 全链路拓扑 调用链
  • 响应参数 表2 响应Body参数说明 参数 类型 说明 errorMessage String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误信息。 errorCode String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误码。 data Object 查询结果。请求失败时字段为空。 表3 data参数说明 参数 类型 说明 schema List 各label与关联的property字段定义。
  • 响应示例 状态码: 200 成功响应示例 Http Status Code: 200{ "data": { "runtime": 0.775425022, "vertices": [ { "id": "Vivian", "label": "user", "properties": { "Occupation": [ "artist" ], "Name": [ "薇薇安" ], "Zip-code": [ "98133" ], "Gender": [ "F" ], "Age": [ "25-34" ] } }, ...... ] }} 状态码: 400 失败响应示例 Http Status Code: 400{ "errorMessage": "org.apache.tinkerpop.gremlin.driver.exception.ResponseException: No such property: g1 for class: Script4", "errorCode": "GES.8503"}
  • 请求示例 执行Gremlin查询操作,输入的查询命令为g.V().limit(100)表示查询所有点,但限制点的返回数量为100。 POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=execute-gremlin-query{ "command":"g.V().limit(100)" } SERVER_URL:图的访问地址,取值请参考业务面API使用限制。 请求body体大小不能超过64M。
  • 请求示例 执行指定算法,算法名字为pagerank,算法的权重系数为0.85,收敛精度为0.00001,最大迭代次数为1000,考虑边的方向。 POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/action?action_id=execute-algorithm{ "algorithmName":"pagerank", "parameters":{ "alpha":0.85, "convergence":0.00001, "max_iterations":1000, "directed":true }} SERVER_URL:图的访问地址,取值请参考业务面API使用限制。
  • 响应参数 表2 响应Body参数说明 参数 类型 说明 errorMessage String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误信息。 errorCode String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误码。 jobId String 执行算法任务ID。请求失败时,该字段为空。 说明: 可以查询jobId查看任务执行状态、获取返回结果,详情参考Job管理API。 jobType Integer 任务类型。请求失败时,该字段为空。
  • 响应示例 状态码: 200 成功响应示例 Http Status Code: 200{ "jobId": "4448c9fb-0b16-4a78-8d89-2a137c53454a001679122","jobType": 1} 状态码:4200 失败响应示例 Http Status Code: 400{"errorMessage":"graph [demo] is not found","errorCode":"GES.8402"}
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 errorMessage String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误信息。 errorCode String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误码。 jobId String 图备份任务ID。 说明: 可以查询jobId查看任务执行状态、获取返回结果,详情参考任务中心API。
  • 请求示例 查询路径详情,需要查询的路径分别为Ray,Lethal Weapon和Alice,不设置查询方向。 post http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/paths/action?action_id=query-detail{ "paths":[ [ "Ray", "Lethal Weapon", "Alice" ] ], "directed":false} SERVER_URL:图的访问地址,取值请参考业务面API使用限制。
  • 响应示例 状态码: 200 成功响应示例 Http Status Code: 200{ "data": { "outputs":{ "paths":[ [ { "id":"Ray", "label":"user", "properties":{ "Name":["雷"], "Gender":["M"], "Age":["18-24"], "Occupation":["college/grad student"], "Zip-code":["90241"] } }, { "edges":[ { "source":"Ray", "target":"Lethal Weapon", "index":"1", "label":"rate", "properties":{ "Score":[2], "Datetime":["2000-11-22 19:16:16"] } } ] }, { "id":"Alice", "label":"user", "properties":{ "Name":["爱丽丝"], "Gender":["F"], "Age":["25-34"], "Occupation":["academic/educator"], "Zip-code":["79928"] } } ] ] } }} 状态码: 400 失败响应示例 Http Status Code: 400{"errorMessage":"graph [demo] is not found","errorCode":"GES.8107"}
  • 响应参数 表3 响应Body参数说明 参数 类型 说明 errorMessage String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误信息。 errorCode String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误码。 data Object 查询结果。 查询失败时,字段为空。 表4 data参数说明 参数 类型 说明 outputs Object 包含path的查询返回结果。 paths List JsonArray格式,包含具有点和边详细信息的路径集合。 说明: 返回路径中: 当点不存在时,对应位置为“{}”; 当两点之间不存在边时,对应位置为"{"edges":[]}"
  • 请求示例 进行添加点操作,点名称为Lily,点的标签为user。 POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/vertices{ "vertex":"Lily", "label":"user", "properties":{ "Age":[ "under 18" ], "Gender":[ "F" ], "Occupation":[ "aritist" ], "Zip-code":[ "98133" ] }} SERVER_URL:图的访问地址,取值请参考业务面API使用限制。
  • 请求示例 进行删除边操作,待删除边的起点名称为Vivian,终点名称为Lethal,边index值为0,边的label值为rate,属性名称为Score,属性值为5。 DELETE http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/edges?source=Vivian&target=Lethal Weapon&index=0&label=rate&property=Score&value=5 SERVER_URL:图的访问地址,取值请参考业务面API使用限制。
  • 请求参数 表1 Body参数说明 参数 是否必选 类型 说明 project_id 是 String 项目ID。获取方法请参见获取项目ID。 graph_name 是 String 图名称。 source 是 String 起点名称。 target 是 String 终点名称。 index 否 Integer 边index。 若已设置属性信息,则忽略index值。 若未设置属性信息,则根据index值进行边的删除。 若属性信息和index值均未设置,则删除source、target之间所有的边。 label 否 String 边的label值,可加速属性值的查找,必须和属性信息一起出现。 property 否 String 待删除边的属性名称,必须和value一起出现。 value 否 String 待删除边的属性值,必须和property一起出现。
  • 请求示例 (不包括图规格为持久化版)添加label,label的名称为book,label一共有三个待添加的属性。 POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/schema/labels { "name": "book", "properties": [ { "property": { "name": "Title", "cardinality": "single", "dataType": "string" } }, { "property": { "name": "Version", "cardinality": "single", "dataType": "string" } }, { "property": { "name": "Category", "typeName1": "science", "typeName2": "literature", "typeNameCount": "2", "cardinality": "single", "dataType": "enum" } } ]} 请求样例(持久化版)添加label,label的名称为book,label有一个待添加的属性。 POST http://{SERVER_URL}/ges/v1.0/{projectId}/graphs/{graphName}/schema/labels { "name": "book", "properties": [ "Title", "Version", "Category" ]} SERVER_URL:图的访问地址,取值请参考业务面API使用限制。
  • 响应参数 表5 要素说明 参数 类型 说明 errorMessage String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误信息。 errorCode String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误码。 result String 响应结果。成功时result值为success,失败时值为failed。 cause(持久化版) String 系统提示信息,执行成功时,字段可能为空。执行失败时,用于显示错误信息。
  • 响应示例 状态码: 200 成功响应示例 Http Status Code: 200{ "jobId": "fb74314e-a82d-41b2-8900-96e2559fa0d9000168232", "jobType": 9} 状态码: 400 失败响应示例 Http Status Code: 400{ "errorMessage": "graph [demo] is not found", "errorCode": "GES.8604 "}
  • 响应参数 表2 要素说明 参数 类型 说明 errorMessage String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误信息。 errorCode String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误码。 jobId String 执行该异步任务的jobId。 说明: 可以查询jobId查看任务执行状态、获取返回结果,详情参考Job管理API。 图规格为持久化版的图,暂不支持该参数。 jobType String 执行该异步任务的jobType。
  • 响应参数 表3 响应Body参数说明 参数 类型 说明 errorMessage String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误信息。 errorCode String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误码。 jobId String 执行该异步任务的jobId。 说明: 可以查询jobId查看任务执行状态、获取返回结果,详情参考Job管理API。 jobType String 执行该异步任务的jobType。 result String 成功时result值为success。
  • 功能介绍 根据给定的indexName,IndexType等信息创建索引。目前支持两种索引:复合索引和全文索引。 复合索引有全局点索引(GlobalCompositeVertexIndex)和全局边索引(GlobalCompositeEdgeIndex)。复合索引可在label和property上创建索引,使用索引查询可以加快速度。 全文索引(FullTextIndex)可以实现全文搜索、模糊搜索等功能。由于全文索引的刷新机制,更新数据后立即查询可能查到的是旧数据,建议更新后间隔一秒以上再进行查询。全文索引的使用请查看点过滤查询和边过滤查询。您也可以使用cypher语句来执行全文索引,具体请查看cypher操作相关章节。 目前全文索引特性只在持久化版规格版本中支持。
  • 请求参数 表2 Body参数说明 参数 是否必选 类型 说明 indexName 是 String 索引名称。只能包含字母,数字,-和_。不能包含其他字符。索引名称的长度需在63字符以内。 indexType 是 String 索引的类型。区分大小写。“GlobalCompositeVertexIndex”为全局的Composite类型的点索引。 hasLabel 否 String 是否有label,默认为false。 true false hasLabel(持久化版) 否 Boolean 是否有label,默认为false。 true false indexProperty 否(若hasLabel为false或null,则该项为必选) String 索引的属性列表。 可以创建索引的属性类型有: integer、 float、 double、 long、 enum、 char array、 string、 date。 如果属性类型为string或者char array,属性长度建议不要超过40个字节,超出的部分会被截断。
  • 请求示例 创建复合索引,索引名称为ageIndex,索引类型为全局点索引。 POST http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/indices{ "indexName":"ageIndex", "indexType": "GlobalCompositeVertexIndex", "hasLabel": "true", "indexProperty": ["age"]} SERVER_URL:图的访问地址,取值请参考业务面API使用限制。
  • 响应示例 状态码: 200 成功响应示例 Http Status Code: 200{"jobId": "f99f60f1-bba6-4cde-bd1a-ff4bdd1fd500000168232","jobType": 8} 状态码: 400 失败响应示例 Http Status Code: 400{ "errorMessage": "graph [demo] is not found", "errorCode": "GES.8603"}
共100000条