华为云用户手册

  • SDK列表 表1介绍了CAE提供的支持的SDK列表,您可以在GitHub仓库查看SDK历史更新、获取安装包以及查看指导文档。 表1 SDK列表 编程语言 Github地址 参考文档 Java huaweicloud-sdk-java-v3 Java SDK使用指导 Python huaweicloud-sdk-python-v3 Python SDK使用指导 Go huaweicloud-sdk-go-v3 Go SDK使用指导
  • 日志字段说明 本章节介绍了AntiDDoS日志包含的日志字段。 表2 全量日志字段说明 字段 说明 logType 日志类型。默认为“ip_attack_sum”,攻击日志。 deviceType 上报日志的设备类型。默认为“CLEAN”,清洗设备。 inKbps 入流量(单位:kbps)。 maxPps 入流量峰值(单位:pps)。 dropPps 丢弃的流量均值(单位:pps)。 maxAttackInBps 攻击流量峰值时刻的入流量值(单位:bps)。 currentConn 当前连接数。 zoneIP 防护的IP。 logTime 日志产生的时间。 attackType 攻击类型,对应的攻击类型请参考表3。 inPps 入流量(单位:pps)。 maxKbps 入流量峰值(单位:kbps)。 dropKbps 丢弃的流量均值(单位:kbps)。 startTime 攻击开始时间。 endTime 攻击结束时间,为空时则表示攻击还未结束。 maxAttackInConn 攻击流量峰值时刻的连接数。 newConn 新建连接数。 表3 攻击类型说明 数值 攻击类型 0-9 自定义服务攻击 10 Syn Flood攻击 11 Ack Flood攻击 12 SynAck Flood攻击 13 Fin/Rst Flood攻击 14 并发连接数超过阈值 15 新建连接数超过阈值 16 TCP分片报文攻击 17 TCP分片BandWidth limit攻击 18 TCP BandWidth limit攻击 19 UDP flood攻击 20 UDP分片攻击 21 UDP分片BandWidth limit攻击 22 UDP BandWidth limit攻击 23 ICMP BandWidth limit攻击 24 Other BandWidth limit攻击 25 总流量限流 26 HTTPS Flood攻击 27 HTTP Flood攻击 28 保留 29 DNS Query Flood攻击 30 DNS Reply Flood攻击 31 Sip Flood攻击 32 黑名单丢弃 33 HTTP URL行为异常 34 TCP分片abnormal丢弃流量 35 TCP abnormal丢弃流量 36 UDP分片abnormal丢弃流量 37 UDP abnormal丢弃流量 38 ICMP abnormal攻击 39 Other abnormal攻击 40 Connection Flood攻击 41 域名劫持攻击 42 DNS投毒攻击报文 43 DNS反射攻击 44 超大DNS报文攻击 45 DNS源请求速率异常 46 DNS源回应速率异常 47 DNS域名请求速率异常 48 DNS域名回应包速率异常 49 DNS请求报文TTL异常 50 DNS报文格式异常 51 DNS Cache匹配丢弃攻击 52 端口扫描攻击 53 TCP Abnormal攻击(tcp 报文标记位异常) 54 BGP攻击 55 UDP关联防范异常 56 DNS NO such Name异常 57 Other 指纹攻击 58 防护对象限流攻击 59 HTTP慢速攻击 60 恶意软件防范 61 域名阻断 62 FILTER过滤 63 Web攻击抓包 64 SIP源限速攻击
  • 云审计服务支持的Anti-DDoS操作列表 云审计服务(Cloud Trace Service,CTS)记录了Anti-DDoS相关的操作事件,方便用户日后的查询、审计和回溯,具体请参见云审计服务用户指南。 云审计服务支持的Anti-DDoS操作列表如表1所示。 表1 CTS支持的Anti-DDoS操作列表 操作名称 事件名称 开启Anti-DDoS防护 OPEN_ANTIDDOS 修改Anti-DDoS防护配置 UPDATE_ANTIDDOS 设置LTS全量日志配置 UPDATE_LTS_CONFIG 批量添加/编辑TMS资源标签 UPDATE_RESOURCE_TAGS 批量删除TMS资源标签 DELETE_RESOURCE_TAGS 更新租户的告警提醒配置情况 UPDATE_ALERT_CONFIG 修改流量清洗阈值默认档位 UPDATE_DEFAULT_CONFIG 删除流量清洗阈值默认档位 DELETE_DEFAULT_CONFIG 父主题: 审计
  • 日志字段说明 本章节介绍了DDoS原生高级防护日志包含的日志字段。 表2 关键字段说明 字段 说明 currentConn 当前连接数。 maxInPps 入报文峰值(单位:pps)。 newConn 新建连接数。 deviceType 上报日志的设备类型。默认为“CLEAN”,清洗设备。 attackTypes 攻击类型,具体请参考表3。 zoneIP 防护的IP。 logType 日志类型。默认为“ip_attack_sum”,攻击日志。 maxDropPps 攻击报文峰值(单位:pps)。 maxInKbps 入流量峰值(单位:kbps)。 startTime 攻击开始时间。 endTime 攻击结束时间,为空时则表示攻击还未结束。 maxDropKbps 攻击流量峰值(单位:kbps)。 attackStatus 攻击状态。 ATTACK:攻击状态。 NORMAL:正常状态。 表3 攻击类型说明 数值 攻击类型 0-9 自定义服务攻击 10 Syn Flood攻击 11 Ack Flood攻击 12 SynAck Flood攻击 13 Fin/Rst Flood攻击 14 并发连接数超过阈值 15 新建连接数超过阈值 16 TCP分片报文攻击 17 TCP分片BandWidth limit攻击 18 TCP BandWidth limit攻击 19 UDP flood攻击 20 UDP分片攻击 21 UDP分片BandWidth limit攻击 22 UDP BandWidth limit攻击 23 ICMP BandWidth limit攻击 24 Other BandWidth limit攻击 25 总流量限流 26 HTTPS Flood攻击 27 HTTP Flood攻击 28 保留 29 DNS Query Flood攻击 30 DNS Reply Flood攻击 31 Sip Flood攻击 32 黑名单丢弃 33 HTTP URL行为异常 34 TCP分片abnormal丢弃流量 35 TCP abnormal丢弃流量 36 UDP分片abnormal丢弃流量 37 UDP abnormal丢弃流量 38 ICMP abnormal攻击 39 Other abnormal攻击 40 Connection Flood攻击 41 域名劫持攻击 42 DNS投毒攻击报文 43 DNS反射攻击 44 超大DNS报文攻击 45 DNS源请求速率异常 46 DNS源回应速率异常 47 DNS域名请求速率异常 48 DNS域名回应包速率异常 49 DNS请求报文TTL异常 50 DNS报文格式异常 51 DNS Cache匹配丢弃攻击 52 端口扫描攻击 53 TCP Abnormal攻击(tcp 报文标记位异常) 54 BGP攻击 55 UDP关联防范异常 56 DNS NO such Name异常 57 Other 指纹攻击 58 防护对象限流攻击 59 HTTP慢速攻击 60 恶意软件防范 61 域名阻断 62 FILTER过滤 63 Web攻击抓包 64 SIP源限速攻击
  • 日志字段说明 本章节介绍了DDoS高防日志包含的日志字段。 表2 实例攻击日志字段说明 字段 说明 ip 被攻击IP。 ip_id 被攻击IP的ID。 attack_type 攻击的类型。 attack_protocol 该字段尚未使用,默认是0。 attack_start_time 攻击开始时间,毫秒级时间戳。 attack_status 攻击状态。 ATTACK:攻击中。 NORMAL:攻击结束。 drop_kbits 分钟级别的最大攻击流量,单位“bit”。 attack_pkts 分钟级别的最大攻击报文数。 duration_elapse 已结束安全事件的持续时间,单位“秒”。 end_time 攻击结束时间,毫秒级时间戳。未结束的安全事件,该字段为0。 max_drop_kbps 攻击流量的峰值,单位“kbps”。 max_drop_pps 攻击报文的峰值,单位“pps”。 表3 实例攻击详情字段说明 字段 说明 attackStatus 攻击状态。 attackType 攻击状态。 ATTACK:攻击中。 NORMAL:攻击结束。 attackTypeDescCn 攻击类型(中文)。 attackTypeDescEn 攻击类型(英文)。 attackUnit 攻击单位。 attacker 攻击来源。 attackerKbps 攻击流量峰值,单位“kbps”。 attackerPps 攻击流量峰值,单位“pps”。 direction 日志方向。 inbound:入方向。 outbound:出方向。 dropKbits 丢弃的流量总数,单位“kbits”。 dropPackets 丢弃的报文总数。 duration 攻击持续时间,单位“秒”。 handleTime 处理日志时间。 logTime 日志时间。 logType 日志类型。 maxDropKbps IP丢弃流量峰值,单位“kbps”。 maxDropPps IP丢弃流量峰值,单位“pps”。 port 端口号。 startTimeAlert 异常开始时间。 timeScale 时间标识(处理分钟级或小时级数据的标识)。 valid 是否成功解析到日志。 writeTime 持久化时间。 zoneIP 防护IP。 startTimeAttack 攻击开始时间。 startTimeKey 对于同一个攻击不同时间的唯一标识。
  • 新旧版训练代码适配的差异 旧版训练中,用户需要在输入输出数据上做如下配置: #解析命令行参数 import argparse parser = argparse.ArgumentParser(description='MindSpore Lenet Example') parser.add_argument('--data_url', type=str, default="./Data", help='path where the dataset is saved') parser.add_argument('--train_url', type=str, default="./Model", help='if is test, must provide\ path where the trained ckpt file') args = parser.parse_args() ... #下载数据参数至容器本地,在代码中使用local_data_path代表训练输入位置 mox.file.copy_parallel(args.data_url, local_data_path) ... #上传容器本地数据至obs路径 mox.file.copy_parallel(local_output_path, args.train_url)
  • 如何提高训练作业资源利用率 适当增大batch_size:较大的batch_size可以让GPU/NPU计算单元获得更高的利用率,但是也要根据实际情况来选择batch_size,防止batch_size过大导致内存溢出。 提升数据读取的效率:如果读取一个batch数据的时间要长于GPU/NPU计算一个batch的时间,就有可能出现GPU/NPU利用率上下浮动的情况。建议优化数据读取和数据增强的性能,例如将数据读取并行化,或者使用NVIDIA Data Loading Library(DALI)等工具提高数据增强的速度。 模型保存不要太频繁:模型保存操作一般会阻塞训练,如果模型较大,并且较频繁地进行保存,就会影响GPU/NPU利用率。同理,其他非GPU/NPU操作尽量不要阻塞训练主进程太多的时间,如日志打印,保存训练指标信息等。
  • 相关操作 关闭MindInsight方式如下: 方式1:在开发环境JupyterLab中的.ipynb文件窗口中输入命令,关闭 MindInsight。端口号在启动MindInsight中设置,默认使用8080,需要替换为实际开启MindInsight时的端口。 !mindinsight stop --port 8080 方式2:单击下方按钮进入MindInsight实例管理界面,该界面记录了所有启动的MindInsight实例,单击对应实例后面的SHUT DOWN即可停止该实例。 图8 单击SHUT DOWN停止实例 方式3:单击下方红框中的按钮可以关闭所有启动的MindInsight实例。 图9 关闭所有启动的MindInsight实例 方式4(不推荐):直接在JupyterLab中上关闭MindInsight窗口,此方式仅是关闭MindInsight可视化窗口,并未关闭后台。
  • Step2 上传Summary数据 在开发环境中使用MindInsight可视化功能,需要用到Summary数据。 Summary数据可以直接传到开发环境的这个路径下/home/ma-user/work/,也可以放到OBS并行文件系统中。 Summary数据上传到Notebook路径/home/ma-user/work/下的方式,请参见上传数据至Notebook。 Summary数据如果是通过OBS并行文件系统挂载到Notebook中,请将模型训练时产生的Summary文件先上传到OBS并行文件系统,并确保OBS并行文件系统与ModelArts在同一区域。在Notebook中启动MindInsight时,Notebook会自动从挂载的OBS并行文件系统目录中读取Summary数据。
  • Step2 上传Summary数据 在开发环境中使用TensorBoard可视化功能,需要用到Summary数据。 Summary数据可以直接传到开发环境的这个路径下/home/ma-user/work/,也可以放到OBS并行文件系统中。 Summary数据上传到Notebook路径/home/ma-user/work/下的方式,请参见上传数据至Notebook。 Summary数据如果是通过OBS并行文件系统挂载到Notebook中,请将模型训练时产生的Summary文件先上传到OBS并行文件系统,并确保OBS并行文件系统与ModelArts在同一区域。在Notebook中启动TensorBoard时,Notebook会自动从挂载的OBS并行文件系统目录中读取Summary数据。
  • Step3 启动TensorBoard 在开发环境的JupyterLab中打开TensorBoard有多种方法。可根据使用习惯选择。 图1 JupyterLab中打开TensorBoard的方法 方式1(推荐): 在JupyterLab左侧导航创建名为“summary”的文件夹,将数据上传到“/home/ma-user/work/summary”路径。注:文件夹命名只能为summary否则无法使用。 进入“summary”文件夹,单击方式1,直接进入TensorBoard可视化界面。如图2所示。 图2 TensorBoard界面(1) 方式2: 用户可以自行升级除2.4.0之外的TensorBoard,但需注意升级后只有方式2使用新的TensorBoard,其余方式保持TensorBoard2.1.1不变。
  • 相关操作 关闭TensorBoard方式如下: 方式1:单击下图所示的,进入TensorBoard实例管理界面,该界面记录了所有启动的TensorBoard实例,单击对应实例后面的SHUT DOWN即可停止该实例。 图8 单击SHUT DOWN停该实例 方式2:在开发环境JupyterLab中的.ipynb文件窗口中输入命令,关闭 TensorBoard。PID在启动界面有提示或者通过 ps -ef | grep tensorboard 查看。 !kill PID 方式3:单击下方红框中的按钮可以关闭所有启动的TensorBoard实例。 图9 关闭所有启动的TensorBoard实例 方式4(不推荐):直接在JupyterLab中上关闭TensorBoard窗口,此方式仅关闭可视化窗口,并未关闭后台。
  • 创建训练作业 使用PyTorch预置框架功能,通过mp.spawn命令启动 启动方式选择预置框架/PyTorch,代码目录选择OBS桶的code文件夹所在路径,启动文件选择main.py文件。 图1 创建训练作业 当资源规格为单机多卡时,需要在创建训练作业时指定超参world_size和rank。若资源规格为多机时(训练作业计算节点个数大于 1)无需设置,world_size和rank超参由平台自动注入。 图2 超参 使用自定义镜像功能,通过torch.distributed.launch命令启动 启动方式选择自定义,选择镜像,代码目录选择OBS桶的code文件夹所在路径,启动命令如下: bash ${MA_JOB_DIR}/code/torchlaunch.sh 图3 创建训练作业 使用自定义镜像功能,通过torch.distributed.run命令启动 启动方式选择自定义,选择镜像,代码目录选择OBS桶的code文件夹所在路径,启动命令如下: bash ${MA_JOB_DIR}/code/torchrun.sh 图4 创建训练作业
  • 代码示例 文件目录结构如下所示,将以下文件上传至OBS桶中: code # 代码根目录 └─torch_ddp.py # PyTorch DDP训练代码文件 └─main.py # 使用PyTorch预置框架功能,通过mp.spawn命令启动训练的启动文件 └─torchlaunch.sh # 使用自定义镜像功能,通过torch.distributed.launch命令启动训练的启动文件 └─torchrun.sh # 使用自定义镜像功能,通过torch.distributed.run命令启动训练的启动文件 torch_ddp.py内容如下: import os import torch import torch.distributed as dist import torch.nn as nn import torch.optim as optim from torch.nn.parallel import DistributedDataParallel as DDP # 用于通过 mp.spawn 启动 def init_from_arg(local_rank, base_rank, world_size, init_method): rank = base_rank + local_rank dist.init_process_group("nccl", rank=rank, init_method=init_method, world_size=world_size) ddp_train(local_rank) # 用于通过 torch.distributed.launch 或 torch.distributed.run 启动 def init_from_env(): dist.init_process_group(backend='nccl', init_method='env://') local_rank=int(os.environ["LOCAL_RANK"]) ddp_train(local_rank) def cleanup(): dist.destroy_process_group() class ToyModel(nn.Module): def __init__(self): super(ToyModel, self).__init__() self.net1 = nn.Linear(10, 10) self.relu = nn.ReLU() self.net2 = nn.Linear(10, 5) def forward(self, x): return self.net2(self.relu(self.net1(x))) def ddp_train(device_id): # create model and move it to GPU with id rank model = ToyModel().to(device_id) ddp_model = DDP(model, device_ids=[device_id]) loss_fn = nn.MSELoss() optimizer = optim.SGD(ddp_model.parameters(), lr=0.001) optimizer.zero_grad() outputs = ddp_model(torch.randn(20, 10)) labels = torch.randn(20, 5).to(device_id) loss_fn(outputs, labels).backward() optimizer.step() cleanup() if __name__ == "__main__": init_from_env() main.py内容如下: import argparse import torch import torch.multiprocessing as mp parser = argparse.ArgumentParser(description='ddp demo args') parser.add_argument('--world_size', type=int, required=True) parser.add_argument('--rank', type=int, required=True) parser.add_argument('--init_method', type=str, required=True) args, unknown = parser.parse_known_args() if __name__ == "__main__": n_gpus = torch.cuda.device_count() world_size = n_gpus * args.world_size base_rank = n_gpus * args.rank # 调用 DDP 示例代码中的启动函数 from torch_ddp import init_from_arg mp.spawn(init_from_arg, args=(base_rank, world_size, args.init_method), nprocs=n_gpus, join=True) torchlaunch.sh内容如下: #!/bin/bash # 系统默认环境变量,不建议修改 MASTER_HOST="$VC_WORKER_HOSTS" MASTER_ADDR="${VC_WORKER_HOSTS%%,*}" MASTER_PORT="6060" JOB_ID="1234" NNODES="$MA_NUM_HOSTS" NODE_RANK="$VC_TASK_INDEX" NGPUS_PER_NODE="$MA_NUM_GPUS" # 自定义环境变量,指定python脚本和参数 PYTHON_SCRIPT=${MA_JOB_DIR}/code/torch_ddp.py PYTHON_ARGS="" CMD="python -m torch.distributed.launch \ --nnodes=$NNODES \ --node_rank=$NODE_RANK \ --nproc_per_node=$NGPUS_PER_NODE \ --master_addr $MASTER_ADDR \ --master_port=$MASTER_PORT \ --use_env \ $PYTHON_SCRIPT \ $PYTHON_ARGS " echo $CMD $CMD torchrun.sh内容如下: PyTorch 2.1版本需要将“rdzv_backend”参数设置为“static:--rdzv_backend=static”。 #!/bin/bash # 系统默认环境变量,不建议修改 MASTER_HOST="$VC_WORKER_HOSTS" MASTER_ADDR="${VC_WORKER_HOSTS%%,*}" MASTER_PORT="6060" JOB_ID="1234" NNODES="$MA_NUM_HOSTS" NODE_RANK="$VC_TASK_INDEX" NGPUS_PER_NODE="$MA_NUM_GPUS" # 自定义环境变量,指定python脚本和参数 PYTHON_SCRIPT=${MA_JOB_DIR}/code/torch_ddp.py PYTHON_ARGS="" if [[ $NODE_RANK == 0 ]]; then EXT_ARGS="--rdzv_conf=is_host=1" else EXT_ARGS="" fi CMD="python -m torch.distributed.run \ --nnodes=$NNODES \ --node_rank=$NODE_RANK \ $EXT_ARGS \ --nproc_per_node=$NGPUS_PER_NODE \ --rdzv_id=$JOB_ID \ --rdzv_backend=c10d \ --rdzv_endpoint=$MASTER_ADDR:$MASTER_PORT \ $PYTHON_SCRIPT \ $PYTHON_ARGS " echo $CMD $CMD
  • 可视化训练作业介绍 ModelArts支持在新版开发环境中开启TensorBoard和MindInsight可视化工具。在开发环境中通过小数据集训练调试算法,主要目的是验证算法收敛性、检查是否有训练过程中的问题,方便用户调测。 ModelArts可视化作业支持创建TensorBoard类型和MindInsight两种类型。 TensorBoard和MindInsight能够有效地展示训练作业在运行过程中的变化趋势以及训练中使用到的数据信息。 TensorBoard TensorBoard是一个可视化工具,能够有效地展示TensorFlow在运行过程中的计算图、各种指标随着时间的变化趋势以及训练中使用到的数据信息。TensorBoard相关概念请参考TensorBoard官网。 TensorBoard可视化训练作业,当前仅支持基于TensorFlow2.1、Pytorch1.4/1.8版本镜像,CPU/GPU规格的资源类型。请根据实际局点支持的镜像和资源规格选择使用。 MindInsight MindInsight能可视化展现出训练过程中的标量、图像、计算图以及模型超参等信息,同时提供训练看板、模型溯源、数据溯源、性能调试等功能,帮助您在更高效地训练调试模型。MindInsight当前支持基于MindSpore引擎的训练作业。MindInsight相关概念请参考MindSpore官网。 MindInsight可视化训练作业,当前支持的镜像如下,请根据实际局点支持的镜像和资源规格选择使用。 mindspore1.2.0版本,CPU/GPU规格的资源类型。 mindspore1.5.x以上版本,Ascend规格的资源类型。 您可以使用模型训练时产生的Summary文件在开发环境Notebook中创建可视化作业。 在开发环境中创建MindInsight可视化作业,请参见MindInsight可视化作业。 在开发环境中创建TensorBoard可视化作业,请参见TensorBoard可视化作业。 父主题: 模型训练可视化
  • 创建训练作业 本案例创建训练作业时,需要配置如下参数。 表1 创建训练作业的配置说明 参数名称 说明 “创建方式” 选择“自定义算法”。 “启动方式” 选择“自定义”。 “镜像” 选择用于训练的自定义镜像。 “代码目录” 执行本次训练作业所需的代码目录。本文示例的代码目录为“obs://test-modelarts/ascend/code/”。 “启动命令” 代码目录中的Python启动脚本。本文示例的启动命令为“bash ${MA_JOB_DIR}/code/run_torch_ddp_npu.sh”。启动脚本的完整代码请参见代码示例。
  • 计费说明 根据您选择的版本规格进行计费。购买专业版套餐后,计费项还包括扩容包。 表1 AstroPro计费项 计费项 计费项说明 适用的计费模式 计费公式 套餐规格 AstroPro当前仅提供了专业版套餐供您使用。 包年/包月 套餐版本单价 * 购买时长 (可选)扩容包 扩容包用于新增更多的用户数、应用数和实体个数。扩容包不可单独购买和退订,扩容包的使用截止时间与主资源的截止时间保持一致,主资源套餐到期后,扩容包将不可使用。 包年/包月 扩容包单价 * 购买时长(以主套餐有效时间折算)
  • 计费示例(无扩容包) 假设您在2023年11月01日,购买了AstroPro专业版有效期1年,并在到期前手动续费1年,则: 第一个计费周期为:2023/11/01 15:50:04 ~ 2024/11/01 23:59:59 第二个计费周期为:2024/11/01 23:59:59 ~ 2025/11/01 23:59:59 续费时需支付的费用为AstroPro规格套餐包年的费用(费用以官网实际费用为准)。
  • 包年/包月资源 对于包年/包月计费模式的AstroPro套餐,用户在购买时会一次性付费,服务将在到期后自动停止使用。 如果在计费周期内不再使用包年/包月AstroPro套餐,可以执行退订操作,系统将根据资源是否属于五天无理由退订、是否使用代金券和折扣券等条件返还一定金额到您的账户。 如果已开启“自动续费”功能,为避免继续产生费用,请在自动续费扣款日(默认为到期前7日)之前关闭自动续费。 若您购买AstroPro专业版后,有订购扩容包,执行退订操作时,扩容包会一并退订。
  • URI GET /v2/bills/partner-bills/subcustomer-bills/monthly-sum 参数说明请参见下表。 表1 查询参数 参数 是否必选 参数类型 取值范围 描述 cycle 是 String 最大长度:10 消费时间。 格式固定为YYYY-MM。 示例:2018-08 charge_mode 是 String 最大长度:4 计费模式。 1:包年/包月 3:按需 11:节省计划 bill_type 否 String 最大长度:4 账单类型。 0:消费 1:退订 2:华为核销 此参数不携带或携带值为空时,不作为筛选条件。 indirect_partner_id 否 String 最大长度:64 云经销商ID。获取方法请参见查询云经销商列表。 如果需要查询云经销商伙伴的子客户的消费汇总账单,必须携带该字段。除此之外,此参数不做处理。 customer_id 否 String 最大长度:64 客户账号ID。您可以调用查询客户列表接口获取customer_id。 此参数不携带或携带值为空时,不作为筛选条件。 cloud_service_type 否 String 最大长度:256 云服务类型编码,例如OBS的云服务类型编码为“hws.service.type.obs”。您可以调用查询云服务类型列表接口获取。 此参数不携带或携带值为空时,不作为筛选条件。 offset 否 Integer [0-最大整数] 偏移量,从0开始。默认值为0。 说明: offset用于分页处理,如不涉及分页,请使用默认值0。offset表示相对于满足条件的第一个数据的偏移量。如offset = 1,则返回满足条件的第二个数据至最后一个数据。 示例1,满足查询条件的结果共10条数据,limit取值为10,offset取值为1,则返回的数据为2~10,第一条数据不返回。 示例2,查询总数20条,期望每页返回10条数据,则获取第一页数据,入参offset填写0,limit填写10;获取第二页数据,入参offset填写10,limit填写10。 limit 否 Integer [1-100] 每页个数。默认值为10。
  • 步骤1:基本配置 基本信息中配置的内容会呈现在代码中,需用户根据实际情况进行勾选配置。 在服务列表中,单击新增一个服务中已创建服务后的“编辑”。 在基本配置中,按需进行设置。 图1 基本配置 基本配置:若本地已有配置好的服务元数据,可通过单击“导入元数据”,直接导入。 微服务名称:自动关联新增一个服务中创建的服务名称,不可修改。 Group ID:服务所属项目中的组ID,会自动关联新建项目中Group的值。在Maven项目中用作工程组的标识,Group ID在一个组织或项目中通常是唯一的。 Package:设置生成代码的顶层包名,会自动关联新建项目中Package的值。 Artifact ID:在Maven项目中用作工程的标识,通常是工程的名称。 版本:在Maven项目中用作工程的版本号。 框架:选择微服务使用的开发框架,当前仅支持DEVSPORE。 在详细配置中,配置服务的详细信息。 图2 详细配置 服务组:选择服务所属的分组。如何创建服务组,请参见新建服务组。 服务单元化策略:服务在子域内的单元化策略。服务单元化策略必须在一个子域内定义,不能跨子域。当应用比较复杂时,可基于领域的特定概念将应用分解为多个领域,每个领域就是一个子域,如核心子域、支撑子域和通用子域。 ROOTED:根服务,包含根业务对象的服务,每个子域最多有一个根服务。 SHARDING:分片服务,必须按照根服务的根业务对象的维度对数据进行分片,和根服务使用同样的数据单元化策略。只有子域中包含根服务时,才允许有分片服务。一个子域可以包含一个或多个分片服务。 SINGLE:单库,无论子域是否进行单元化部署,该服务只在一个单元(一般以region为单元)内部署。 API版本:服务的API版本,默认为新增一个服务时配置的版本,如果需要升级API的版本,请参见升级API版本。 是否生成客户端:是否生成客户端的代码。开启后,会生成服务的客户端代码,如图3。 图3 生成客户端的代码 是否启用扩展拦截:通过引入devspore-horizon插件,用户自定义继承抽象类Approve和添加配置,在请求进入和返回时增强处理。 是否支持入口插件:是否启用入口扩展插件功能。 设置为“是”时,自动在pom文件中引入devspore-horizon插件,并在所有service实现类的方法上添加“@Extension”注解。同时在plugin目录下,生成“DefaultRequestPlugin.java”示例文件。 使用插件时,用户需要在配置文件中添加devspore.horizon.processors,即配置自己编写的扩展插件注入到spirng中的名称,多个插件之间使用英文逗号隔开,扩展插件需要继承com.huawei.devspore.horizon.approver.Approve抽象类,并重写其中的doApprove方法。 是否支持出口插件:是否启用出口扩展插件功能。 设置为“是”时,自动在pom文件中引入devspore-horizon插件,并在所有service实现类的方法上添加“@Extension”注解。同时在plugin目录下生成“DefaultResponsePlugin.java”示例文件。 使用插件时,用户需要在配置文件中添加devspore.horizon.processors,即配置自己编写的扩展插件注入到spirng中的名称,多个插件之间使用英文逗号隔开,扩展插件需要继承com.huawei.devspore.horizon.approver.Approve抽象类,并重写其中的doApprove方法。 设置完成后,单击“下一步”,进入框架配置页面。 父主题: 编辑服务
  • 使用说明 AstroPro为每个项目预置了admin、architect和developer三种类型的角色。 admin 可以增删改査项目下的所有资源。 可以为项目下的所有角色分配用户(仅限于同账号下的用户,如图1中的IAM用户1、IAM用户2)。 图1 华为账号与IAM用户 architect 可以新建服务。 可以删除本人创建的服务,不能删除其他人创建的服务。 可以对项目下的所有服务进行编辑。 developer 可以查看项目下的所有资源。 可以重新编译有权限项目下的服务并下载代码。
  • 操作步骤 具备workspace_admin权限的用户或项目级admin权限的用户,参考如何登录AstroPro中操作,登录AstroPro界面。 在项目列表中,单击对应项目后的“配置”。 在项目管理中,单击“新增”。 图2 单击新增 在添加用户页面,输入用户ID,选择赋予用户的角色,单击“确认”。 图3 添加用户 参考创建IAM用户中操作创建用户后,在用户详情页面可获取到用户ID。 图4 添加用户 用户添加完成后,在项目角色管理列表中,可查看到已添加的用户,角色类型为“admin”。如果需要删除用户,可单击用户后的,删除已添加的用户。 图5 查看已添加的用户 使用已添加的用户登录AstroPro,该用户即可对项目进行增删改査等操作。 图6 IAM用户登录
  • 关系属性设置 在业务设计页面,拖入两个BO业务对象(命名为Bo1、Bo2)单击“relations”中的“聚合”,为对象建立聚合关系。选中已创建的关系,在右侧页面即可设置关系属性,如图2所示。 图2 聚合 关系名称:设置聚合关系的名称。 关系类型:根据创建的聚合关系自动生成。 关系首要方:根据创建的聚合关系自动生成。 关系次要方:根据创建的聚合关系自动生成。 DTO暴露方式 - NESTED:是否设置DTO的NESTED(嵌套)能力。 不设置:不生成NESTED。 只生成DTO:只生成NESTED对象的类。 生成DTO读API:只会生成一个get接口。 生成DTO读写API:除了生成一个get接口,还会生成一个插入接口。 DTO暴露方式 - CARTESIAN:设置DTO的CARTESIAN(笛卡尔积)能力。 不设置:不生成CARTESIAN。 只生成DTO:只生成CARTESIAN对象的类。 生成DTO读API:只会生成一个get接口。 每个Bo1关联最大Bo2数:一个首要方和次要方建立关联的数量上限。 每个Bo1最大关联Bo2数:一个次要方和首要方建立关联的数量上限。 每个Bo1关联最大Bo2维度上限预警值:首要方一条数据最多关联次要方多少条数据报出告警。
  • 了解服务创建流程 在AstroPro中创建一个服务的流程,如图1所示。 图1 创建服务流程图 新增一个服务 创建一个空服务,并指定服务的版本。创建服务前,请确保已创建项目和服务组。 基本配置 设置服务框架、版本和单元化策略等信息,请根据实际业务直接在界面进行勾选。 框架配置 设置服务的架构、数据库、缓存和安全认证等信息,请根据实际业务直接在界面进行勾选。 生成策略 设置服务的API、代码风格、部署和性能测试等信息,请根据实际业务直接在界面进行勾选。 业务设计 基本配置、框架配置和生成策略需要用户根据自身业务的实际情况进行配置,配置不同生成的效果有所不同。业务设计是AstroPro的核心能力,是用户设计自己业务的基础。 服务依赖 通常情况下,一个应用不是一个单独的服务,可能由多个服务共同组成。这些服务之间可能存在一些跨服务的调用,此时就需要通过添加依赖服务,把这些服务的客户端集成过来。 生成服务代码 根据配置的业务模型,生成服务的代码。
  • 操作步骤 在业务设计页面,选中某个业务对象。 单击BO属性操作中的“自定义API”,进入编辑自定义API页面。 单击,按需添加所需的API。 图2 添加API 实例级别:定义API实例的级别,如类型、实例。 动作名称:设置API的动作名称。 请求方法:HTTP请求方法(也称为操作或动作),用于告诉服务您正在请求什么类型的操作。 get:请求服务器返回指定资源。 put:请求服务器更新指定资源。 post:请求服务器新增资源或执行特殊操作。 delete:请求服务器删除指定资源。 请求对象:设置请求的对象,即API请求的输入参数。 返回对象:请求发送后,您会收到的响应,如状态码。 设置完成后,单击“保存”。
  • 操作步骤 具备workspace_admin权限的用户,参考如何登录AstroPro中操作,登录AstroPro界面。 在项目列表中,单击对应项目后的“配置”。 在工作空间角色管理中,单击“新增”。 图1 单击新增 在添加用户页面,输入用户ID,单击“确认”。 图2 输入用户ID 参考创建IAM用户中操作创建用户后,在用户详情页面可获取到用户ID。 图3 获取用户ID 用户添加完成后,在工作空间角色管理列表中,可查看到已添加的用户,角色类型为“workspace_admin”。如果需要删除用户,可单击用户后的,删除已添加的用户。 图4 查看已添加的用户 使用已添加的用户登录AstroPro,该用户即可对本工作空间下的所有资源进行增删改查等操作。 图5 IAM用户登录
  • 步骤3:生成策略 生成策略和基本配置、框架配置一样,需要您根据实际情况进行勾选配置,不同的配置会呈现不同的效果。 API设置。 图1 API设置 Json序列化 小驼峰:序列化后的json属性名,采用驼峰格式。 下划线:序列化后的json属性名,采用下划线连接单词。 标准响应体:返回的响应体是否使用标准样式。 { "code": 200, "msg": "success", "data": { "name": "zhangsan", "birthday": "1990-01-01", "other_properties": "..." } } Web框架模型:生成基于spring-webmvc的API层。 关闭API中根对象前缀:设置为“是”时,sharding bo的API前面不需要添加root bo的路径。 查询参数阈值:设置查询参数阈值,值为“0”时不生效。当查询参数大于该阈值时,将多个查询参数转换为对象。 设置代码风格。 图2 设置代码风格 配置文件格式:配置spring boot properties文件格式。 yaml :配置文件使用yaml格式。 properties :配置文件使用properties格式。 Lombok插件:是否为DO、DTO或QO定义类自动生成Lombok注解。 工程目录:设置生成代码的工程目录样式。 单Module:工程目录结构只有一个模块。 base/service:工程目录结构包含base和service两个模块。 DDD:和单Module一样,工程目录结构只有一个模块。 图3 工程目录不同类型设置效果 module添加服务名前缀:配置为“是”时,模块名称前会添加服务名前缀。 图4 开启前后效果 设置部署信息。 图5 设置部署信息 服务部署脚本 图6 服务部署脚本设置效果对比 主机部署:对接鲁班部署,将生成“.clouddeploy”和必备的目录和文件。 容器部署:对接流水线部署,将生成“.cloudbuild”和对应的“build.yml”文件。 否:不对接部署。 服务打包方式 jar:打成jar包。jar通常包含一些Java类文件、相关元数据和资源,在声明了Main_class后可使用java命令运行。 war:打成war包。war是Java Web应用程序的标准打包格式,war是一个Web模块,包括WEB-INF目录,可直接运行于Web容器中。 性能测试。 是否使用CodeArts PerfTest进行性能测试。性能测试CodeArts PerfTest是一项为基于HTTP/HTTPS/TCP/UDP/HLS/RTMP/WEBSOCKET/HTTP-FLV等协议构建的云应用提供性能测试的服务,支持快速模拟大规模并发用户的业务高峰场景,可以很好的支持报文内容和时序自定义、多事务组合的复杂场景测试,测试完成后会为您提供专业的测试报告呈现您的服务质量。更多关于CodeArts PerfTest的介绍,请参见性能测试CodeArts PerfTest。 图7 性能测试 租户配置。 图8 租户配置 多租模型:是否支持多租户资源隔离。 Tenant:支持多租模式,BO级多租配置multiTenant生效,开启BO级多租的业务对象必须关联到租户,包含租户id字段,租户id字段可自定义名称。 否:无内置租户模型。 租户验证方式:设置租户ID资源获取方式。“多租模型”设置为“Tenant”时,才显示该配置。 Header:使用header头携带方式传入tenantId。 Token:使用token方式传入tenantId。 设置完成后,单击“下一步”,进入业务设计页面。 父主题: 编辑服务
  • 了解构建流程 在AstroPro中,用户通过业务建模,可生成高可用、高可靠、以及安全稳定的企业级IT应用框架。业务建模是指通过业务设计,将实际业务涉及的对象和行为转换为元数据中的对象、对象关系、服务依赖等构成的模型,通过模型生成服务,实现业务需求。 使用AstroPro创建企业核心应用的流程,如图1所示。 图1 创建企业核心应用流程图 创建项目 项目是使用AstroPro核心业务的入口。在使用AstroPro前,需要先创建一个项目。 创建服务组 服务组用于对项目中的服务进行分组,一般一个分组对应一个研发团队。创建项目后,默认会创建一个和项目同名的服务组,所有新建服务默认在此分组下。 添加服务 在新增服务界面,通过简单的配置,完成服务框架的搭建。 编辑服务 添加服务的操作,相当于为服务搭建了一个框架。如果需要服务实现某些特定的功能,还需要您根据业务需求,对服务进行业务模型配置。 生成服务代码 基于配置的业务模型,生成服务的基本代码。代码生成后,会提供一个压缩包,供您直接使用。 父主题: 创建企业核心应用
  • 创建项目 在软件开发生产线首页,“新建项目”。 在“选择模板”页签,选择“IPD-系统设备类”,单击“选用”,进入“新建项目”页面。 填写基本信息。 根据下表输入“项目名称” 、“项目代号”、“项目描述”,然后单击“确定”按钮。 参数名 参数说明 项目名称 根据自己需求设置。 项目代号 针对第三方业务。设置项目代号后,便于业务管理。 项目描述 对项目的简要说明。 创建成功后,项目自动进入到主页,提示 “新建项目成功”。 父主题: 管理员:初始化项目
共100000条