华为云用户手册

  • 镜像包打包 上传需要打包的项目。将项目上传到网络能访问到的Linux机器上,放到目录下(比如 /home/MyCApp)。 安装docker。 请确认你使用的系统已经安装docker(docker版本需要高于17.06,推荐18.06),安装方法可参照docker 安装教程。 制作镜像。 搜索基础镜像。 对基础镜像没有要求,可自行选择合适的基础镜像,以下选用带cmake的镜像作为示例 docker search cmake 选择合适的镜像(镜像需要集成了cmake且版本不低于3.9.5) NAME DESCRIPTION STARS OFFICIAL AUTOMATED lycantropos/cmake CMake Docker image 3 [OK] 拉取镜像 lycantropos/cmake镜像是docker hub第三方提供的镜像,非IoT团队发布,且IoT团队未提供任何官方镜像。该镜像在此仅做示例,IoT团队对该镜像的安全性不作保证。强烈建议用户自己封装镜像! docker pull lycantropos/cmake 添加启动脚本start.sh,放到项目文件下(和main.c在一个目录下)。 function log(){ echo `date "+%Y-%m-%d %T"`: $1 } log "[INFO] start execute process." # 这里的路径取决于项目保存的位置 cd /opt/iot/edge/MyCApp ./MyCApp MyCApp为可执行文件,生成步骤可参考生成可执行文件 编写 Dockerfile 制作镜像 创建 Dockerfile,命名为 myapp-dockerfile 内容参照如下(具体可参考编写高效的Dockerfile )。 下面提供myapp-dockerfile 样例,请根据具体需要修改。 注意myapp-dockerfile需要和项目放到一个目录下。 #Version 1.0.0 # 基础镜像来源 # 如果不采用在镜像中编译源文件的方式,可以任意选择基础镜像 FROM lycantropos/cmake # 创建镜像文件目录,并且授权 RUN mkdir -p /opt/iot/edge/MyCApp/conf && chmod -R 777 /opt ENV docker_path=/opt/iot/edge/MyCApp ENV LD_LIBRARY_PATH=${docker_path}:$LD_LIBRARY_PATH WORKDIR ${docker_path} # 复制工程或文件到指定目录 COPY MyCApp/MyCApp $docker_path # 将依赖库和配置文件放到对应目录下,确保编译的时候不会出错 COPY MyCApp/lib /usr/lib COPY MyCApp/conf $docker_path/conf COPY MyCApp/start.sh $docker_path # 指定容器将要监听的端口 USER root EXPOSE 8082 ENTRYPOINT ["/bin/bash", "/opt/iot/edge/MyCApp/start.sh"] 构建镜像 docker build -f ./myapp-dockerfile -t my_app_docker:v1.0.0 ./ 查看打包完成的镜像 docker images 可以看到my_app_docker这个镜像已经制作完成。 REPOSITORY TAG IMAGE ID CREATED SIZE my_app_docker v1.0.0 983b4e5aa72a 10 minutes ago 1.51GB 镜像上传 以上步骤可以通过体验馆熟悉流程。 上传镜像 镜像上传需要使用镜像容器服务(SWR),首先需要开通 容器镜像服务 (SWR)。开通及使用请参照容器 镜像服务 (SWR)。 获取 SWR 登录指令 获取登录指令请参照获取指令。 访问密钥即AK/SK(Access Key ID/Secret Access Key),获取的密钥和AK将用于登录。 登录 SWR 仓库 docker login -u [区域项目名]@[AK] -p [登录密钥] [镜像仓库地址] 可以直接从控制台获取登录命令,如下图。 镜像仓库地址 = swr.区域项目名称.myhuaweicloud.com 例如,华北-北京一对应的镜像仓库地址为:swr.cn-north-1.myhuaweicloud.com 修改镜像所属组织 修改镜像的组织名,以便推送到个人组织内。 docker tag [OPTIONS] [镜像名:版本号] [镜像仓库地址/所属组织/镜像名:版本号] 例如, docker tag my_app_docker:v1.0.0 swr.cn-north-4.myhuaweicloud.com/iotedge/my_app_docker:v1.0.0 上传镜像 docker push [镜像仓库地址/所属组织/镜像名:版本号] 例如, docker push swr.cn-north-4.myhuaweicloud.com/iotedge/my_app_docker:v1.0.0 在我的镜像查看上传结果 上传镜像后请在 SWR 将镜像设置为公开。 步骤一: 步骤二: 步骤三: 这一步很重要,关系到后面能否正常部署应用。
  • 代码解析 代码解释使用ModuleSDK开发应用集成ModuleSDK进行数据处理。 AppClient类有以下几个关键方法(具体参考JavaDoc)。 createFromEnv(): AppClient创建时由此方法自动获取环境变量。 setBusMessageCallback(): 设置总线消息回调,用于对设备上报的数据进行处理 sendBusMessage(): 向总线发送消息,用于将处理后的设备数据发送到总线 callDeviceCommand(): 调用设备命令 getDevicesInfo(): 查询设备状态 MonitorApp代码解析 片段一 privatestaticfinalString INPUT = "input"; public static final String OUTPUT = "output"; 定义输入和输出的端点,关于取值需要需在创建应用版本的inputs参数中定义,创建应用时输入端点与输出端点以及数据流转规则的配置与此是对应的。例如此处定义了输入端点为“input”,输出端点为“output”,则创建应用时的端点和软件配置输入端点需要配置为input,输出端点需要配置为output。 应用部署后还需要设置数据流转规则后,决定数据的流向。 /** * 电机设备的产品ID */ public static final String MOTOR_PRODUCT_ID = "60988d94aa3bcc02c0200667"; 单击设备的产品ID,需要在IoTDA设备接入创建产品时获取。 片段二 private AppClient appClient; publicMonitorApp() throws GeneraException { appClient = AppClient.createFromEnv(); } 定义并创建AppClient, AppClient.createFromEnv()创建其配置参数将会自动从边缘节点环境中获取,数据的传输将会依赖AppClient。 片段三 publicvoidstart() throws GeneraException { //设置回调,打开客户端 appClient.setBusMessageCallback(INPUT, this);//设置收到设备数据的回调 appClient.open(); } appClient在接收到数据后的处理动作需要用户定义,具体操作是设置回调。 这里设置回调方法并传入输入端点后,appClient将会开启并启动一个监听器监听输入端点的数据传输,接收到设备经过hub发来的数据后会调用回调进行数据处理。 片段四 public void onMessageReceived(BusMessage busMessage) { try { if (busMessage.getProductId().equals(MOTOR_PRODUCT_ID)) { //马达设备状态错误时对马达进行重启 MotorData motorData = JsonUtil.fromJson( JsonUtil.toJson(busMessage.getServices().get(0).getProperties()), MotorData.class); if (motorData.getStatus().equals("error")) { Command command = new Command(busMessage.getDeviceId(),"power", "power_control", "restart" ); appClient.callDeviceCommand(command, FIVE_SECOND); } } else { //其他设备数据发布到总线 appClient.sendBusMessage(OUTPUT, busMessage); } } catch (Exception e) { System.out.println(e.getMessage()); } } onMessageReceived(BusMessage busMessage)是前面设置回调具体的回调函数,它是BusMessageCallback接口的方法,MonitorApp要实现BusMessageCallback接口并实现此方法,AppClient通过设置的输入端口input监听到设备发送数据时调用此方法进行数据处理,用户关于设备发送的数据的处理逻辑在此方法内实现,处理后的数据通过设置的输出端口output发送经过hub发送到云端。 appClient.callDeviceCommand(command, FIVE_SECOND)是示例演示应用在接受到设备传来的error信号后,向设备发送秒后重启命令。 父主题: 集成ModuleSDK进行数据处理
  • 安装包部署 软件部署配置 部署方式选择安装包部署,"安装包地址"为{桶名/对象名}。如桶名为:“Demo”,对象名为:“ModuleSDK-Demo.zip”, 则安装包为obs://Demo/ModuleSDK-Demo.zip。 容器规格与高级配置请根据您的需要进行配置。 运行配置 输入端点、输出端点与demo中代码定义的端点一一对应,由于本例演示的是数采模块,因此不对端点进行配置。 部署配置请根据您的需要进行选择。 输入输出端点是非必需配置的,当有数据流转时需要配置,如OT应用(数据处理)。 驱动类应用和IT应用一般不需要配置。 配置确认 建议直接单击“立即发布”,方便后面直接部署应用的时候,能够获取到最新版本。
  • 步骤一:配置监控数据存储路径 Zabbix会将监控数据保存在其所在的机器上,您可以根据如下步骤设置监控数据的存储路径。 登录Zabbix所在服务器。 打开zabbix_server.conf文件。 vim /etc/zabbix/zabbix_server.conf 在zabbix_server.conf文件中,设置数据存储路径。 ExportDir=/tmp/ 重启Zabbix服务,使配置生效。 systemctl restart zabbix-server 配置生效后,Zabbix会在/tmp目录下生产文件(文件名后缀为.ndjson),用于保存监控数据。
  • 前提条件 注册账号并实名认证。使用LTS前,需要先注册一个华为账号并进行实名认证。如果您已有一个华为账号,可直接跳过如下操作。 进入华为云官网,单击页面右上角的“注册”。 参考 注册华为账号 并开通华为云中操作,完成注册。 注册后参考实名认证完成个人或企业账号实名认证。 为账户充值。如果您的账户有足够金额,请跳到下一个任务。如果您的账户还没有足够金额,请先为账户充值。 关于 云日志服务LTS 的价格,请参见LTS价格详情。 关于充值,请参见账户充值。 为用户添加 云日志 服务LTS的操作权限。 您需要有LTS的管理员权限“LTS FullAccess”,具体操作请参考授权 IAM 用户使用LTS。 本操作以Linux系统的E CS 为例,准备好需要采集日志的ECS主机,详细请参考购买弹性云服务器。如果您已有可用的ECS主机,可重复使用,不需要再次创建。
  • 步骤一:创建日志组和日志流 日志组和日志流是云日志服务进行日志管理的基本单位,在使用云日志服务时,您首先需要创建一个日志组,然后在日志组中创建日志流。 登录云日志服务控制台。 在“日志管理”页面,单击“创建日志组”,参考表1填写日志组相关信息。 图2 创建日志组 表1 参数说明 参数 说明 示例 日志组名称 日志组名称只支持输入英文、数字、中文、中划线、下划线及小数点,且不能以小数点、下划线开头或以小数点结尾。长度为1-64个字符。 日志采集后,将发送到对应的日志组中的日志流,如果日志较多,需要分门别类,建议您给日志组做好命名,方便后续快速查找日志。 lts-group-ECS 企业项目 选择业务需要的企业项目,默认为default。 default 日志存储时间(天) 日志组的存储时间,即日志上报到LTS后日志存储的时间。 日志数据默认存储30天,可以在1~365天之间设置。 云日志服务LTS根据配置的日志存储时间定时清理日志内容,例如日志存储时间为30天,上报到LTS的日志只保存30天,30天后开始删除日志内容。 30 标签 按照业务需求对不同的日志组添加对应的标签。本示例可不设置。 - 备注 自定义填写备注信息,字符长度0-1024个字符。本示例可不填写。 - 单击“确定”,日志组创建成功,即可在日志组列表下方生成一条日志组信息。 单击目标日志组名称对应的。 单击“创建日志流”,在“创建日志流”页面中,参考表2填写日志流相关信息。 图3 创建日志流 表2 参数说明 参数 说明 示例 日志组名称 默认显示目标日志组名称。 - 日志流名称 日志流名称只支持输入英文、数字、中文、中划线、下划线及小数点,且不能以小数点、下划线开头或以小数点结尾。长度为1-64个字符。 日志采集后,以日志流为单位,将多条日志数据发往云日志服务。如果日志较多,需要分门别类,建议您创建多个日志流,并给日志流做好命名,方便后续快速查找日志。 lts-topic-ECS 企业项目 选择业务需要的企业项目,默认为default。 default 日志存储 开启日志存储:日志将会被存入搜索引擎,能使用日志全量功能。 需要开启日志存储,才能开启日志存储时间。 开启 日志存储时间(天) 日志流的存储时间,即日志上报到LTS后日志存储的时间。 日志数据默认存储30天,可以在1~365天之间设置。 打开日志流的“日志存储时间”开关:日志的存储时间使用日志流设置的日志存储时间。 云日志服务LTS根据配置的日志存储时间定时清理日志内容,例如日志存储时间为30天,上报到LTS的日志只保存30天,30天后开始删除日志内容。 30 标签 按照业务需求对不同的日志组添加对应的标签。本示例可不添加。 - 匿名写入 匿名写入默认关闭,本示例默认关闭。 匿名写入适用于安卓/IOS/小程序/浏览器端上报日志。 关闭 备注 自定义填写备注信息,字符长度0-1024个字符。本示例可不填写。 - 单击“确定”。 日志流创建成功,即可在目标日志组下方生成一条日志流信息。
  • 步骤四:查看实时日志 完成日志接入配置后,可以在云日志服务控制台实时查看上报的日志。 如果您正在使用实时查看功能,请停留在实时查看页面,请勿切换页面。如果您离开实时查看页面,实时查看功能将会被关闭。 在“接入管理”页面,单击目标日志接入任务“所属日志流”列的日志流名称,即可进入日志流详情页。 单击“实时日志”页签,查看实时日志。 日志大约每隔5秒钟上报一次,在日志消息区域,您最多需要等待5秒钟左右,即可查看实时上报的日志。 图10 实时日志
  • 配置Touch接入终端 使用Touch对终端进行配置前需要先将Touch接入终端,接入方式包括TOUCH口连接、交换机网口连接和Wi-Fi连接。 TOUCH口连接 将Touch接入终端的TOUCH口,如图1所示。 图1 TOUCH口连接 TOUCH口具有供电功能,使用TOUCH口连接时,不需要再接入Type-C线缆和电源适配器。 打开Touch,Touch会检测版本与终端版本是否一致。如果不一致,Touch自动升级。 交换机网口连接 将Touch接入交换机的网口,如图2所示,通过Type-C线缆连接电源适配器供电。 图2 交换机网口连接 打开Touch,缺省进入连接向导界面,单击“有线连接”,如图3所示。 图3 选择有线连接 单击左上角的“简体中文”,可切换界面语言。 在“选择会场”列表中选择或者手动输入需要接入终端的IP地址,单击“确定”,如图4所示。 “选择会场”列表中会显示网络中可以接入的终端设备。 IP地址请从终端LCD显示屏上获取。 图4 有线连接 输入用户名和密码,单击“连接”。 连接成功后,Touch会检测版本是否与终端版本一致。如果不一致,Touch自动升级。 缺省用户名为“api”,缺省密码为“Change_Me”。 Wi-Fi连接 将Touch接入终端或同一网络的Wi-Fi热点,如图5所示。 图5 Wi-Fi连接 打开Touch,缺省进入连接向导界面,单击“Wi-Fi连接”,如图6所示。 图6 选择Wi-Fi连接 单击左上角的“简体中文”,可切换界面语言。 选择需要接入的Wi-Fi热点,单击“下一页”。 输入终端IP地址、用户名和密码,单击“连接”。 连接成功后,Touch会检测版本是否与终端版本一致。如果不一致,Touch自动升级。 IP地址请从终端LCD显示屏上获取,缺省用户名为“api”,缺省密码为“Change_Me”。
  • 1080P超高清视频 1080P超高清视频功能暂未开放,如需体验请发送邮件至“hcmeeting@huaweicloud.com”或联系华为销售申请开通。 开启企业配置后,企业下的用户在会议管理平台创建会议时,可开启该次会议的1080P超高清视频。详细操作请参考立即/预约会议。 当主持人创建开启了“1080P超高清视频”的会议,在硬件设备满足的情况下,Windows客户端与会者入会后可发送和接收1080P超高清视频。详细操作请参考1080P超高清视频。 企业管理员单击“1080P超高清视频”右侧的开关即可启用功能。
  • 其他操作 激活、配置专业会议终端 快速配置CloudLink Board:可通过触控屏快速配置、通过Web界面快速配置或通过Touch快速配置。 快速配置CloudLink Box/CloudLink Bar:可通过Web界面快速配置或通过Touch快速配置。 快速配置TE10/TE20。 快速配置TE30/40/50/60。 快速配置DP300。 您可以在“专业会议终端”界面终端列表所在行的右侧单击编辑硬件终端、也可以单击删除硬件终端,也可以单击重置激活码、停用/启用该硬件终端的账号。 您也可以单击“导出”查看终端数据及设备型号。
  • 企业资源 企业管理员概览页呈现了本企业全局的资源使用情况,如图1所示,具体见表1。 表1 企业全局资源使用情况 资源名称 资源使用情况 会议并发方数(个) 已使用/已购买的并发与会方数 云会议室(个) 已使用/已购买的云会议室数 用户账号数(个) 已使用/已购买的用户数 IdeaHub接入账号(个) 已使用/已购买的智能协作大屏(IdeaHub)接入账号 华为终端接入账号-1080P(个) 已使用/已购买的1080P硬件终端接入账号数 华为终端接入账号-720P(个) 已使用/已购买的720P硬件终端接入账号数 第三方硬终端接入账号(个) 已使用/已购买的第三方硬件终端接入账号数 SmartRooms接入账号(个) 已使用/已购买的SmartRooms接入账号数 智慧屏TV接入账号(个) 已使用/已购买的智慧屏TV接入账号 直播端口(个) 已使用/已购买的直播端口数 录播空间(GB) 已使用/已购买的录播空间 图1 管理员首页
  • 同步状态说明 本节主要介绍同步完成后,各种状态的含义。方便您对异常状态进行排查定位。 以应用账号App_acc01、应用机构App_org01、原同步事件E0、新同步事件E1为例。 待处理 英文为“PENDING”,当应用账号App_acc01在生成新的同步事件E1时,如果该应用账号App_acc01之前的同步事件E0未执行完成,则生成的新事件E1的状态为待处理。 排队 英文为“QUEUING”,当应用账号App_acc01的同步事件E1可以执行时,会将该事件发送至Kafka执行消息队列,发送成功后,修改ES中存储的同步事件E1的状态为排队,表示该事件已成功加入执行队列。 发送 英文为“RUNNING”,当同步事件E1可执行时,在开始执行前将存储在ES中的同步事件E1的状态修改为RUNNING,修改成功后,调用下游应用系统的接口开始同步,表示该事件已成功处于运行状态。 成功 英文为“SUC CES S”,同步事件执行成功后,会将该事件的状态SUCCESS写入ES,表示该事件已执行成功。 失败 英文为“FAILURE”,同步事件执行失败后,会将该事件的状态FAILURE写入ES,表示该事件已执行失败。 忽视 英文为“IGNORED”,该状态涉及2种场景: 当应用账号 App_acc01 在执行一个更新的同步事件时,如果发现后续有新的更新事件,则直接忽视该事件,并执行新的更新事件。 执行全量同步时,会忽视之前所有的同步事件。 略过 英文为“SKIPPED”,该状态暂时未使用。 挂起 英文为“WAITING”,当应用账号App_acc01对应用机构App_org01存在依赖关系时,应用机构App_org01未同步成功,则该机构下应用账号App_acc01的所有同步事件状态为挂起。
  • 前提条件 已基于Java Chassis开发好了微服务应用。 Java Chass框架下的微服务应用开发,请参考https://servicecomb.apache.org/references/java-chassis/zh_CN/。 版本要求:请参见ServiceComb引擎微服务开发框架版本要求。 本文假设您的项目使用了maven管理打包,您熟悉maven的依赖管理机制,能够正确的修改“pom.xml”文件中的dependency management和dependency。 Java Chassis支持和不同的技术进行组合使用,配置文件的名称和实际使用的技术有关。如果您采用Spring方式使用Java Chassis,配置文件的名称一般为“microservice.yaml”,如果您采用Spring Boot方式使用Java Chassis, 配置文件名称一般为“application.yaml”。本文统一使用“microservice.yaml”表示配置文件,请结合实际项目进行区分。
  • Spring Cloud Huawei历史版本及版本修复问题 spring-cloud-huawei版本 主要修复问题 1.11.6-2023.0.x snakeyaml、jackson、guava版本安全漏洞。 路由开关关闭后,微服务应用启动失败,找不到nacos/servicecomb适配实现类。 当前服务配置中心配置未变化,发布配置刷新事件,请求过程中可能出现池化配置找不到。 1.11.6-2022.0.x 1.11.6-2021.0.x 1.11.4-2022.0.x RBAC安全认证未开启,框架依然会监听认证过期事件。 gateway/webflux路由无法获取请求头设置信息。 微服务API安全认证开启后,规则未设置,所有请求不通过。 服务端熔断规则不生效。 1.11.4-2021.0.x 1.11.3-2022.0.x 指定服务名情况下,实例隔离策略不生效。 1.11.3-2021.0.x 1.11.2-2022.0.x API安全认证未设置黑、白名单策略时,空指针异常。 服务端、客户端同时设置相同请求头,key不生效。 1.11.2-2021.0.x 1.11.0-2022.0.x trace上下文配置基于动态配置不生效。 1.11.0-2021.0.x 1.10.13-2021.0.x 同时调用多个服务情况下,降级不生效。 1.10.11-2021.0.x 实例隔离治理不生效。 1.10.9-2021.0.x 指定服务名设置重试策略不生效。 服务降级错误返回“null”字符串,修改为返回null。 1.10.8-2021.0.x 负载均衡规则不生效。 1.10.8-2020.0.x 1.10.7-2021.0.x 服务注册发现开关关闭,启动失败。 1.10.7-2020.0.x 1.10.6-2021.0.x 监控信息中缺少环境信息。 1.10.6-2020.0.x 1.10.5-2021.0.x 重试次数太多导致请求长时间无响应。 1.10.5-2020.0.x 1.10.4-2021.0.x identifierRateLimiting限流上下文获取失败。 1.10.4-2020.0.x 1.10.3-2021.0.x 治理配置第一次变化时不生效。 1.10.3-2020.0.x 1.10.2-2021.0.x 调整默认配置刷新时间为15s。 实例隔离过滤器空指针异常。 1.10.2-2020.0.x 1.10.1-2021.0.x 非客户端请求上下文空指针异常。 路由客户端编译请求头失败。 灰度版本策略生效。 ClientRequest非RequestData类型下转化异常。 1.10.1-2020.0.x 1.10.0-2021.0.x 服务删除、重启无法刷新ribbon缓存,导致请求到不可用服务,报no host to route。 动态配置下灰度发布配置规则,修改配置规则不生效。 启动类application在业务包外层启动失败。 网关最大重试次数不生效。 1.10.0-2020.0.x 1.9.1-2020.0.x 某些场景下,启动类ags属性加载不正确。 网关配置最大重试次数无限重试。 灰度动态配置不生效。 1.9.0-2020.0.x instance.healthCheck.mode值为pull,自定义配置healthCheckInterval健康检查时间不生效。 1.8.0-2020.0.x 非long polling模式下大量配置查询任务,触发查询任务无间隔时间。 cse操作页面对服务实例下线后,服务实例调用依然正常。 management.server.port和server.port两个端口不一致,启动报错。 gateway查询到不同环境的实例。 1.7.0-2020.0.x webmvc与路由结合导致gateway启动失败。 gateway无法实现基于服务发现的路由定义功能。 gateway无法跨应用服务发现。 1.6.1-2020.0.x 说明: 存在重大问题,不建议使用: 非常频繁地查询配置中心。 查询到错误的配置。 1.9.4-Hoxton 当前服务配置中心配置未变化,发布配置刷新事件,请求过程中可能出现池化配置找不到。 1.9.3-Hoxton 服务删除、重启无法刷新ribbon缓存,导致请求到不可用服务,路由不到可用服务。 1.9.2-Hoxton 服务端删除实例后重新注册实例,客户端选择错误的服务端实例。 1.9.1-Hoxton 某些场景下,启动类ags属性加载不正确。 网关配置最大重试次数无限重试。 灰度动态配置不生效。 1.9.0-Hoxton instance.healthCheck.mode值为pull,自定义配置healthCheckInterval健康检查时间不生效。 1.8.0-Hoxton 非long polling模式下大量配置查询任务,触发查询任务无间隔时间。 cse操作页面对服务实例下线后,服务实例调用依然正常。 management.server.port和server.port两个端口不一致启动报错。 gateway查询到不同环境的实例。 1.7.0-Hoxton webmvc与路由结合导致gateway启动失败。 gateway无法实现基于服务发现的路由定义功能。 gateway无法跨应用服务发现。 1.6.0-Hoxton SDK针对401、403错误码,对引擎做出重试请求。 gateway默认路由规则不生效。 无法跨应用调用。 1.5.9-Hoxton RBAC鉴权功能不生效。 灰度路由时无法获取到微服务最新版本。 某些JDK版本不支持swagger循环依赖。 1.5.8-Hoxton gateway服务发现中选择错误实例。 实例状态为空时调用异常。 1.5.6-Hoxton AK/SK配置后不生效,鉴权失败。 server.env配置不生效,全部为空。 配置中心治理配置项删除后仍然能使用。 滑动窗口熔断配置属性不生效。 注册中心开启watch模式后,空指针异常。 读取环境变量PAAS_CSE_SC_ENDPOINT时只能读取第一个地址,无法读取第二个。 1.5.0-Hoxton 错误的治理规则导致空指针异常。 AK/SK未配置时启动,报空指针异常。 服务启动后首次并发请求,限流策略不生效。 governance治理选择错误服务导致请求异常。 当环境配置为production时,契约不变,服务重启会失败。 1.6.4-Greenwich 当前服务配置中心配置未变化,发布配置刷新事件,请求过程中可能出现池化配置找不到。 1.6.3-Greenwich 服务删除、重启无法刷新ribbon缓存,导致请求到不可用服务,路由不到可用服务。 1.6.1-Greenwich gateway跨应用服务发现异常。 1.6.0-Greenwich SDK针对401、403错误码,对引擎做出重试请求。 gateway路由规则不生效。 灰度路由时无法获取到微服务最新版本。 AK/SK配置不生效。 server.env配置不生效,全部为空。 Servicecenter在watch模式下启动失败。 读取环境变量PAAS_CSE_SC_ENDPOINT时只能读取第一个地址,无法读取第二个。 不支持跨应用调用。 1.5.0-Greenwich 错误的治理规则导致空指针异常。 AK/SK未配置时空指针异常。 服务启动后首次并发请求,限流策略不生效。 governance服务转发错误。 环境是production时,重复注册契约导致启动失败。 v1.3.3-Greenwich 注册中心监听不生效。 1.6.1-Finchley 服务启动后第一次并发,调用随机失败。 微服务跨应用调用失败。 1.6.0-Finchley SDK针对401、403错误码,对引擎做出重试请求。 gateway路由规则不生效。 灰度路由时无法获取到微服务最新版本。 AK/SK配置不生效。 server.env配置不生效,全部为空。 Servicecenter在watch模式下启动失败。 读取环境变量PAAS_CSE_SC_ENDPOINT时只能读取第一个地址,无法读取第二个。 不支持跨应用调用。 1.5.1-Finchley 配置中心治理配置删除后仍然可以使用。 v1.3.9 说明: 存在重大问题,不推荐使用。 governance存在服务转发严重错误。 v1.3.8 说明: 存在重大问题,不推荐使用。 governance存在服务转发严重错误。 v1.3.4 注册线程池无法正确关闭并导致泄漏。 actuator开启后微服务注册失败。 某些场景心跳次数过多。 v1.3.3 websocket在wss协议请求失败。 注册中心watch不生效。 v1.3.2 当环境设置为production时契约注册失败。 注册中心url未设置时随机选择地址失败。 注册中心配置 域名 时watch异常。 v1.2.0 从ServiceStage读取默认的ak/sk配置时,初始化大量对象,导致内存泄漏。 v1.1.0 heartbeat信息日志过多。 微服务间SSL调用不生效。 url包含空格时请求异常。 v1.0.0 某些场景无法自动服务发现。 v0.0.3 服务发现down状态实例。 配置的路径过长。 微服务连接本地CSE引擎失败。
  • 开发流程说明 开发微服务应用 如果您已经完成了微服务应用的开发,可以跳过本流程,进入准备环境。 进行微服务应用开发,首先需要进行技术选型。技术选型是一个复杂的问题,技术决策者需要考虑使用的技术是否容易被团队成员掌握,技术能否满足项目对于功能、性能、可靠性方面的要求,还需要考虑商业服务等多方面的因素。本文档不探讨技术选型,假设技术团队已经选择了适合自己的开发框架。大部分技术团队都会选择开源框架来构建业务。 开发微服务应用的具体内容,请参考开发微服务应用。 使用Spring Cloud,通常会使用下面的技术进行本地微服务开发: 使用Java Chassis,通常会使用下面的技术进行本地微服务开发: 准备环境 创建云上环境,以支持ServiceComb引擎接入调试、云上应用部署和使用ServiceComb引擎功能。一般情况下,会创建一个测试环境和一个生产环境。通过ServiceStage,能够非常方便的管理云上环境,详细内容请参考准备环境。 对接微服务应用 用于微服务应用对接ServiceComb引擎,涉及到对已经开发好的应用的配置文件、构建脚本的修改。修改完成后,需要对应用重新编译、打包,通过ServiceStage将应用包部署到ServiceComb引擎,详细内容请参考对接微服务应用。 部署微服务应用 开发完成的微服务应用,通过ServiceStage部署到ServiceComb引擎,详细内容请参考部署微服务应用。 使用ServiceComb引擎功能 对于持续发展的应用系统,都会持续完善和迭代,每个迭代可能需要对微服务应用进行更新升级,需要使用更多的ServiceComb引擎功能。持续迭代的功能演进,会重复上面的应用开发、编译、打包和部署环节。详细内容请参考使用ServiceComb引擎功能。
  • 开发能力要求 本文档的主要目的就是说明这些开源微服务开发框架如何接入和使用ServiceComb引擎的功能,假设您已经熟悉和掌握如下开发能力: 使用Java语言进行微服务开发。假设您已经基于一种ServiceStage支持的微服务开发框架开发了应用系统,并期望将应用系统托管在ServiceComb引擎上运行。本文档提供微服务应用接入ServiceComb引擎的相关技术支持。开源微服务开发框架如何使用不是本文档的范围,您可以通过开源社区获取相关微服务开发框架的入门材料和开发指南。 理解注册中心、配置中心在微服务应用中的作用,并在项目中搭建和使用注册中心。不同的微服务开发框架默认支持的开源注册中心会有差异,理解注册中心的作用,可以更加容易的更换注册中心。 熟悉应用部署,请参考创建并部署组件。
  • 什么是Mesher Mesher是Service Mesh的一个具体的实现,是一个轻量的代理服务以Sidecar的方式与微服务一起运行。 Service Mesh是由William Morgan定义: Service Mesh是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,Service Mesh保证请求可以在这些拓扑中可靠地传输。在实际应用当中,Service Mesh通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但应用程序不需要知道它们的存在。 随着云原生应用的崛起,Service Mesh逐渐成为一个独立的基础设施层。在云原生模型里,一个应用可以由数百个服务组成,每个服务可能有数千个实例,而每个实例可能会持续地发生变化。服务间通信不仅异常复杂,而且也是运行时行为的基础。管理好服务间通信对于保证端到端的性能和可靠性来说是非常重要的。 Service Mesh实际上就是处于TCP/IP之上的一个抽象层,假设底层的L3/L4网络能够点对点地传输字节(同时,也假设网络环境是不可靠的,所以Service Mesh必须具备处理网络故障的能力)。 从某种程度上说,Service Mesh有点类似TCP/IP。TCP对网络端点间传输字节的机制进行了抽象,而Service Mesh则是对服务节点间请求的路由机制进行了抽象。Service Mesh不关心消息体是什么,也不关心它们是如何编码的。应用程序的目标是“将某些东西从A传送到B”,而Service Mesh所要做的就是实现这个目标,并处理传送过程中可能出现的任何故障。 与TCP不同的是,Service Mesh有着更高的目标:为应用运行时提供统一的、应用层面的可见性和可控性。Service Mesh将服务间通信从底层的基础设施中分离出来,让它成为整个生态系统的一等公民——它因此可以被监控、托管和控制。
  • 方案架构 区块链 供应链物流与现有参与方IT信息系统的结合,可实现: 统一化账本。提供不可篡改、可追溯的一致性货物流转记录,满足审计要求。 为参与方IT系统提供通用接口接入区块链服务,相关信息输入不可篡改,各自为自己的信用买单,逐步建立信任体系。 通过司机APP附加地址围栏信息自动输入实现实时展示“由谁,在什么时间,在什么地方”处理货物。 履行智能合约。实现自动签收和结算,自动运算输出绩效结果,公平公正。 图1 方案架构
  • 行业现状及痛点 纸质单据 很多环节仍然大量沿用手工操作和纸质单据,导致运单流转时间长、成本高、对账慢、易丢失和污损,文件成本占物流成本的1/5。 效率低 供应链各协作方信息系统独立,没有统一的标准和信息系统,协作方之间协作和作用难度大。 周期长 电子信息易被篡改,只能采用纸质单据作为结算的唯一凭据,上下游核算周期长,承运商的平均应收款账期较长。 融资难 承运商大多为中小企业,缺乏信用记录,信用积累和数据,融资难,融资成本高。
  • 方案优势 减少错误 分布式共享账本极大改善供应链的可追溯和透明度,可有效减少或消除欺诈和错误。 提高效率 通过电子POD,减少纸上作业造成的延误,通过智能合约自动结算,提高效率。 降低成本 通过快速结算,自动接单,有效跟进,可以有效降低各方的物流成本。 透明审计 不可篡改的分布式账本,不可抵赖的签名,能快速有效的发现供应链物流中存在的问题。 提高信任 货物从生产、运输到最终接收,通过区块链技术可以实现全程跟进,规则透明,自动结算,可以极大提高消费者和第三方的信任。
  • 请求消息体(可选) 该部分可选。请求消息体通常以结构化格式(如JSON或XML)发出,与请求消息头中Content-Type对应,传递除请求消息头之外的内容。若请求消息体中的参数支持中文,则中文字符必须为UTF-8编码。 每个接口的请求消息体内容不同,也并不是每个接口都需要有请求消息体(或者说消息体为空),GET、DELETE操作类型的接口就不需要消息体,消息体具体内容需要根据具体接口而定。 对于获取用户Token接口,您可以从接口的请求部分看到所需的请求参数及参数说明。将消息体加入后的请求如下所示,加粗的斜体字段需要根据实际值填写,其中username为用户名,domainname为用户所属的账号名称,********为用户登录密码,xxxxxxxxxxxxxxxxxx为project的名称,如“cn-north-1”,您可以从地区和终端节点获取。 scope参数定义了Token的作用域,下面示例中获取的Token仅能访问project下的资源。您还可以设置Token的作用域为某个账号下所有资源或账号的某个project下的资源,详细定义请参见获取用户Token。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json { "auth": { "identity": { "methods": [ "password" ], "password": { "user": { "name": "username", "password": "********", "domain": { "name": "domainname" } } } }, "scope": { "project": { "name": "xxxxxxxxxxxxxxxxxx" } } } } 到这里为止这个请求需要的内容就具备齐全了,您可以使用curl、Postman或直接编写代码等方式发送请求调用API。对于获取用户Token接口,返回的响应消息头中的“x-subject-token”就是需要获取的用户Token。有了Token之后,您就可以使用Token认证调用其他API。
  • 请求消息头 附加请求头字段,如指定的URI和HTTP方法所要求的字段。例如定义消息体类型的请求头“Content-Type”,请求鉴权信息等。 详细的公共请求消息头字段请参见表3。 表3 公共请求消息头 名称 描述 是否必选 示例 Host 请求的服务器信息,从服务API的URL中获取。值为hostname[:port]。端口缺省时使用默认的端口,https的默认端口为443。 否 使用AK/SK认证时该字段必选。 code.test.com or code.test.com:443 Content-Type 消息体的类型(格式)。推荐用户使用默认值application/json,有其他取值时会在具体接口中专门说明。 否 application/json Content-Length 请求body长度,单位为Byte。 否 3495 X-Auth-Token 用户Token。 用户Token也就是调用获取用户Token接口的响应值,该接口是唯一不需要认证的接口。 请求响应成功后在响应消息头(Headers)中包含的“X-Subject-Token”的值即为Token值。 否 使用Token认证时该字段必选。 注:以下仅为Token示例片段。 MIIPAgYJKoZIhvcNAQcCo...ggg1BBIINPXsidG9rZ API同时支持使用AK/SK认证,AK/SK认证使用SDK对请求进行签名,签名过程会自动往请求中添加Authorization(签名认证信息)和X-Sdk-Date(请求发送的时间)请求头。 AK/SK认证的详细说明请参见认证鉴权的“AK/SK认证”。 对于获取用户Token接口,由于不需要认证,所以只添加“Content-Type”即可,添加消息头后的请求如下所示。 1 2 POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens Content-Type: application/json
  • 请求URI 请求URI由如下部分组成。 {URI-scheme} :// {Endpoint} / {resource-path} ? {query-string} 尽管请求URI包含在请求消息头中,但大多数语言或框架都要求您从请求消息中单独传递它,所以在此单独强调。 表1 URL中的参数说明 参数 描述 URI-scheme 表示用于传输请求的协议,当前所有API均采用HTTPS协议。 Endpoint 指定承载REST服务端点的服务器域名或IP,不同服务不同区域的Endpoint不同,您可以从管理员处获取。 resource-path 资源路径,也即API访问路径。从具体API的URI模块获取,例如“获取用户Token”API的resource-path为“/v3/auth/tokens”。 query-string 查询参数,是可选部分,并不是每个API都有查询参数。查询参数前面需要带一个“?”,形式为“参数名=参数取值”,例如“limit=10”,表示查询不超过10条数据。 例如您需要获取IAM在“华北-北京一”区域的Token,则需使用“华北-北京一”区域的Endpoint(iam.cn-north-1.myhuaweicloud.com),并在获取用户Token的URI部分找到resource-path(/v3/auth/tokens),拼接起来如下所示。 https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens 图1 URI示意图 为查看方便,在每个具体API的URI部分,只给出resource-path部分,并将请求方法写在一起。这是因为URI-scheme都是HTTPS,而Endpoint在同一个区域也相同,所以简洁起见将这两部分省略。
  • 请求方法 HTTP请求方法(也称为操作或动词),它告诉服务你正在请求什么类型的操作。 表2 HTTP方法 方法 说明 GET 请求服务器返回指定资源。 PUT 请求服务器更新指定资源。 POST 请求服务器新增资源或执行特殊操作。 DELETE 请求服务器删除指定资源,如删除对象等。 HEAD 请求服务器资源头部。 PATCH 请求服务器更新资源的部分内容。当资源不存在的时候,PATCH可能会去创建一个新的资源。 在获取用户Token的URI部分,您可以看到其请求方法为“POST”,则其请求为: POST https://iam.cn-north-1.myhuaweicloud.com/v3/auth/tokens
  • 错误码 当您调用API时,如果遇到“APIGW”开头的错误码,请参见API网关错误码进行处理。 状态码 错误码 错误信息 描述 处理措施 400 KOOPHONE.API.1000 请求参数错误 请求参数错误 检查请求参数类型及范围是否如何接口定义 400 KOOPHONE.API.1002 实例非同一个大区 实例非同一个大区 修改请求实例为同一个大区 401 KOOPHONE.API.1001 无实例权限 无实例权限 检查请求传入的实例id是否正确 500 KOOPHONE.API.9999 服务器内部错误 服务器内部错误 请联系华为侧运营人员检查系统是否正常 父主题: 附录
  • API概览 云手机服务接口的分类与说明如表1所示。 表1 KooPhone接口说明 类型 说明 实例执行同步命令 通过该接口可以指定云机实例同步执行adb shell命令。 实例执行异步命令 通过该接口可以指定云机实例异步执行adb shell命令。 实例执行任务查询 执行异步adb shell命令后,通过此接口查询执行结果。 实例视频设置 通过此接口可以设置串流的分辨率、码率以及对应的网络格式和FPS。 实例状态批量查询 通过该接口可以指定云机实例查询状态。 实例批量重置 通过该接口可以指定云机实例进行重置。 租户实例串流前获取设备的device_token 调用该接口获取云机实例的device_token后作为鉴权信息,携带云机实例的device_id去调用反参中的信令地址(signaling_url)。
  • 与云手机服务器(CPH)的差异 云手机服务器(Cloud Phone Host,简称CPH),是基于华为云鲲鹏裸金属服务器在服务器上虚拟出N个带有原生安卓操作系统,具有虚拟手机功能的云手机服务器。简单来说,云手机服务器=云服务器+Android OS。您可以远程实时控制云手机,实现安卓APP的云端运行;也可以基于云手机服务器的基础算力,高效搭建应用,如云游戏、移动办公、直播互娱等场景。 云手机服务(KooPhone)是在CPH的基础上,提供了上层复杂的软件系统,更偏向于用户体验的提升,通过端云协同引擎、计算资源管理、用户账号鉴权认证、手机UI界面优化等等一系列的技术叠加,在CPH的基础上向用户提供了一个远程手机操作环境。 更多关于云手机服务器CPH的详细信息,请参见云手机服务器CPH产品介绍。
  • 云手机服务介绍 云手机服务(KooPhone)是华为云面向政企、互联网等客户推出的一款优体验、高安全云手机服务,融合了ARM服务器虚拟化、音视频编解码、实时传输能力等核心技术,并引入华为丰富的应用生态,为更多带屏联网设备提供云算力和云应用。 KooPhone充分发挥端云协同的优势,提供端云交互、跨屏分享和互动、麦克风和摄像头等各类传感器的模拟仿真,以及应用和数据权限云端统一管控等多种功能特性,并基于华为全场景智慧生态满足客户不同应用诉求,可便捷安全地应用于移动办公、客服同屏互助、个人/家庭娱乐等多种场景。
  • 通用云手机 通用云手机提供的功能详情请参见表1 表1 通用云手机功能概览 功能名称 功能描述 云手机实例管理 支持云手机实例关机、开机、重启、删除、绑定/解绑用户、应用卸载。 支持云手机实例运行、登录状态查询。 支持云手机实例绑定状态、到期时间查询。 端云协同引擎 提供端侧和云侧的音视频流编解码能力。 支持断网和网络切换后的自动重连。 支持音视频采样频率和码率的自动调整。 支持端云之间的应用上传。 端云设备仿真 支持触控、麦克风、摄像头、GPS、陀螺仪、加速度传感器、重力传感器、光线传感器的设备仿真能力。 组织和用户管理 支持组织和部门的管理。 支持组织和部门下用户的管理。 应用部署 支持应用上传和删除。 支持应用在云手机的批量安装和卸载。 支持应用部署任务查询。 安全管控能力 支持云手机防截屏能力。 支持应用安装黑白名单管控能力。 支持端云之间音视频流、控制流的 数据加密 传输。 支持管理员和用户实时监控云手机实例的网络流量。 云手机在推送视频流时叠加实时水印。 父主题: 产品功能
  • 约束与限制 KooPhone服务使用时存在如下约束与限制: 仅限已通过华为云企业认证的用户购买使用。 用户不能使用KooPhone云手机进行挂机、刷单等灰产,违法以及违反华为安全要求等行为。违反相关要求,用户云手机会被受限/冻结。 云手机实例暂不支持规格变更(比如:变更云手机CPU核数、内存、存储空间大小)。如果需要调整规格,请将云手机实例退订后重新购买符合要求的规格。 华为云账户受限/冻结或者云手机资源进入保留期时,KooPhone云手机使用会受到限制(包括但不限于登录、重启、重置云手机等),用户应提前了解处理,避免影响业务。 保留期满仍未续费或充值,KooPhone将停止提供服务,存储在用户云手机实例中的数据将被删除,云手机实例将被释放。
共100000条