华为云用户手册

  • Kafka作为source表时必须指定“properties.group.id”配置项 【示例】以“testGroup”为用户组读取主题为“test_sink”的Kafka消息: CREATE TABLE KafkaSource( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT ) WITH ( 'connector' = 'kafka', 'topic' = 'test_sink', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'scan.startup.mode' = 'latest-offset', 'properties.group.id' = 'testGroup', 'value.format' = 'csv', 'properties.sasl.kerberos.service.name' = 'kafka', 'properties.security.protocol' = 'SASL_PLAINTEXT', 'properties.kerberos.domain.name' = 'hadoop.系统域名' ); SELECT * FROM KafkaSource;
  • Kafka作为sink表时必须指定“topic”配置项 【示例】向Kafka的“test_sink”主题插入一条消息: CREATE TABLE KafkaSink( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT ) WITH ( 'connector' = 'kafka', 'topic' = 'test_sink', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'scan.startup.mode' = 'latest-offset', 'value.format' = 'csv', 'properties.sasl.kerberos.service.name' = 'kafka', 'properties.security.protocol' = 'SASL_PLAINTEXT', 'properties.kerberos.domain.name' = 'hadoop.系统域名' ); INSERT INTO KafkaSink (`user_id`, `user_name`, `age`)VALUES ('1', 'John Smith', 35);
  • Hudi表初始化 初始化导入存量数据通常有Spark作业来完成,由于初始化数据量通常较大,因此推荐使用API方式给充足资源来完成。 对于批量初始化后需要接Flink或Spark流作业实时写入的场景,一般建议通过对上有消息进行过滤,从一个指定的时间范围开始消费来控制数据的重复接入量(例如Spark初始化完成后,Flink消费Kafka时过滤掉2小时之前的数据),如果无法对kafka消息进行过滤,则可以考虑先实时接入生成offset,再truncate table ,再历史导入,再开启实时。 初始化操作流程应遵循下面的步骤: 如果批量初始化前表里已经存在数据且没有truncate table,则会导致批量数据写成非常大的log文件,对后续compaction形成很大压力需要更多资源才能完成 Hudi表在Hive元数据中,应该会存在1张内部表(手动创建),2张外部表(写入数据后自动创建)。 2张外部表,表名_ro(用户只读合并后的parquet文件,即读优化视图表),_rt(读实时写入的最新版本数据,即实时视图表)。 父主题: Bucket调优示例
  • Kafka作为source表时应设置限流 本章节适用于MRS 3.3.0及以后版本。 防止上限超过流量峰值,导致作业异常带来不稳定因素。因此建议设置限流,限流上限应该为业务上线压测的峰值。 【示例】 #如下参数作用在每个并行度 'scan.records-per-second.limit' = '1000' #真实的限流流量如下 min( parallelism * scan.records-per-second.limit,partitions num * scan.records-per-second.limit)
  • 为保证数据准确性将同key数据写入Kafka的同一个分区 Flink写Kafka使用fixed策略,并在写入之前根据key进行Hash。 【示例】 CREATE TABLE kafka ( f_sequence INT, f_sequence1 INT, f_sequence2 INT, f_sequence3 INT ) WITH ( 'connector' = 'kafka', 'topic' = 'yxtest123', 'properties.bootstrap.servers' = '192.168.0.104:9092', 'properties.group.id' = 'testGroup1', 'scan.startup.mode' = 'latest-offset', 'format' = 'json', 'sink.partitioner'='fixed' ); insert into kafka select /*+ DISTRIBUTEBY('f_sequence','f_sequence1') */ * from datagen;
  • 响应消息 响应参数说明请参见下表: 表2 响应参数表 参数 是否必选 类型 最大字符长度 说明 resultCode M String 6 调用结果码。 具体请参见调用结果码说明。 resultMsg O String 255 调用结果描述。 encryptType O String 3 敏感信息加密算法 1:AES256_CBC_PKCS5Padding(默认值) 2:AES128_CBC_PKCS5Padding 说明: 敏感信息加密算法是AES256_CBC_PKCS5Padding时返回值为1; 敏感信息加密算法是AES128_CBC_PKCS5Padding时返回值为2; info O InstanceInfo[] / 实例详情 InstanceInfo数据结构定义如下: 参数 是否必选 类型及范围 最大字符长度 参数说明 instanceId M String 64 实例id appInfo O AppInfo N/A 应用实例信息。 客户购买商品后,商家需要返回登录服务地址(网站地址)或免登地址供客户后续操作。 说明: SaaS商品必须向客户提供应用使用信息,包括使用地址、账号、密码等。 如可实现通过短信、邮件等其他方式发送使用信息,则接口中允许不响应;否则,必须在接口中返回应用实例信息。 如使用信息不仅包含使用地址及账号密码,可通过如下memo参数灵活返回其他使用信息或使用说明等。 appInfo数据结构定义请参见下表。 usageInfo O UsageInfo[] N/A 应用实例关联的用量信息,按需和按需套餐包实例需要返回,对应按需套餐包,需要分别返回套餐包关联的所有费用项的用量信息。 AppInfo数据结构定义如下: 参数 是否必选 类型及范围 最大字符长度 参数说明 frontEndUrl M String 512 前台地址。 客户购买商品后,可以访问的网站地址。 adminUrl O String 512 管理地址。 客户购买商品后,可以访问的管理后台地址。 userName O String 128 加密后的管理员账号。 客户购买商品后,访问商家管理后台的账号(一般为邮箱和手机号)。该值由16位iv加密向量和base编码后的用户名密文组成。 iv+base64(AES_CBC(accessKey,userName)) 需要使用Key值对账号做加密处理,加密算法以encryptType参数为准。代码示例请参见ISV Server对资源开通后的用户名和密码加密。 password O String 128 加密后的管理员初始密码。 客户购买商品后,访问商家管理后台的密码(一般由商家生成)。该值由16位iv加密向量和base编码后的密码密文组成。 iv+base64(AES_CBC(accessKey,pwd)) 需要使用Key值对密码做加密处理,加密算法以encryptType参数为准。代码示例请参见ISV Server对资源开通后的用户名和密码加密。 memo O String 1024 备注。 说明: 如果备注包含中文内容,请将中文转换成unicode编码,例如:“中文”可以转换成“\u4e2d\u6587”。 UsageInfo数据结构定义如下: 参数 是否必选 类型及范围 最大字符长度 参数说明 relatedInstanceId O String 64 关联的按需实例ID,当查询按需套餐包实例的用量数据时,还需要返回此用量对应的按需实例id,譬如,当前套餐包包含短信100条和彩信50条,则在查询此套餐包的用量扣减时需要返回两个UsageInfo信息,分别对应短信和彩信的用量信息,relatedInstanceId分别对应短信和彩信按需实例ID usageValue M Double(12,4) 20 使用量具体值,最多支持4位有效小数,对于按需实例,应该是一个总体的累积值,对于按需套餐包实例,应该是套餐包的已用用量信息 statisticalTime M String 20 使用量统计时间,取UTC时间。 格式:yyyyMMddHHmmssSSS dashboardUrl O String 512 用量详细查看看板地址。 客户购买按需或按需套餐包商品后,可以在这个平台查看具体的用量信息。 响应消息示例: { "resultCode" : "000000", "resultMsg" : "success.", "encryptType" : "1", "info" : [{ "instanceId" : "ebc28eb6-4606-4098-b4bd-c201c99a0654", "appInfo" : { "frontEndUrl" : "https://www.***.com", "adminUrl" : "https://www.*****.com/admin", "userName" : "*****", "password" : "*****", "memo" : "hvave a test, 测试!" }, "usageInfo" : [{ "relatedInstanceId" : "ebc28eb6-4606-4098-b4bd-c201c99a0654", "usageValue" : "0.12", "statisticalTime" : "20221101025113409", "dashboardUrl" : "https://www.baidu.com/dashboard" } ] }, { "instanceId" : "fe28e27e-1157-4105-8592-24cc9488db10", "appInfo" : { "frontEndUrl" : "https://www.***.com", "adminUrl" : "https://www.***.com/admin", "userName" : "*****", "password" : "*****", "memo" : "hvave a test, 测试!" }, "usageInfo" : [{ "relatedInstanceId" : "fe28e27e-1157-4105-8592-24cc9488db10", "usageValue" : "2042", "statisticalTime" : "20221101025113409", "dashboardUrl" : "https://www.baidu.com/dashboard" } ] }, { "instanceId" : "92df74e4-163e-4e0b-a206-d9800d33881b", "appInfo" : { "frontEndUrl" : "https://www.baidu.com", "adminUrl" : "https://www.baidu.com/admin", "userName" : "huawei", "password" : "huawei123456", "memo" : "hvave a test, 测试!" }, "usageInfo" : [{ "relatedInstanceId" : "ebc28eb6-4606-4098-b4bd-c201c99a0654", "usageValue" : "3309", "statisticalTime" : "20221101025113409", "dashboardUrl" : "https://www.baidu.com/dashboard" }, { "relatedInstanceId" : "fe28e27e-1157-4105-8592-24cc9488db10", "usageValue" : "3309", "statisticalTime" : "20221101025113409", "dashboardUrl" : "https://www.baidu.com/dashboard" } ] } ] }
  • 请求方法:GET 请求参数说明请参见下表: 表1 请求参数表 参数 是否必选 类型 最大字符长度 说明 authToken M String 50 安全校验令牌。 取值请参见authToken取值说明。 activity M String 20 接口请求标识,用于区分接口请求场景。 查询实例场景取值:queryInstance timeStamp M String 20 请求发起时的时间戳,取UTC时间。 格式:yyyyMMddHHmmssSSS instanceId M String 64 实例ID,支持批量,多个实例批量查询时用逗号分隔,单次最多支持100个实例查询。 testFlag O String 2 是否为调试请求。 1:调试请求 0:非调试业务 默认取值为“0”。 请求示例: https://example.isv.com?activity=queryInstance&instanceId=ebc28eb6-4606-4098-b4bd-c201c99a0654%2Cfe28e27e-1157-4105-8592-24cc9488db10%2C92df74e4-163e-4e0b-a206-d9800d33881b&testFlag=1&timeStamp=20230327065233980&authToken=Eh%2F3Ud%2BR1j3d%2FwOui5CAcvRipM8IuribvgkXfJAsTfE%3D
  • 响应消息 响应参数说明请参见下表: 表2 响应参数表 参数 是否必选 类型 最大字符长度 说明 resultCode M String 6 调用结果码。 具体请参见调用结果码说明。 resultMsg O String 255 调用结果描述。 encryptType O String 3 敏感信息加密算法 1:AES256_CBC_PKCS5Padding(默认值) 2:AES128_CBC_PKCS5Padding 说明: 敏感信息加密算法是AES256_CBC_PKCS5Padding时返回值为1; 敏感信息加密算法是AES128_CBC_PKCS5Padding时返回值为2; info O InstanceInfo[] / 实例详情 InstanceInfo数据结构定义如下: 参数 是否必选 类型及范围 最大字符长度 参数说明 instanceId M String 64 实例id appInfo O AppInfo N/A 应用实例信息。 客户购买商品后,商家需要返回登录服务地址(网站地址)或免登地址供客户后续操作。 说明: SaaS商品必须向客户提供应用使用信息,包括使用地址、账号、密码等。 如可实现通过短信、邮件等其他方式发送使用信息,则接口中允许不响应;否则,必须在接口中返回应用实例信息。 如使用信息不仅包含使用地址及账号密码,可通过如下memo参数灵活返回其他使用信息或使用说明等。 appInfo数据结构定义请参见下表。 usageInfo O UsageInfo[] N/A 应用实例关联的用量信息,按需和按需套餐包实例需要返回,对应按需套餐包,需要分别返回套餐包关联的所有费用项的用量信息 AppInfo数据结构定义如下: 参数 是否必选 类型及范围 最大字符长度 参数说明 frontEndUrl M String 512 前台地址。 客户购买商品后,可以访问的网站地址。 adminUrl O String 512 管理地址。 客户购买商品后,可以访问的管理后台地址。 userName O String 128 加密后的管理员账号。 客户购买商品后,访问商家管理后台的账号(一般为邮箱和手机号)。该值由16位iv加密向量和base编码后的用户名密文组成。 iv+base64(AES_CBC(accessKey,userName)) 需要使用Key值对账号做加密处理,加密算法以encryptType参数为准。代码示例请参见ISV Server对资源开通后的用户名和密码加密。 password O String 128 加密后的管理员初始密码。 客户购买商品后,访问商家管理后台的密码(一般由商家生成)。该值由16位iv加密向量和base编码后的密码密文组成。 iv+base64(AES_CBC(accessKey,pwd)) 需要使用Key值对密码做加密处理,加密算法以encryptType参数为准。代码示例请参见 ISV Server对资源开通后的用户名和密码加密。 memo O String 1024 备注。 说明: 如果备注包含中文内容,请将中文转换成unicode编码,例如:“中文”可以转换成“\u4e2d\u6587”。 UsageInfo数据结构定义如下: 参数 是否必选 类型及范围 最大字符长度 参数说明 relatedInstanceId O String 64 关联的按需实例ID,当查询按需套餐包实例的用量数据时,还需要返回此用量对应的按需实例id,譬如,当前套餐包包含短信100条和彩信50条,则在查询此套餐包的用量扣减时需要返回两个UsageInfo信息,分别对应短信和彩信的用量信息,relatedInstanceId分别对应短信和彩信按需实例ID usageValue M Double(12,4) 20 使用量具体值,最多支持4位有效小数,对于按需实例,应该是一个总体的累积值,对于按需套餐包实例,应该是套餐包的已用用量信息 statisticalTime M String 20 使用量统计时间,取UTC时间。 格式:yyyyMMddHHmmssSSS dashboardUrl O String 512 用量详细查看看板地址。 客户购买按需或按需套餐包商品后,可以在这个平台查看具体的用量信息。 响应消息示例: { "resultCode" : "000000", "resultMsg" : "success.", "encryptType" : "1", "info" : [{ "instanceId" : "ebc28eb6-4606-4098-b4bd-c201c99a0654", "appInfo" : { "frontEndUrl" : "https://www.***.com", "adminUrl" : "https://www.***.com/admin", "userName" : "******", "password" : "********", "memo" : "hvave a test, 测试!" }, "usageInfo" : [{ "relatedInstanceId" : "ebc28eb6-4606-4098-b4bd-c201c99a0654", "usageValue" : "0.12", "statisticalTime" : "20221101025113409", "dashboardUrl" : "https://www.baidu.com/dashboard" } ] }, { "instanceId" : "fe28e27e-1157-4105-8592-24cc9488db10", "appInfo" : { "frontEndUrl" : "https://www.****.com", "adminUrl" : "https://www.*****.com/admin", "userName" : "******", "password" : "***********", "memo" : "hvave a test, 测试!" }, "usageInfo" : [{ "relatedInstanceId" : "fe28e27e-1157-4105-8592-24cc9488db10", "usageValue" : "2042", "statisticalTime" : "20221101025113409", "dashboardUrl" : "https://www.baidu.com/dashboard" } ] }, { "instanceId" : "92df74e4-163e-4e0b-a206-d9800d33881b", "appInfo" : { "frontEndUrl" : "https://www.*****.com", "adminUrl" : "https://www.*****.com/admin", "userName" : "*****", "password" : "*******", "memo" : "hvave a test, 测试!" }, "usageInfo" : [{ "relatedInstanceId" : "ebc28eb6-4606-4098-b4bd-c201c99a0654", "usageValue" : "3309", "statisticalTime" : "20221101025113409", "dashboardUrl" : "https://www.baidu.com/dashboard" }, { "relatedInstanceId" : "fe28e27e-1157-4105-8592-24cc9488db10", "usageValue" : "3309", "statisticalTime" : "20221101025113409", "dashboardUrl" : "https://www.baidu.com/dashboard" } ] } ] }
  • 请求方法:GET 请求参数说明请参见下表: 表1 请求参数表 参数 是否必选 类型 最大字符长度 说明 authToken M String 50 安全校验令牌。 取值请参见authToken取值说明。 activity M String 20 接口请求标识,用于区分接口请求场景。 查询实例场景取值:queryInstance timeStamp M String 20 请求发起时的时间戳,取UTC时间。 格式:yyyyMMddHHmmssSSS instanceId M String 64 实例ID,支持批量,多个实例批量查询时用逗号分隔,单次最多支持100个实例查询。 testFlag O String 2 是否为调试请求。 1:调试请求 0:非调试业务 默认取值为“0”。 请求示例: https://example.isv.com?activity=queryInstance&instanceId=ebc28eb6-4606-4098-b4bd-c201c99a0654%2Cfe28e27e-1157-4105-8592-24cc9488db10%2C92df74e4-163e-4e0b-a206-d9800d33881b&testFlag=1&timeStamp=20230327065233980&authToken=Eh%2F3Ud%2BR1j3d%2FwOui5CAcvRipM8IuribvgkXfJAsTfE%3D
  • 前提条件 发布按需计量的联营SaaS商品时,需要在该产品的生产接口服务器上开发生产系统接口,具体操作方式可参考《SaaS类商品接入指南V2.0》。 接口版本 计费类型 需要开发并调试的接口类型 V 1.0 按需付费 新购-按需 释放 资源状态变更 查询实例 租户同步 应用同步 授权用户 组织部门信息同步(增量) 组织部门信息同步(全量) 按需使用量推送(新) 按需套餐包 新购-按需 释放 资源状态变更 查询实例 租户同步 应用同步 授权用户 组织部门信息同步(增量) 组织部门信息同步(全量) 按需使用量推送(新) V2.0 按需付费、按需套餐包 创建实例 查询实例信息 更新实例 释放实例 企业同步 应用同步 用户授权同步 部门增量同步 部门全量同步 按需使用量推送(新)
  • 操作场景 SFS容量型文件系统除了支持多VPC访问,还支持跨账号跨VPC访问。 只要将其他账号使用的VPC的VPC ID添加到SFS容量型文件系统的权限列表下,且云服务器IP地址或地址段被添加至授权地址中,则实际上不同账号间的云服务器也能共享访问同一个文件系统。 更多关于VPC的信息请参见虚拟私有云 VPC。 SFS Turbo文件系统基于VPC的对等连接功能,实现跨账号访问。更多关于VPC对等连接功能信息和实现方法请参见VPC对等连接。 本章节介绍SFS容量型文件系统如何实现跨账号跨VPC访问。SFS容量型文件系统目前仅北京四支持跨账号访问功能。
  • SFS容量型操作步骤 登录弹性文件服务管理控制台。 在文件系统列表中单击目标文件系统名称,进入权限列表界面。 可以为文件系统添加多个其他账号使用的VPC,单击“租户授权添加VPC”,弹出“租户授权添加VPC”对话框。如图1所示。 图1 租户授权添加VPC 可以根据参数说明如表1所示完成添加。 表1 参数说明 参数 说明 虚拟私有云 添加VPC的VPC ID。VPC ID可以前往虚拟私有云控制台,查看目标VPC详情获取。 授权地址 只能输入一个IPv4地址/地址段。 输入的IPv4地址/地址段必须合法,且不能为除0.0.0.0/0以外之前0开头的IP地址或地址段,其中当设置为0.0.0.0/0时表示VPC内的任意IP。同时,不能为127以及224~255开头的IP地址或地址段,例如127.0.0.1,224.0.0.1,255.255.255.255,因为以224-239开头的IP地址或地址段是属于D类地址,用于组播;以240-255开头的IP地址或地址段属于E类地址,用于研究。使用非合法的IP或IP地址段可能会导致添加访问规则失败或者添加的访问规则无法生效。 无法输入多个地址,如:10.0.1.32,10.5.5.10用逗号分隔等形式的多个地址。 如果要表示一个地址段,如192.168.1.0-192.168.1.255的地址段应使用掩码形式:192.168.1.0/24,不支持192.168.1.0-255等其他地址段表示形式。掩码位数的取值为0到31的整数,且只有为0.0.0.0/0时掩码位数可取0,其他情况均不合法。 优先级 优先级只能是0-100的整数。0表示优先级最高,100表示优先级最低。同一VPC内挂载时会优先使用该优先级高的IP地址/地址段所拥有的权限,存在相同优先级时会优先匹配最新添加或修改的IP地址/地址段。例如:用户在执行挂载操作时的IP地址为10.1.1.32,而在已经授权的IP地址/地址段中10.1.1.32(读写)优先级为100和10.1.1.0/24(只读)优先级为50均符合要求,则用户权限会使用优先级为50的10.1.1.0/24(只读)的只读权限。10.1.1.0/24内的所有地址包括10.1.1.32,在无其他授权优先级的情况下,则将会使用优先级为50的10.1.1.0/24(只读)的只读权限。 读或写权限 分为读/写权限和只读权限。默认为“读/写”。 用户权限 设置是否保留共享目录的UID和GID。默认为“no_all_squash”。 all_squash:共享文件的UID(User ID)和GID(Group ID)映射给nobody用户,适合公共目录。 no_all_squash:保留共享文件的UID和GID。 CIFS类型的文件系统添加授权地址时,不涉及该参数。 用户root权限 设置是否允许客户端的root权限。默认为“no_root_squash”。 root_squash:不允许客户端以root用户访问,客户端使用root用户访问时映射为nobody用户。 no_root_squash:允许客户端以root用户访问,root用户具有根目录的完全控制访问权限。 CIFS类型的文件系统添加授权地址时,不涉及该参数。 单击“确定”,完成添加。添加成功的VPC会出现在列表中。 单击VPC名称左边的,可以查看目标VPC添加的IP地址/地址段的详细信息。可以对其进行添加、编辑和删除IP地址/地址段的操作。在目标VPC的“操作”列,单击“添加”,弹出“添加授权地址”的弹窗,如图2所示。可以根据参数说明如表1所示完成添加。 图2 增加授权地址
  • 购买Redis 登录分布式缓存服务管理控制台。 单击控制台右上方的“购买缓存实例”,进入购买页面。 选择“计费模式”,此处以创建“按需计费”Redis为例。 在“区域”下拉列表中,选择靠近您应用程序的区域,可降低网络延时、提高访问速度。 选择实例配置,配置详情请参考选择实例配置。 图1 配置1 图2 配置2 购买ecs服务器,分别部署MongoDB、RocketMQ、nacos配置注册中心(购买ecs省略) 登录ecs服务器安装MongoDB,步骤如下 关闭防火墙和selinux [root@mongodb ~]# iptables -F [root@mongodb ~]# setenforce 0 [root@mongodb ~]# systemctl stop firewalld 指定一个进程同一时间最多可开启的文件数 [root@mongodb ~]# ulimit -n 1024 [root@mongodb ~]# ulimit -n 65535 [root@mongodb ~]# ulimit -n 65535 用户最多可开启的进程数目 [root@mongodb ~]# ulimit -u 7758 [root@mongodb ~]# ulimit -u 65535 [root@mongodb ~]# ulimit -u 65535 安装版本下载地址: [root@mongodb ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.6.tgz [root@mongodb ~]# tar xf mongodb-linux-x86_64-rhel70-4.0.6.tgz [root@mongodb ~]# mv mongodb-linux-x86_64-rhel70-4.0.6 /usr/local/mongodb [root@mongodb ~]# ln -s /usr/local/mongodb/bin/* /bin/ 创建数据目录,日志文件及目录并创建相应配置文件 [root@mongodb ~]# mkdir -p /data/mongodb1 //数据目录 [root@mongodb ~]# mkdir -p /data/logs/mongodb //日志目录 [root@mongodb ~]# touch /data/logs/mongodb/mongodb1.log //日志文件 [root@mongodb ~]# cd /usr/local/mongodb/ [root@mongodb mongodb]# mkdir conf //配置文件目录 [root@mongodb mongodb]# vim conf/mongodb1.conf //配置文件 port=27017 //监听端口 dbpath=/data/mongodb1 logpath=/data/logs/mongodb/mongodb1.log logappend=true fork=true maxConns=5000 storageEngine=mmapv1 启动MongoDB数据库,-f指定配置文件 [root@mongodb mongodb]# /usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb1.conf [root@mongodb ~]# netstat -lnpt | grep mongod [root@mongodb ~]# ps aux | grep mongod | grep -v grep 设置开机自动启动 [root@mongodb mongodb]# vim /etc/rc.local rm -f /data/mongodb1/mongod.lock mongod -f /usr/local/mongodb/conf/mongodb1.conf 登录ecs服务器安装RocketMQ,步骤如下 去官网下载二进制包并上传到目录 https://rocketmq.apache.org/zh/download/ mkdir -p /data/rocketmq unzip rocketmq-all-5.1.4-bin-release.zip 添加系统账号mq要用这个账号来执行 adduser rocketmq 修改目录权限 chown -R rocketmq:rocketmq /data/rocketmq/ chmod -R 755 /data/rocketmq 设置 ROCKETMQ_HOME 环境变量,指向你的 RocketMQ 安装目录 vim /etc/profile 在后面添加 export ROCKETMQ_HOME=/data/rocketmq/rocketmq export PATH=$PATH:$ROCKETMQ_HOME/bin 配置生效 source /etc/profile 启动 NameServer 和 Broker: 在 ROCKETMQ_HOME 目录下,使用以下命令启动 NameServer 和 Broker nohup sh bin/mqnamesrv & nohup sh bin/mqbroker -n 127.0.0.1:9876 & 为了使 RocketMQ 和控制台在系统重启后自动启动,可以创建一个 systemd 服务文件 创建 /etc/systemd/system/rocketmq-namesrv.service 文件,添加以下内容: [Unit] Description=RocketMQ NameServer After=network.target [Service] ExecStart=/data/rocketmq/rocketmq/bin/mqnamesrv User=rocketmq Restart=on-failure [Install] WantedBy=multi-user.target 创建 /etc/systemd/system/rocketmq-broker.service 文件,添加以下内容 [Unit] Description=RocketMQ Broker After=network.target [Service] ExecStart=/data/rocketmq/rocketmq/bin/mqbroker -n 127.0.0.1:9876 User=rocketmq Restart=on-failure [Install] WantedBy=multi-user.target 修改启动脚本权限 chmod -R 755 /etc/systemd/system/rocketmq-namesrv.service chmod -R 755 /etc/systemd/system/rocketmq-broker.service 启用并设置开机启动服务 systemctl enable rocketmq-namesrv systemctl enable rocketmq-broker systemctl daemon-reload systemctl start rocketmq-namesrv systemctl start rocketmq-broker systemctl status rocketmq-namesrv 通过docker部署图形控制平台(控制台仅在修改配置的时候启动,平时容器处于未启动状态) docker run -d \ --name anxun-rocketmq-dashboard \ -e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=127.0.0.1:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \ -p 8080:8080 \ apacherocketmq/rocketmq-dashboard 登录ecs服务器安装nacos,步骤如下 下载和基本配置sql信息 从nacos官网 https://nacos.io/zh-cn/index.html 下载安装包 用rz命令上传安装包 解压 tar -zxvf nacos-server-2.2.3.tar.gz 在rds里面创建数据库nacos,并设置字符集utf8 修改/nacos/conf/application.properties文件,把数据库地址改成rds的内网ip,用户名密码,参考如下 spring.datasource.platform=mysql db.num=1 db.url.0=jdbc:mysql://localhost:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true db.user=root db.password=123456 执行/nacos/conf/nacos-mysql.sql中的语句,创建表,并插入数据 执行脚本部署 cd /nacos/bin sh startup.sh -m standalone 登录nacos 配置访问文件 图3 配置访问文件 登录控制台购买cce容器引擎 图4 购买 图5 cce创建1 图6 cce创建2 图7 cce创建3 cce创建好后先创建命名空间 图8 创建命名空间1 图9 创建命名空间2 图10 创建命名空间3 图11 创建命名空间4 创建cce节点池(就是运行容器的ecs服务器) 图12 节点池1 图13 节点池2 图14 节点池3 图15 节点池4 下一步提交即可 图16 提交 创建cce工作负载 图17 工作负载1 图18 工作负载2 往下拉添加服务(访问端口) 图19 添加服务1 图20 添加服务2 完成创建 图21 完成1 图22 完成2 父主题: 实施步骤
  • 查看微服务 进入微服务,在微服务列表页单击微服务名称,可查看微服务详细信息。 概览 概览页展示微服务的创建人、创建时间以及代码源等信息,可根据需要编辑微服务语言、关联的代码仓库和描述信息。 更换代码仓库时,如果微服务下存在没有关闭的变更或运行中的流水线,页面会弹出“数据处理”侧滑框,需先关闭所有变更并停止所有运行中的流水线。 变更 管理微服务下的变更信息,详情请参见变更管理。 流水线 管理微服务下的流水线资源,微服务下的流水线和普通流水线有如下区别: 微服务中,创建流水线时代码仓库不可更改,默认与微服务绑定的代码仓库一致。 修改微服务的代码仓库,微服务下所有流水线配置的代码库会自动更改。 微服务中,可创建一条“变更流水线”,用于联动微服务下的变更,发布变更资源,更多变更流水线的说明,参见变更与流水线。 父主题: 微服务管理
  • 概览 流水线权限从上到下可以分成三个层级,分别控制不同模块不同粒度的用户行为。 层级 模块 描述 租户级权限控制 扩展插件、策略(租户级)、租户级规则、流水线模板 控制租户账号下各模块资源,在统一身份认证服务中进行配置,生效范围为整个租户下的全部项目。 项目级权限控制 流水线、策略(项目级)、微服务、变更、微服务发布和开发者联调 控制某一具体项目下的模块资源,在项目设置中进行配置,生效范围为整个项目下的全部资源。 资源级权限控制 流水线 控制某一具体流水线的操作权限,在流水线编辑状态进行配置,支持按项目成员或项目角色粒度进行设置。 父主题: 配置流水线权限
  • 函数 表达式中可使用如下内置函数。 contains 格式 contains(search, item) 含义 如果“search”包含“item”,则函数返回“true”。如果“search”是一个数组,那么如果“item”是数组中的一个元素,则此函数返回“true”;如果“search”是一个字符串,那么如果“item”是“search”的子字符串,则函数返回“true”。 示例 contains('abc', 'bc') ,函数将返回“true”。 startsWith 格式 startsWith(searchString, searchValue) 含义 如果“searchString ”以“searchValue”开始,则函数返回“true ”。 示例 startsWith('abc', 'ab'),函数将返回“true”。 endsWith 格式 endsWith(searchString, searchValue) 含义 如果“searchString”以“searchValue”结束,则函数返回“true”。 示例 endsWith('abc', 'bc'),函数将返回“true”。 对象筛选器 使用“*”语法应用筛选器并选择集合中的匹配项。 示例: 如下是流水线某次运行的jobs上下文。 则“jobs.*.status”返回“[ 'COMPLETED', 'FAILED' ]”。 可结合contains函数一起使用,如:contains(jobs.*.status, 'FAILED'),函数将返回“true”。 { "check_job": { "status": "COMPLETED", "metrics": { "critical": "0", "major": "0" } }, "demo_job": { "status": "FAILED" } }
  • 背景信息 流水线参数可以传递给各个任务使用(通过“${参数名}”方式引用),实现任务间数据流动的统一,用户只需要配置好流水线参数,即可完成构建、部署、接口测试等任务的数据拉通。流水线参数包括以下两种。 自定义参数:根据需要自定义添加,参数类型包括:字符串类型、枚举类型、自增长类型。 系统预定义参数:系统默认提供的参数,无需定义,不能删除,不能修改。 针对代码托管流水线源,如果用户填写了仓库别名,则会在系统预定义参数生成仓库相关的系统参数。 针对码云流水线源,如果用户填写了仓库别名,则会在系统预定义参数生成仓库相关的系统参数。 父主题: 配置流水线参数
  • 查看变更 进入变更列表页,在变更列表页单击变更标题,进入变更详情页面。 页面展示变更概览信息、关联工作项、操作历史,还可以对变更执行提交发布、退出发布、撤销变更操作。 以下详细介绍提交发布、退出发布、撤销变更具体操作: 提交发布 针对阶段状态为“开发中”的变更,在变更详情页单击“提交发布”,弹出“提交变更”对话框。 如果微服务下不存在变更流水线,请根据提示创建变更流水线,创建流程请参见变更与流水线。 如果微服务下存在变更流水线,直接单击“确定”,即可将变更提交到变更流水线。 提交发布后,变更状态由“开发中”改变为“待发布”。 退出发布 针对阶段状态为“待发布”或“发布中”的变更,在变更详情页单击“退出发布”,弹出“退出发布”对话框。 单击“确定”,即可将变更退出变更流水线的发布列表,变更状态重置为“开发中”。 阶段状态为“发布中”的变更,如果变更流水线正在运行,则需要等待变更流水线运行完成或停止变更流水线后才可以退出发布。 撤销变更 针对阶段状态为“开发中”的变更,在变更详情页单击“撤销变更”,弹出“撤销变更”对话框。 单击“确定”,即可将变更状态改为“已撤销”。 父主题: 变更管理
  • 操作步骤 登录流水线。 在流水线列表页搜索目标流水线,单击操作列。 弹出“运行配置”侧滑框,进行如下配置: 流水线源:根据需要选择流水线源的分支或标签执行配置。 运行参数配置:如果流水线配置了运行时参数,请根据需要设置参数值并保存,可参考参数使用。 执行阶段配置:流水线支持选择任务执行,可以选择一个或多个,默认执行全部任务。 阶段如果在配置时选择了“总是运行”,则该阶段的任务默认选中且不能取消。 运行描述:填写本次运行的调试信息。 配置完成后,单击“运行”,进入流水线执行详情页面,可实时查看流水线执行进展及任务执行状态。 单击右上角“停止”,可以中止任务执行。 流水线支持并发执行,继续单击“执行”,可以再次执行流水线,单条流水线最大支持同时执行的次数由购买套餐决定(基础版:5次;专业版:10次;铂金版:15次)。 执行完成后,即可查看流水线执行结果。
  • 操作步骤 登录流水线。 在流水线列表页搜索目标流水线,单击流水线名称,进入流水线“运行历史”页面。 单击时间筛选器,可以根据需要选择时间段展示历史执行记录,支持查看最近31天历史执行记录,默认展示最近7天的历史执行记录,支持最近7天、14天、31天快捷切换。 首次执行时历史执行记录页面为空,执行一次后才有记录。 单击历史记录执行编号,进入“流水线详情”页面。 单击右上角,可以根据需要编辑流水线、复制流水线、删除流水线、查看流水线操作历史(新建和编辑操作)。 流水线执行详情页相关操作如下: 操作项 说明 重试 如果任务执行失败,单击页面右上角“重试”,可以选择从失败处继续执行。 编辑 单击“编辑”,可以根据编辑流水线。 运行 单击页面右上角“执行”,可以以最新的配置重新执行流水线,并生成一条新的执行纪录。 下载 单击上方产出信息,可以下载通过流水线自动构建出来的构建包。 说明: 只有构建类型的任务才有构建包。 存在多个构建包时,单击“全部下载”,可以下载全部构建包。 只展示最新构建的10个包,如需下载其他构建包,请切换到发布库页面自行下载。 查看日志 单击任务卡片,可以查看对应日志。 说明: “延时执行”和“挂起流水线”任务没有日志。 更多操作 单击页面右上角,可以根据需要复制流水线、查看流水线操作历史(新建和编辑操作记录以及触发失败记录)、预览流水线、禁用流水线、删除流水线。 说明: 默认只有项目经理或创建者(项目创建者和流水线创建者)才可以删除流水线,可通过配置权限给不同角色添加不同操作权限。
  • 配置方法 使用租户账号或其他有权限的账号登录CodeArts,单击右上角头像,选择“子账号管理”,进入统一身份认证服务控制台。 在左侧菜单栏单击“用户组”,进入用户组设置页面,新建一个用户组或选择已有用户组,单击“授权”,开始对用户组授权。 云服务选择“流水线服务”,即可查看“流水线服务”相关策略列表,包括以下几个: 策略名称 描述 CloudPipeline Tenant Rules FullAccess CodeArts租户规则设置全部权限,控制用户是否具有流水线服务租户级规则的全部权限。 CloudPipeline Tenant Rule Templates FullAccess CodeArts租户策略设置全部权限,控制用户是否具有流水线服务租户级策略的全部权限。 CloudPipeline Tenant Extensions FullAccess CodeArts租户扩展插件全部权限,控制用户是否具有流水线服务扩展插件的全部权限。 CloudPipeline Tenant Pipeline Templates FullAccess CodeArts租户流水线模板全部权限,控制用户是否具有流水线服务流水线模板的全部权限。 勾选所需策略,单击“下一步”,设置最小授权范围,完成对用户组的授权。 最后,通过用户授权或用户组管理的方式,将指定用户加入用户组,即可完成对用户的授权。 除了使用系统策略,租户还可以通过创建自定义策略的方式进行授权。
  • 操作步骤 新建构建任务。 在“参数设置”页面添加releaseversion参数并设置好默认值,将“运行时设置”打开。 在“构建步骤”页面,选择“上传软件包到软件发布库”,将“发布版本号”配置成引用参数形式。在参数输入框输入“$”符号后会自动出现参数列表,选择上一步已经新建好的releaseversion参数。 配置完成后,保存构建任务。 新建空白模板流水线,在流水线阶段添加一个新的任务,然后在该任务中添加“Build构建”插件并调用刚创建的构建任务,即可看到刚新建好的构建任务参数releaseversion。 将鼠标移动到releaseversion参数上,可以一键将该参数设置为流水线参数。或直接单击“确定”,然后切换到流水线“参数设置”页面,新建流水线参数releaseversion,类型可以根据需求选择自增长或字符串等,设置默认值并打开运行时设置。 再切回到流水线“任务编排”页面,编辑刚添加的构建任务,将流水线的releaseversion参数通过“$”符号引用到构建任务的releaseversion参数内。 该处只显示任务中已开启“运行时设置”的文本类型参数。 参数引用形式为“${ParameterName}”,其中“ParameterName”为流水线参数名,在参数输入框输入“$”符号后会自动出现参数列表。 鼠标移至参数名称,可以快速将该参数设置为流水线参数并能直接引用该参数。 完成参数引用后,保存信息,然后单击“保存并执行”,弹出“执行配置”侧滑框,可查看“运行参数配置”。 运行时参数值默认为添加参数时为参数设置的默认值,可根据需要进行修改。流水线运行时在构建任务内使用的就是此时输入的参数值。 设置完参数,单击“运行”,开始使用配置的参数执行流水线。
  • 查看执行结果 执行完成后,可查看流水线执行结果。 变更流水线执行成功时,会将本次运行选择的所有变更状态改为“已发布”状态。 单击流水线名称,进入“流水线详情”页面 单击流水线源卡片的“查看更多”,弹出运行变更侧滑框,展示本次流水线运行时选择的变更信息。 单击列表内“变更标题”可以跳转到变更详情页面。 单击“发布列表”页签,切换到“发布列表”页面 发布列表页面展示所有阶段状态为“待发布”和“发布中”的变更。 列表支持在搜索栏中输入变更名称关键字进行搜索。 单击“操作”列,弹出“退出发布”对话框,单击“确认”会将变更退出变更流水线的发布列表,变更状态重置为“开发中”。 阶段状态为“发布中”的变更,如果变更流水线正在运行,则需要等待变更流水线运行完成或停止变更流水线后才可以退出发布。
  • 执行变更流水线 进入微服务。 在微服务列表页单击微服务名称,进入微服务“概览”页面。 切换到“流水线”页签,进入微服务下流水线列表。 找到变更流水线,单击流水线名称,进入流水线运行详情页面。 单击右上角“运行”,弹出“运行配置”侧滑框,进行如下配置。 变更列表:变更列表展示阶段状态为“待发布”和“发布中”的变更,运行变更流水线时需要选择一个或多个变更。 运行参数配置:如果流水线配置了运行时参数,请根据需要设置参数值并保存,可参考参数使用。 执行阶段配置:流水线支持选择任务执行,可以选择一个或多个,默认执行全部任务。 运行描述:填写本次运行的调试信息。 配置完成后,单击“运行”,进入变更流水线执行详情页面。 变更流水线运行时会默认添加“合并集成分支”和“合并主干”阶段。 合并集成分支:变更流水线会自动从主干分支拉出一条新分支,并将本次运行变更的所有特性分支集成到该新分支,然后通过这条集成分支来运行流水线。 合并主干:将集成分支合并回主干分支。
  • 新建变更流水线 进入微服务。 在微服务列表页单击微服务名称,进入微服务“概览”页面。 切换到“流水线”页签,进入微服务流水线列表页面。 单击“新建流水线”,进入“新建流水线 ”页面,填写基本信息,相关参数说明如表1所示。 表1 参数说明 参数项 说明 所属项目 微服务所属项目,不可修改。 名称 流水线的名称,默认根据当前时间生成。 流水线源 微服务下流水线仅支持Repo代码源。 代码仓 微服务关联的代码仓库,不可修改。 默认分支 微服务关联的默认分支,不可修改。 Repo https授权 配置授权扩展点以提升代码库操作权限,主要用于微服务变更流水线和部分仓库操作插件。 别名 输入别名,则会生成该仓库对应的相关系统参数(可在参数设置页面查看),否则不会生成。 基于变更触发 开启“基于变更触发”开关的流水线即为变更流水线,在微服务流水线列表中,变更流水线会被标识为。 说明: 单个微服务下仅允许存在一条基于变更触发的流水线。 描述 流水线的描述。 填写完所有参数,单击“下一步”,进入“选择模板”页面,请根据需要选择对应模板,在模板基础上快速新建任务;也可以选择“空白模板”,即不使用模板,直接新建。 选择模板后,单击“确定”,然后单击“保存”。
  • 配置方法 执行条件,指流水线阶段任务执行时需要满足的前提条件,通过配置执行条件,可以控制阶段任务是否执行。 编辑/添加流水线阶段任务。 在弹出的侧滑框中单击“任务配置”卡片。 添加任务时,需先添加插件才能进行配置。 参数项 说明 ID 任务的ID,同一条流水线上的任务ID不能重复。 执行条件 可根据需要设置如下四种条件。 前置任务未选择仍执行:上一个任务状态执行成功或未选择,都继续执行当前任务。 前置任务成功时执行:上一个任务执行成功才执行当前任务。 前置任务失败时执行:上一个任务执行失败才执行当前任务。 始终执行:始终执行当前任务,上一个任务状态是失败、成功、中止或忽略执行,都继续执行当前任务。 表达式:表达式形式为“${{ }}”,由流水线上下文、操作符、函数或常量任意组合而成,当前置任务到达终态(成功、失败、中止或忽略执行),且表达式结果为“true”时,执行当前任务,否则不执行。 表达式编写请参考执行条件表达式。 流水线上下文请参考流水线上下文信息参考。 父主题: 配置流水线执行条件
  • 响应参数 状态码: 200 表4 result 参数 参数类型 描述 result Array of ImageMainObjectDetectionInstance objects 主体列表集合。 表5 ImageMainObjectDetectionInstance 参数 参数类型 描述 label String 主体的类别,现阶段分为:main_object_box(主要主体)和bounding_box(边缘主体)。 location location object 目标检测框位置信息,包括4个值: width:检测框区域宽度 height:检测框区域高度 top_left_x:检测框左上角到垂直轴距离 top_left_y:检测框左上角到水平轴距离 confidence String 主体框的置信度。将Float型置信度转为String类型返回,Float取值范围(0~100)。 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_code String 调用失败时的错误码,具体请参见错误码。 调用成功时无此字段。 error_msg String 调用失败时的错误信息。 调用成功时无此字段。
  • 响应示例 状态码: 200 成功响应结果 { "result" : [ { "label" : "bounding_box", "location" : { "height" : 133.32, "top_left_x" : 53.13, "top_left_y" : 254.21, "width" : 117.58 }, "confidence" : "92.38" }, { "label" : "main_object_box", "location" : { "height" : 261.32, "top_left_x" : 256.13, "top_left_y" : 85.21, "width" : 139.58 }, "confidence" : "66.38" } ] } 状态码: 400 失败响应结果 { "error_code" : "AIS.0005", "error_msg" : "The service does not exist." }
  • 请求示例 “endpoint”即调用API的请求地址,不同服务不同区域的“endpoint”不同,具体请参见终端节点。 例如,服务部署在“华北-北京四”区域的“endpoint”为“image.cn-north-4.myhuaweicloud.com”,请求URL为“https://image.cn-north-4.myhuaweicloud.com/v2/{project_id}}/image/main-object-detection”,“project_id”为项目ID,获取方法请参见获取项目ID和名称。 方式一:使用图片的BASE64编码,判断图片主体并返回主体坐标,置信度的阈值为30。 POST https://{endpoint}/v3/{project_id}image/main-object-detection { "image" : "/9j/4AAQSkZJRgABAgEASABIAAD/4RFZRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAA...", "url" : "", "threshold" : 30 } 方式二:使用图片URL,判断图片主体并返回主体坐标,置信度的阈值为30。 POST https://{endpoint}/v3/{project_id}image/main-object-detection { "image" : "", "url" : "https://BucketName.obs.myhuaweicloud.com/ObjectName", "threshold" : 30 }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 用于获取操作API的权限。获取方法请参见获取Token接口,响应消息头中X-Subject-Token的值即为Token。 表3 请求Body参数 参数 是否必选 参数类型 描述 image 否 String 与url二选一 图像数据,base64编码,要求base64编码后大小不超过10M,最短边至少1px,最长边最大10000px,支持JPEG/PNG/BMP/WEBP格式。 url 否 String 与image二选一 图片的URL路径,目前支持: 公网HTTP/HTTPS URL 华为云OBS提供的URL,使用OBS数据需要进行授权。包括对服务授权、临时授权、匿名公开授权。详情参见配置OBS服务的访问权限。 说明: 接口响应时间依赖于图片的下载时间,如果图片下载时间过长,会返回接口调用失败。 请保证被检测图片所在的存储服务稳定可靠,建议您使用华为云OBS存储。 threshold 否 Float 置信度的阈值(0~100),低于此置信数的检测结果,将不会返回。 默认值:30,最小值:0,最大值:100。
共100000条