• [介绍/入门] 分布式消息服务之Kafka API快速入门运行示例工程!
    本帖最后由 云彩飞扬 于 2018-3-20 10:39 编辑[*]登录弹性云服务器。说明:用户可以直接在192网段的ECS虚拟机上运行。 [*]安装Java JDK或JRE,并配置JAVA_HOME与PATH环境变量,使用执行用户在用户家目录下修改.bash_profile,添加如下行。 export JAVA_HOME=/opt/java/jdk1.8.0_151export PATH=$JAVA_HOME/bin:$PATH执行source .bash_profile命令使修改生效。 说明:ECS虚拟机默认自带的JDK可能不符合要求,例如OpenJDK,需要配置为Oracle的JDK,可至Oracle官方下载页面下载Java Development Kit 1.8.111及以上版本。 [*]使用root用户编辑/etc/resolv.conf文件,配置DNS服务器地址。 在第一行增加如下:nameserver 100.125.1.250 [*]下载DmsKafkaDemo示例工程代码。 [*]解压DmsKafkaDemo.zip压缩包。 $ unzip DmsKafkaDemo.zip [*]进入DmsKafkaDemo/dist目录,该目录下包含预编译好的二进制文件和执行脚本。 $ cd DmsKafkaDemo/dist [*]编辑配置文件config/dms_kafka_client_jaas.conf,设置access_key、secret_key和project_id。 $ vim config/dms_kafka_client_jaas.conf设置内容如下(其中标红内容需要替换为实际值):KafkaClient { com.huawei.middleware.kafka.sasl.client.KafkaLoginModule required access_key=VAODAIIJGPUAYTJRRLOD secret_key=ZHN49c6bpwDiQvPqKJ5CxutJxqc04Glt9xSzxYWi project_id=bd67aaead60940d688b872c31bdc653b;}; [*]编辑配置文件config/producer.properties,设置topic和bootstrap.servers。 $ vim config/producer.properties设置内容如下(其中标红内容需要替换为实际值):topic=k-bd67aaead60940d688b872c31bdc653b-4df89da6-ede4-4072-93e0-28dc6e866299bootstrap.servers=dms-kafka.cn-north-1.myhuaweicloud.com:37000ssl.truststore.password=dms@kafkaacks=allretries=1batch.size=16384buffer.memory=33554432key.serializer=org.apache.kafka.common.serialization.StringSerializervalue.serializer=org.apache.kafka.common.serialization.StringSerializersecurity.protocol=SASL_SSLsasl.mechanism=DMS [*]编辑配置文件config/consumer.properties,设置topic、bootstrap.servers和group.id。 $ vim config/consumer.properties设置内容如下(其中标红内容需要替换为实际值):topic=k-bd67aaead60940d688b872c31bdc653b-4df89da6-ede4-4072-93e0-28dc6e866299bootstrap.servers=dms-kafka.cn-north-1.myhuaweicloud.com:37000group.id=g-7ec0caac-01fb-4f91-a4f2-0a9dd48f8af7ssl.truststore.password=dms@kafkasecurity.protocol=SASL_SSLsasl.mechanism=DMSkey.deserializer=org.apache.kafka.common.serialization.StringDeserializervalue.deserializer=org.apache.kafka.common.serialization.StringDeserializerauto.offset.reset=earliestenable.auto.commit=false [*]运行生产消息示例。 $ bash produce.sh [*]运行消费消息示例。 $ bash consume.sh
  • [介绍/入门] 分布式消息服务之Kafka API快速入门环境准备
    本帖最后由 云彩飞扬 于 2018-3-20 10:22 编辑 开发环境Eclipse:Eclipse 3.6.0及以上版本,可至Eclipse官方网站下载。JDK:Java Development Kit 1.8.111及以上版本,可至Oracle官方下载页面下载。Maven:Apache Maven 3.0.3及以上版本。创建Kafka队列通过浏览器登录华为云,在分布式消息服务控制台中创建队列,队列类型选择“Kafka队列”。请记录Kafka Topic ID,后续访问需要使用。如果已创建过Kafka队列,可以跳过此步骤。创建消费组通过浏览器登录华为云,在分布式消息服务控制台中选择上文创建的Kafka队列,为该队列创建一个消费组。请记录消费组ID,后续访问需要使用。如果已为该Kafka队列创建过消费组,可以跳过此步骤。创建访问密钥通过浏览器登录华为云,选择“我的凭证”菜单,单击“管理访问密钥”标签,新增一组访问密钥,保存credentials.csv文件到本地。从credentials.csv文件中可以提取“Access Key Id”和“Secret Access Key”。如果之前已创建过访问密钥,可以跳过此步骤。获取项目ID通过浏览器登录华为云,选择“我的凭证”菜单,单击“项目列表”标签,根据所属区域记录对应的项目ID。获取区域和EndpointRegion域名说明中国华北区1dms-kafka.cn-north-1.myhuaweicloud.com:37000在华为云(ECS)上运行Demo示例,使用该endpoint访问DMS服务。中国华东区2dms-kafka.cn-east-2.myhuaweicloud.com:37000中国华南区1dms-kafka.cn-south-1.myhuaweicloud.com:37000中国华北区1dms-kafka.cn-north-1.myhuaweicloud.com:37003在本地(公网)运行Demo示例,使用该endpoint访问DMS服务。申请弹性云服务器说明:在华为云(ECS)上运行DMS Demo示例,需要先申请弹性云服务器。 通过浏览器登录华为云,在弹性云服务器控制台中申请创建一台Linux弹性云服务器,并绑定弹性IP。请记录弹性IP地址、用户名和密码,后续访问需要使用。如果已申请过华为云弹性云服务器,可以跳过此步骤。说明:弹性IP用于登录弹性云服务器,以及上传文件等。 环境信息汇总表1 环境信息汇总类型项目收集的信息(以下为示例,请根据实际情况替换)弹性云服务器弹性IP114.115.141.228用户名huaweicloud密码password分布式消息服务队列名称my-kafka-queue队列ID4df89da6-ede4-4072-93e0-28dc6e866299队列类型Kafka队列Kafka Topick-bd67aaead60940d688b872c31bdc653b-4df89da6-ede4-4072-93e0-28dc6e866299消费组名称my-consumer-group消费组IDg-7ec0caac-01fb-4f91-a4f2-0a9dd48f8af7访问密钥AK (Access Key Id)VAODAIIJGPUAYTJRRLODSK (Secret Access Key)ZHN49c6bpwDiQvPqKJ5CxutJxqc04Glt9xSzxYWi项目ID所属区域中国华北区1项目cn-north-1项目IDbd67aaead60940d688b872c31bdc653b区域和Endpoint区域名称中国华北区1Endpointdms-kafka.cn-north-1.myhuaweicloud.comDNSDNS服务器IP华北:100.125.1.250华东:100.125.17.29华南:100.125.1.250
  • [介绍/入门] 分布式消息服务之TCP API配置说明!
    [*](可选)配置DNS。公网无法直接访问DMS,必须要先创建ECS,在ECS上才可以访问DMS。新创建的ECS不需要再配置DNS,如果使用已有的ECS需要配置DNS。[*]华北区的DNS IP:100.125.1.250 [*]华东区的DNS IP:100.125.17.29 [*]华南区的DNS IP:100.125.1.250 [*]参考表1的配置示例的配置项。表1 dms.client.properties参数说明 参数说明dms.server.ipDMS服务端的地址,配置为IP或者域名。华北区域名:dms-tcp.cn-north-1.myhuaweicloud.com华东区域名:dms-tcp.cn-east-2.myhuaweicloud.com华南区域名:dms-tcp.cn-south-1.myhuaweicloud.comdms.server.portDMS服务TCP端口,配置为60010。dms.client.blocked.worker.num执行阻塞callback的线程数,默认为-1,小于0则默认使用CPU核数两倍。dms.client.conn.timeout连接超时时间,单位为毫秒,默认6000dms.client.reconn.attempt.times连接重试次数,默认3次。dms.client.reconn.attempt.interval连接重试间隔,单位为毫秒,默认3000。dms.client.request.timeout请求超时时间,单位为毫秒,默认60000。dms.client.start.timeout启动超时时间,单位为毫秒,默认60000。dms.client.project.idproject id,获取方法参见获取project id。dms.client.access.keyaccess key,获取方法参见获取AK/SK。dms.client.secret.keysecret key,获取方法参见获取AK/SK。[*]开始编写代码,API接口请参考获取SDK中的dms.sdk.api.chm文档。
  • [介绍/入门] 分布式消息服务之TCP API创建工程!
    本章节以新建名为“tcpdemo”的Maven Project为例。操作步骤[*]打开Eclipse,建议使用4.6以上版本,新建一个Maven Project,工程名自定义,这里以tcpdemo为例。[*]单击“Finish”。 [*]导入DMS TCP SDK的jar包。 [list=a] [*]右键单击新建的工程“tcpdemo”,新建一个Folder,命名为libs。 [*]将dms.sdk-1.0.0.jar和dms.protocol-1.0.0.jar复制到libs目录下。 [*]在pom.xml文件中增加如下行,将DMS TCP SDK的jar包导入Maven仓库。 com.huawei.middleware.dms dms.protocol 1.0.0 jar system ${basedir}/libs/dms.protocol-1.0.0.jar com.huawei.middleware.dms dms.sdk 1.0.0 jar system ${basedir}/libs/dms.sdk-1.0.0.jar [*]保存“pom.xml”。 [*]如果没有自动导入第三方依赖包,请参考“DmsTcpDemo示例”将third_lib.zip中的包导入Maven仓库。
  • [介绍/入门] 分布式消息服务之TCP API获取SDK!
    如果您还没有下载SDK,请访问http://developer.huaweicloud.com/sdk/java/dms-tcp.html下载SDK压缩包。下载dms.sdk.zip压缩包,即为DMS TCP SDK开发包,包含如下文件:[*]dms.sdk-1.0.0.jar:DMS TCP SDK包 [*]dms.protocol-1.0.0.jar: DMS TCP SDK包 [*]dms.client.properties:配置文件 [*]README.txt:发布说明文件 [*]third_lib.zip:DMS TCP SDK依赖的第三方jar包 [*]dms.sdk.api.chm:API接口参考
  • [介绍/入门] 分布式消息服务之TCP API环境准备!
    本帖最后由 云彩飞扬 于 2018-3-19 14:47 编辑 开发环境Eclipse:Eclipse 3.6.0及以上版本,可至Eclipse官方网站下载。JDK:Java Development Kit 1.8.111及以上版本,可至Oracle官方下载页面下载。Maven:Apache Maven 3.0.3及以上版本。获取队列ID和消费组的ID使用SDK接口访问DMS服务,需要先创建队列和消费组,步骤如下:[*]登录管理控制台。 [*]单击“服务列表”,选择“应用服务 > 分布式消息服务”,进入分布式消息服务信息页面。 [*]单击左侧菜单栏的“队列管理”。 [*]在“队列管理”页面,单击页面上方的“创建队列”。 每个用户默认最多可以创建5个队列,您可以在“删除队列”按钮上面看到您还可以创建多少个队列。如果您想创建更多队列,请联系客服申请增加配额。 [*]填写队列名称和描述信息。 表1 参数说明参数说明当前区域表示当前创建队列的区域。队列名称队列的名称,必须唯一。DMS为您自动生成了队列名称,您可以根据需要修改,队列名称只能包含a~z,A~Z,0-9,-,_,长度是[1,64]。创建队列后不能修改名称。队列类型[*]普通队列:包括分区有序和全局有序 [*]AMQP队列:使用AMQP协议的队列。Advanced Message Queuing Protocol,是统一消息服务的应用层标准的高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。 [*]Kafka队列:支持使用开源kafka客户端进行生产消息和消费消息,支持高吞吐和高可靠两种模式。队列模式队列类型为普通队列时,队列模式取值范围: [*]分区有序:的普通队列具有更高的并发性能,不保证先入先出(FIFO)的严格顺序。 [*]全局有序:的普通队列保证消息先入先出(FIFO)的严格顺序。 队列类型为Kafka队列时,队列模式取值范围: [*]高吞吐:消息副本异步落盘,具有较高的性能 [*]高可靠:消息多副本同步落盘,保证消息的可靠性。是否开启死信仅队列类型为普通队列时,才有该参数。是否开启死信消息,死信消息是指无法被正常消费的消息。当达到最大消费次数仍然消费失败后,DMS会将该条消息转存到死信队列中,有效期为72小时,用户可以根据需要对死信消息进行重新消费。消费死信消息时,只能消费该消费组产生的死信消息。全局有序的队列的死信消息依然按照先入先出(FIFO)的顺序存储在死信队列中。默认值:关闭。消息保留时长(小时)仅Kafka队列才有该参数。指定kafka队列的消息保存时间,超过该时长的消息将会被删除,删除的消息无法被消费。取值范围:1-72,必须为整数。默认值:72小时。最大消费次数仅开启死信时,才有该参数。消息进入死信队列前可重复接收次数。取值范围:1~100默认值:3描述(可选)队列描述不能包含,长度是[0,160]。图1 创建队列[*]单击“确定”。创建队列完成。 [*]单击队列名称,显示队列详情,获取队列ID,如图2所示。 图2 获取队列ID [*]单击“创建消费组”。进入“创建消费组”页面。 [*]填写消费组的名称。 DMS为您自动生成了消费组名称,您可以根据需要修改,消费组的名称只能包含a~z,A~Z,0~9,-,_,长度是[1,32]。同个队列的消费组名称不能重复。 [*]单击“确定”。创建消费组完成,获取消费组ID,如图3所示。 图3 获取消费组ID 获取project id在调用接口的时候,需要填入项目编号project_id,所以需要先在管理控制台上获取到项目编号,步骤如下:[*]注册并登录管理控制台。 [*]单击用户名,在下拉列表中单击“我的凭证”。 [*]在“我的凭证”页面的“项目列表”中查看项目ID。 图4 获取项目ID 获取AK/SK[*]登录管理控制台。 [*]单击用户名,在下拉列表中单击“我的凭证”。 [*]在“我的凭证”页,单击“管理访问密钥”页签。 [*]单击“新增访问密钥”,进入“新增访问密钥”页面。 [*]输入当前用户的登录密码。 [*]通过邮箱或者手机进行验证,输入对应的验证码。 [*]单击“确定”,下载访问密钥。 说明:为防止访问密钥泄露,建议您将其保存到安全的位置。 [*]保存文件到本地,从下载的credentials.csv文件中获取“Access Key Id”和“Secret Access Key”。 获取区域和Endpoint Region域名端口号中国华北区1dms-tcp.cn-north-1.myhuaweicloud.com60010中国华东区2dms-tcp.cn-east-2.myhuaweicloud.com60010中国华南区1dms-tcp.cn-south-1.myhuaweicloud.com60010购买弹性云服务器使用DMS TCP SDK之前,需要购买弹性云服务器ECS,否则公网无法直接访问DMS,购买方法请参考“购买弹性云服务器”。说明:弹性IP用于登录弹性云服务器,以及上传文件等。配置内网DNS。说明:新创建的ECS不需要再配置DNS,如果使用已有的旧的ECS,则需要配置DNS的IP。华北区的DNS IP:100.125.1.250华东区的DNS IP:100.125.17.29华南区的DNS IP:100.125.1.250示例如下:环境信息汇总表2 环境信息汇总类型项目收集的信息(以下为示例,请根据实际情况替换)弹性云服务器弹性IP114.115.141.228用户名huaweicloud密码password分布式消息服务队列名称my-tcp-queue队列ID5964181e-b67e-4d35-9281-a58c352abda6队列类型普通队列消费组名称my-tcp-group消费组IDg-c861aa48-a082-48ff-bc9d-ff36fe7aed38访问密钥AK (Access Key Id)VAODAIIJGPUAYTJRRLODSK (Secret Access Key)ZHN49c6bpwDiQvPqKJ5CxutJxqc04Glt9xSzxYWi项目ID所属区域中国华北区1项目cn-north-1项目IDbd67aaead60940d688b872c31bdc663b区域和Endpoint区域名称中国华北区1Endpointdms-tcp.cn-north-1.myhuaweicloud.com端口号60010DNSDNS服务器IP华北:100.125.1.250华东:100.125.17.29华南:100.125.1.250
  • [介绍/入门] 分布式消息服务之TCP API示例工程代码导读
    本帖最后由 云彩飞扬 于 2018-3-16 11:55 编辑 DMS TCP Demo示例工程中包含DmsProducerDemo和DmsConsumerDemo两个示例,DmsProducerDemo用于展示生产消息流程,DmsConsumerDemo用于展示消费和确认消息流程。生产消息[*]创建并启动DmsProducer。 DmsProducer producer = new DmsProducerImpl();producer.start(); [*]构建要发送的消息内容。 List messages = new ArrayList();final int messageNum = 10;for (int i = 0; i messageNum; i++){ DmsMessage record = new DmsMessage(); record.setBody(("Hello DMS syn produce: " + i).getBytes()); messages.add(record);} [*]发送消息。 try{ List result = producer.produce(queueId, messages); result.forEach(r -> { System.out.println(r.getState()); });}catch (Throwable t){ t.printStackTrace();} [*]停止生产。 producer.stop();消费消息[*]创建并启动消费实例。 DmsConsumer consumer = new DmsConsumerImpl();consumer.start(); [*]消费消息。 List records = consumer.consume(queueId, groupId); [*]构建确认请求。 DmsCommitRequest commitRequest = new DmsCommitRequest();List messages = new ArrayList();for (DmsConsumeResult record : records){ System.out.println(record.getHandler()); DmsCommitItem commitItem = new DmsCommitItem(); //确认时需要回填对应消息handler commitItem.setHandler(record.getHandler()); //设置消息处理状态: true or false commitItem.setStatus(true); messages.add(commitItem);}//一次可确认多条消息commitRequest.setMessage(messages); [*]确认消息。 DmsCommitResult commitResult = consumer.commit(queueId, groupId, commitRequest); [*]停止消费。 consumer.stop();
  • [介绍/入门] 分布式消息服务之TCP API编译示例工程
    本帖最后由 云彩飞扬 于 2018-3-16 11:35 编辑1.下载并解压。DMS TCP Demo示例工程代码2.打开Eclipse,通过“File -> Import…”菜单导入已存在的Maven工程,选择DmsTcpDemoClient解压目录,导入示例工程代码。3.鼠标右键点击“dms.tcp.demo”项目,在弹出的上下文菜单中选择“Run As -> Maven build…”,执行目标输入“clean package”,执行编译构建。4.构建输出位于DmsTcpDemoClient工程的target目录下,缺省文件名为dms.tcp.demo-1.0.0-SNAPSHOT.jar。5.使用dms.tcp.demo-1.0.0-SNAPSHOT.jar替换弹性云服务器DmsTcpDemoClient/dist/libs目录下的dms.tcp.demo-1.0.0.jar文件,按照“运行示例工程”执行验证。
  • [介绍/入门] 分布式消息服务之TCP API下载和运行示例工程
    本帖最后由 云彩飞扬 于 2018-3-16 11:30 编辑下载示例工程下载DmsTcpDemo示例工程代码,下载地址:https://dms-demo.obs.myhwclouds.com/DmsTcpDemoClient.zip运行示例工程12469
  • [介绍/入门] 分布式消息服务之TCP API快速入门环境准备
    本帖最后由 云彩飞扬 于 2018-3-15 18:14 编辑 开发环境Eclipse:Eclipse 3.6.0及以上版本,可至Eclipse官方网站下载。JDK:Java Development Kit 1.8.111及以上版本,可至Oracle官方下载页面下载。Maven:Apache Maven 3.0.3及以上版本。创建消息队列[*]通过HTTP API创建队列参考《分布式消息服务API参考》创建队列和查看队列。 [*]通过Web Console创建队列通过浏览器登录华为云,在分布式消息服务控制台中创建队列,队列类型选择“普通队列”或“有序队列”。请记录队列ID,后续访问需要使用。如果已创建过消息队列,可以跳过此步骤。创建消费组[*]通过HTTP API创建消费组参考《分布式消息服务API参考》创建消费组和查询消费组。 [*]通过Web Console创建消费组通过浏览器登录华为云,在分布式消息服务控制台中选择上文创建的消息队列,为该队列创建一个消费组。请记录消费组ID,后续访问需要使用。如果已为该消息队列创建过消费组,可以跳过此步骤。创建访问密钥通过浏览器登录华为云,选择“我的凭证”菜单,点击“管理访问密钥”标签,新增一组访问密钥,保存credentials.csv文件到本地。从credentials.csv文件中可以提取“Access Key Id”和“Secret Access Key”。如果之前已创建过访问密钥,可以跳过此步骤。获取项目ID通过浏览器登录华为云,选择“我的凭证”菜单,点击“项目列表”标签,根据所属区域记录对应的项目ID。获取区域和EndpointRegion域名端口号中国华北区1dms-tcp.cn-north-1.myhwclouds.com60010中国华东区2dms-tcp.cn-east-2.myhuaweicloud.com60010中国华南区1dms-tcp.cn-south-1.myhuaweicloud.com60010申请弹性云服务器通过浏览器登录华为云,在弹性云服务器控制台中申请创建一台Linux弹性云服务器,并绑定弹性IP。请记录弹性IP地址、用户名和密码,后续访问需要使用。如果已申请过华为云弹性云服务器,可以跳过此步骤。说明:弹性IP用于登录弹性云服务器,以及上传文件等。环境信息汇总表1类型项目收集的信息(以下为示例,请根据实际情况替换)弹性云服务器弹性IP114.115.141.228用户名huaweicloud密码password分布式消息服务队列名称my-tcp-queue队列ID5964181e-b67e-4d35-9281-a58c352abda6队列类型普通队列消费组名称my-tcp-group消费组IDg-c861aa48-a082-48ff-bc9d-ff36fe7aed38访问密钥AK (Access Key Id)VAODAIIJGPUAYTJRRLODSK (Secret Access Key)ZHN49c6bpwDiQvPqKJ5CxutJxqc04Glt9xSzxYWi项目ID所属区域中国华北区1项目cn-north-1项目IDbd67aaead60940d688b872c31bdc663b区域和Endpoint区域名称中国华北区1Endpointdms-tcp.cn-north-1.myhwclouds.com端口号60010DNSDNS服务器IP华北:100.125.1.250华东:100.125.17.29华南:100.125.1.250
  • [行业前沿] ServiceComb不能做api gateway,但是却有api gateway的一些功能,功能重合怎么办
    ServiceComb不能做api gateway,但是却有api gateway的一些功能,功能重合怎么办。 比如:ServiceComb有限流等,但是限流一般是api gateway的功能,大部分微服务需要gateway,用作权限控制,限流等,但是如果再用ServiceComb,就会发现有一些功能是重复的,不清楚这种情况怎么解决,ServiceComb有做gateway的功能吗
  • 【活动已结束】 体验华为云API SDK,输出体验报告有机会赢mate10!
    活动时间: 输出体验报告:2018年3月5日—5月14日 体验报告评审:2018年5月15-17日 活动结果公布:2018年5月18日(所有体验报告正在公平公正地评选中,待评选完成后将公布结果) 华为云API SDK介绍: 您可以基于华为云SDK通过编写代码的方式调用华为云API,或通过发起HTTP/HTTPS请求调用华为云API的方式来使用云产品,实现对应用、资源和数据更灵活的部署、更快速的操作、更精准的使用、更及时的监控。 活动参与方式: 1、注册登录并实名认证; 2、调用已购买产品或免费试用产品的API/SDK; 3、在该贴下按模板输出体验报告(问题描述+使用界面截图); 4、体验报告评审:筛选有效体验报告后由产品专家对报告进行综合评分。 5、活动结果公布:公布活动最终结果,获奖用户奖品寄送(所有奖品均包邮)。 体验报告输出规则: 1、文字、图片必须本人原创;逻辑清晰、图文并茂容易获得专家加分; 2、内容包含但不限于产品使用感受(如使用中存在bug,接口定义不够准确、规范不够清晰、文档不够细化、很难读懂、交互性和体验性不够好,以及使用华为云API/SDK存在的问题,有哪些需要重点提升的方面等各种建议。) [color=rgb(54,56,60)]3、报告格式: a.注明购买的产品和调用的API或使用的SDK; b.反馈跟API/SDK相关的使用问题(问题描述+截图)或改进建议; c.如有重复反馈,以最先回帖的用户为准。 [color=rgb(54,56,60)]体验报告参考模板(两种方式可任选): 1、#API SDK体验报告#使用的产品名称+是否好用+有没有需要优化的地方 如:XX产品可调用的SDK支持语言太少,建议增加XX语言。 2、#API SDK体验报告# 产品名称+ 使用环节 + 问题描述 + 优化建议 + 界面截图 如:在调用XX产品API时,在XX环节发现XX问题,建议做XX优化。 [color=rgb(54,56,60)]奖项评选方式: 1、产品团队从问题或BUG的级别、用户建议的价值等方面进行综合评分。最具价值体验官须反馈提议3条以上有效体验报告; 2、各类奖项不能叠加,每个用户只能获得一个奖项,如遇同一用户获得两个奖项,则以所获最高奖项为准,其奖品顺延至下一用户; 3、如体验报告总数未达到30份,则奖项及奖品酌情处理;4、活动参与需遵守《华为云社区常规活动规则》,戳>>>这里 活动奖品展示: [color=rgb(54,56,60)]最具价值体验官(1名):华为mate 10(4GB+64GB) [color=rgb(54,56,60)]优质建议奖(3名):华为VR [color=rgb(54,56,60)]特别参与奖(15名):荣耀引擎耳机二代 华为云开发者中心:http://developer.huaweicloud.com/ 更多开发者活动请戳:礼献开发者 爱在华为云
  • [热门活动] 【成就最牛体验官】轻松玩转API测试,限时免费体验(已结束)
    本活动已结束,获奖公告详见:https://forum.huaweicloud.com/thread-8500-1-1.html 华为云DevCloud API测试功能重磅上线,助力轻松玩转API测试,降低技术门槛,适用多种角色,限时免费体验,反馈意见有机会赢取好礼,还等什么,快来参与吧!一、 活动时间2018年2月27日至2018年4月30日 二、 活动规则 1. 按照指引免费体验API测试功能,戳此查看详情>>>; 2. 体验后,回复本帖进行意见反馈; 3. 用户可从#产品功能#、#用户体验#、#使用技巧#、#实践分享#、#产品对比#、#其他#角度反馈意见,字数至少30字以上,可以提交多条反馈意见,活动结束后进行评奖; 请参照如下格式进行回帖: #用户体验#拖拽脚本模板即可编排测试用例,降低了编写测试用例的工作量,增强了使用乐趣,但拖拽仅限制于拖拽到指定方框内,而不是整个空白区域,有些不便,希望能够改善。 4. 专家评审将从用户建议的价值、问题或BUG的级别等方面进行综合评选,文字、图片需本人原创,逻辑清晰、图文并茂者加分; 5. 回复无意义内容(纯数字、标点、表情或词不达意等)、谩骂、造谣等,均视为无效; 三、 评奖方式: 以下所有奖项将于活动结束后在论坛公布获奖名单。 1. 最牛体验官 专家评审,评选出一份最有价值的体验报告,获最牛体验官奖,奖品为kindle一个; 2. 优质建议奖 专家评审,评选出三份较为优质的体验意见,获优质建议奖,奖品为肩颈**器一个; 3. 幸运满满奖 活动结束后,在所有盖楼的用户中抽取获奖楼层,获奖楼层=总楼层*中奖百分比,中奖百分比为5%、15%、25%、35%、45%、55%、65%、75%、85%、95%。例如:活动结束后总楼层为500,500*5%=25,即第25楼获奖,其他获奖楼层同理可得。如出现小数点,则四舍五入,例如:活动结束后总楼层为530,530*5%=26.5,即第27楼获奖。无效楼层不参与中奖,做顺延处理,例如:抽取获奖楼层为第5楼,但5楼为无效楼层,即顺延至第6楼获奖,若依然为无效楼层,则继续顺延,以此类推,奖品为笔记本支架一个; 四、 奖品展示: 1. 最牛体验官一名,可获得kindle一个: 精巧轻薄外观设计,电子墨水屏,媲美纸书,运行内存翻倍,更加稳定,超长续航,持久陪伴。 10268 2. 优质建议奖三名,可获得肩颈10290器一个: 红光热敷,八颗10294头,更立体更真实,正反结合,推拿捏揉层层深入,全身适用,多重享受,守护健康。10269 3. 幸运满满奖十名,可获得笔记本支架一个: 折叠便携,稳固支撑,办公要舒适,拒做低头族。 10270 五、 奖品发放说明: 获奖用户请扫描下方二维码添加服务人员微信,验证信息请输入“API”,请将华为云用户名、帖子所在楼层、姓名、手机号、收货地址发送给微信群的服务人员,奖品将于活动结束后15个工作日内发放完毕。所有奖品均包邮,不额外收取任何费用。 10271 六、 注意事项: [*] 同一ID只能获奖一次,不能重复获奖; [*] 如有重复反馈,以最先回帖的用户为准; [*] 获奖用户需在奖项公布后的7个工作日内在华为云提交实名认证,并扫描微信二维码联系工作人员,提供收货人信息,否则视为自动放弃; [*] 奖品视为特殊商品,颜色和型号随机发送,发出后,不予退换; [*] 请大家文明参与活动,凡涉及在论坛灌水、作弊等违规行为,一经查出,将取消获奖资格; [*]活动参与需遵守《华为云社区常规活动规则》,戳>>>这里。
  • [分享交流] 【干货分享】华为云API介绍(三)华为云Java SDK 使用指导
    前提条件1.        已经获取相关API文档。       登录华为云官网 http://support.huaweicloud.com  查看各个云服务的接口参考文档。       通过这些文档,可以学习云平台所支持的API参数。2.        获取Java SDK(jar包)及其介绍文档       登录以下网站获取Python OpenStack SDK 的官方文档:       http://developer.huaweicloud.com/dev/sdk?all3.        获取华为云IAM鉴权信息和endpoint信息。          projectId/userDomainId参数获取方法见: http://forum.huaweicloud.com/forum.php?mod=viewthread&tid=1813        endpoint/AZ信息见: http://developer.huaweicloud.com/endpoint.html4.        开发环境已经安装好JDK 1.85.        欲了解Java SDK项目的源代码,请访问如下地址。       https://github.com/huawei/openstack4jJava代码示例DNS服务的简单Demo:创建zone、查询zone、删除zonepackage openstack4jdemo;import java.util.List;import com.huawei.openstack4j.core.transport.ProxyHost;import com.huawei.openstack4j.api.OSClient.OSClientV3;import com.huawei.openstack4j.api.types.ServiceType;import com.huawei.openstack4j.core.transport.Config;import com.huawei.openstack4j.model.common.Identifier;import com.huawei.openstack4j.model.dns.v2.Zone;import com.huawei.openstack4j.openstack.OSFactory;import com.huawei.openstack4j.openstack.dns.v2.domain.DesignateZone;import com.huawei.openstack4j.openstack.identity.internal.OverridableEndpointURLResolver;public class dns_test {        private static final String LANGUAGE = "zh-cn";        public static void main(String[] args) {                // step 1: add cloud service override endpoint   注意:示例中endpoint都使用华北区的,如果需要在华南区操作资源,需要相应修改为华南区的endpoint                OverridableEndpointURLResolver endpointResolver = new OverridableEndpointURLResolver();                endpointResolver.addOverrideEndpoint(ServiceType.VOLUME_BACKUP,                                "https://vbs.cn-north-1.myhwclouds.com/v2/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.DNS,                                "https://dns.myhwclouds.com/v2");                endpointResolver.addOverrideEndpoint(ServiceType.AUTO_SCALING,                                "https://as.cn-north-1.myhwclouds.com/autoscaling-api/v1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_EYE,                                "https://ces.cn-north-1.myhwclouds.com/V1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.LOAD_BALANCER,                                "https://elb.cn-north-1.myhwclouds.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MAP_REDUCE,                                "https://mrs.cn-north-1.myhwclouds.com/v1.1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.KEY_MANAGEMENT,                                "https://kms.cn-north-1.myhwclouds.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_TRACE,                                "https://cts.cn-north-1.myhwclouds.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.ANTI_DDOS,                                "https://antiddos.cn-north-1.myhwclouds.com/v1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.Notification,                                "https://smn.cn-north-1.myhwclouds.com/v2/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MessageQueue,                                "https://dms.cn-north-1.myhwclouds.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MAAS,                                "https://maas.cn-north-1.myhwclouds.com/v1/%(project_id)s/objectstorage");                endpointResolver.addOverrideEndpoint(ServiceType.DATABASE, "https://rds.cn-north-1.myhwclouds.com");                // step 2: setup the authentication credit                String user = "wanglianmin";                String password = "XXXX";                String projectId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";         //  华为云-用户中心-账号管理-基本信息-安全凭证-管理我的凭证,项目ID,按照region区分,如果想在华北创建资源,就找cn-north-1对应的项目ID。                String userDomainId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";     //  华为云-用户中心-账号管理-基本信息-安全凭证-管理我的凭证,账户ID,各个区域统一。                String authUrl = "https://iam.cn-north-1.myhwclouds.com/v3";                // step 3: initial OpenStack4j Client                OSFactory.enableHttpLoggingFilter(true);                // config of the client                // with language setting is required for RDS(trove&database) service                Config config = Config.newConfig().withEndpointURLResolver(endpointResolver).withLanguage(LANGUAGE)                                .withSSLVerificationDisabled();                // initial client                OSClientV3 osclient = OSFactory.builderV3().withConfig(config).endpoint(authUrl)                                .credentials(user, password, Identifier.byId(userDomainId)).scopeToDomain(Identifier.byId(userDomainId))                                .scopeToProject(Identifier.byId(projectId)).authenticate();                // // use client to visit DNS API                //                // create a public zone                Zone creation = DesignateZone.builder().name("sdk.tutorial.com.").description("tutorial").ttl(600)                                .email("admin@tutorial.com").build();                Zone zone = osclient.dns().zones().create(creation);                // get the created zone                Zone get = osclient.dns().zones().get(zone.getId());                // delete the created zone                //osclient.dns().zones().delete(get.getId());                List list = osclient.dns().zones().list();                System.out.println(list);                               // delete zone                osclient.dns().zones().delete(get.getId());        }}[/code]再来一个ECS弹性云服务器的示例,包括查询Server、创建Server、启动、停止、重启、删除Server[code]import java.util.List;import java.util.stream.Collectors;import sun.misc.BASE64Encoder;import sun.misc.BASE64Decoder;import java.util.ArrayList;import java.util.HashMap;import java.util.Map;import java.util.concurrent.TimeUnit;import com.huawei.openstack4j.api.Builders;import com.huawei.openstack4j.api.OSClient.OSClientV3;import com.huawei.openstack4j.api.types.ServiceType;import com.huawei.openstack4j.core.transport.Config;import com.huawei.openstack4j.model.common.ActionResponse;import com.huawei.openstack4j.model.common.Identifier;import com.huawei.openstack4j.openstack.OSFactory;import com.huawei.openstack4j.openstack.identity.internal.OverridableEndpointURLResolver;import com.huawei.openstack4j.model.compute.Action;import com.huawei.openstack4j.model.compute.RebootType;import com.huawei.openstack4j.model.compute.Server;import com.huawei.openstack4j.model.compute.Server.Status;import com.huawei.openstack4j.model.compute.ServerCreate;public class Demo_for_WebSite {        private static final String LANGUAGE = "zh-cn";        public static void main(String[] args) {                /* 第一步:填入华为云区域的endpoint                 * 如下,对接华北区1就需要填入华北区服务的endpoint,以下为全量服务,用户根据自己的需要进行覆写                 */                OverridableEndpointURLResolver endpointResolver = new OverridableEndpointURLResolver();                endpointResolver.addOverrideEndpoint(ServiceType.VOLUME_BACKUP,                                "https://vbs.cn-north-1.myhuaweicloud.com/v2/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.DNS,                                "https://dns.myhuaweicloud.com/v2");                endpointResolver.addOverrideEndpoint(ServiceType.AUTO_SCALING,                                "https://as.cn-north-1.myhuaweicloud.com/autoscaling-api/v1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_EYE,                                "https://ces.cn-north-1.myhuaweicloud.com/V1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.LOAD_BALANCER,                                "https://elb.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MAP_REDUCE,                                "https://mrs.cn-north-1.myhuaweicloud.com/v1.1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.KEY_MANAGEMENT,                                "https://kms.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.CLOUD_TRACE,                                "https://cts.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.ANTI_DDOS,                                "https://antiddos.cn-north-1.myhuaweicloud.com/v1/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.Notification,                                "https://smn.cn-north-1.myhuaweicloud.com/v2/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MessageQueue,                                "https://dms.cn-north-1.myhuaweicloud.com/v1.0/%(project_id)s");                endpointResolver.addOverrideEndpoint(ServiceType.MAAS,                                "https://maas.cn-north-1.myhuaweicloud.com/v1/%(project_id)s/objectstorage");                endpointResolver.addOverrideEndpoint(ServiceType.DATABASE, "https://rds.cn-north-1.myhuaweicloud.com");                /* 第二步: 配置鉴权信息(以对接华北区为例)                 * user为用户名                 * projectId为华为云控制台-账户中心-基本信息-管理我的凭证-项目列表中华北区的项目ID                 * userDomainId为华为云控制台-账户中心-基本信息-管理我的凭证的账户ID                 * authURL为IAM服务华北区的域名                 */                String user = "wanglianmin";                String password = "XXXXXX";                String projectId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";                String userDomainId = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";                String authUrl = "https://iam.cn-north-1.myhuaweicloud.com/v3";                // 第三步: 初始化一个连接                OSFactory.enableHttpLoggingFilter(true);   //调试用,可以显示request body和response body                Config config = Config.newConfig().withEndpointURLResolver(endpointResolver).withLanguage(LANGUAGE)                                .withSSLVerificationDisabled();                OSClientV3 osclient = OSFactory.builderV3().withConfig(config).endpoint(authUrl)                                .credentials(user, password, Identifier.byId(userDomainId)).scopeToDomain(Identifier.byId(userDomainId))                                .scopeToProject(Identifier.byId(projectId)).authenticate();                // 第四步: 过滤查询弹性云服务器列表                Map filter_name = new HashMap();                filter_name.put("name", "ecs");                filter_name.put("status", "ACTIVE");                List servers = osclient.compute().servers().list(filter_name);                System.out.println(servers);                               // 第五步:创建虚拟机,填入所需参数;停止、启动、重启、删除虚拟机                String imageId = "1189efbf-d48b-46ad-a823-94b942e2a000";                String flavorId = "s2.small.1";                String networkId = "ef039b60-6a14-42d1-963b-687b627fea08";                String imageId_Windows = "201150a6-479e-45f3-8a4c-fe91855758f0";                                              // 创建Linux密码虚拟机,目前密码使用user-data参数传入,将来会统一使用adminPass参数(注意echo后面的是单引号,单引号!!!)                String userData_org = "#!/bin/bash \r\n echo ´root:P@ssWr0d123´ | chpasswd ;";                byte[] userData_byte = userData_org.getBytes();                String userData = new BASE64Encoder().encode(userData_byte);                // generate networkList                ArrayList networkList = new ArrayList();                networkList.add(networkId);                // generate server body                ServerCreate sc_Linux = Builders.server().name("zt-Linux-test-sdk").flavor(flavorId).image(imageId).availabilityZone("cn-north-1b").userData(userData).networks(networkList).build();                System.out.println("New Server body " + sc_Linux);                Server newServer = osclient.compute().servers().boot(sc_Linux);                osclient.compute().servers().waitForServerStatus(newServer.getId(), Status.ACTIVE, 10, TimeUnit.MINUTES);                System.out.println("New Server " + newServer);                                                              // 创建Windows密码虚拟机,目前密码使用metadata参数传入,将来会统一使用adminPass参数                ServerCreate sc_Windows = Builders.server().name("zt-Windows-test-sdk").flavor(flavorId).image(imageId_Windows).availabilityZone("cn-north-1b").addMetadataItem("admin_pass", "P@ssWr0d123").networks(networkList).build();                System.out.println("New Server body " + sc_Windows);                Server newServer_Windows = osclient.compute().servers().boot(sc_Windows);                osclient.compute().servers().waitForServerStatus(newServer_Windows.getId(), Status.ACTIVE, 10, TimeUnit.MINUTES);                System.out.println("New Server " + newServer_Windows);                                     // 停止虚拟机                ActionResponse repStop = osclient.compute().servers().action(newServer.getId(), Action.STOP);        if(repStop.isSuccess()) {            System.out.println("Stop the server success, status = " + newServer.getId() + newServer.getVmState());        }else {            System.out.println("Stop the server failed " + newServer.getId());        }        osclient.compute().servers().waitForServerStatus(newServer.getId(), Status.SHUTOFF, 3, TimeUnit.MINUTES);                // 启动虚拟机        ActionResponse repStart = osclient.compute().servers().action(newServer.getId(), Action.START);        if(repStart.isSuccess()) {            System.out.println("Start the server success, status = " + newServer.getId() + newServer.getVmState());        }else {            System.out.println("Start the server failed " + newServer.getId());        }        osclient.compute().servers().waitForServerStatus(newServer.getId(), Status.ACTIVE, 3, TimeUnit.MINUTES);                // 重启虚拟机                ActionResponse repReboot = osclient.compute().servers().reboot(newServer.getId(), RebootType.SOFT);        if(repReboot.isSuccess()) {            System.out.println("Reboot the server success, status = " + newServer.getId() + newServer.getVmState());        }else {            System.out.println("Reboot the server failed " + newServer.getId());        }        osclient.compute().servers().waitForServerStatus(newServer.getId(), Status.ACTIVE, 3, TimeUnit.MINUTES);                // 删除虚拟机        ActionResponse repDelete = osclient.compute().servers().delete(newServer.getId());        if(repDelete.isSuccess()) {            System.out.println("Delete the server success, status = " + newServer.getId() + newServer.getVmState());        }else {            System.out.println("Delete the server failed " + newServer.getId());        }                ActionResponse repDelete_Windows = osclient.compute().servers().delete(newServer_Windows.getId());        if(repDelete_Windows.isSuccess()) {            System.out.println("Delete the server success, status = " + newServer_Windows.getId() + newServer.getVmState());        }else {            System.out.println("Delete the server failed " + newServer_Windows.getId());        }                }        
  • 【活动结束】0元使用热门产品,输出API SDK体验报告,赢mate10!
    本帖最后由 开发者 于 2018-3-16 09:29 编辑不少开发者反馈在使用华为云SDK/API时遇到了各种各样的坑: 小明觉得文档不够细化,很难读懂; 老王觉得SDK每个接口可调用次数不明确; 小强认为SDK/API没有统一规范;...... 做为开发者,你在使用华为云SDK/API时,都遇到了哪些糟心的问题? 你觉得华为云SDK/API目前存在的最大问题是什么?有哪些需要重点提升的地方? 说出你的问题或建议就有机会挑战最具价值体验官,更有mate10等你来领! -----------------------------------------我是活动详情分割线----------------------------------------- 活 动 主 题 华为云API SDK上线挑战最具价值体验官 mate10等你领! 活动时间: 调用API/SDK并输出体验报告:2017年12月15日—2018年3月11日 体验报告评审:2018年3月12-14日 活动结果公布:2018年3月15日 华为云API SDK介绍: 您可以基于华为云SDK通过编写代码的方式调用华为云API,或通过发起HTTP/HTTPS请求调用华为云API的方式来使用云产品,实现对应用、资源和数据更灵活的部署、更快速的操作、更精准的使用、更及时的监控。 活动参与方式: 1、注册登录,点击领取代金券礼包,轻松上云; 2、调用已购买产品或礼包产品的API/SDK; 3、在该贴下按模板输出体验报告(问题描述+使用界面截图); 4、体验报告评审:筛选有效体验报告后由产品专家对报告进行综合评分。 5、活动结果公布:公布活动最终结果,获奖用户奖品寄送。 体验报告输出规则: 1、文字、图片必须本人原创;逻辑清晰、图文并茂容易获得专家加分; 2、内容包含但不限于产品使用感受(如使用中存在bug,接口定义不够准确、规范不够清晰、文档不够细化、很难读懂、交互性和体验性不够好,以及使用华为云API/SDK存在的问题,有哪些需要重点提升的方面等各种建议。) 3、报告格式: a.注明购买的产品和调用的API或使用的SDK; b.反馈跟API/SDK相关的使用问题(问题描述+截图)或改进建议; c.如有重复反馈,以最先回帖的用户为准。 奖项评选方式: 1、产品团队从问题或BUG的级别、用户建议的价值等方面进行综合评分。最具价值体验官须反馈提议3条以上有效体验报告; 2、各类奖项不能叠加,每个用户只能获得一个奖项,如遇同一用户获得两个奖项,则以所获最高奖项为准,其奖品顺延至下一用户,如活动体验报告未达到30份,奖项另外酌情处理。 3、为达到活动公平公正公开,避免恶意刷楼等行为,回复无意义内容(纯数字、标点、表情或词不达意等)、谩骂、造谣等,均视为无效。 4、活动参与需遵守《华为云社区常规活动规则》,戳>>>这里 活动奖品展示: 最具价值体验官(1名):华为mate 10(4GB+64GB) 6741 优质建议奖(5名):华为VR 6752 特别参与奖(20名):荣耀引擎耳机二代 6753 体验报告参考模板(两种方式可任选): 1、#API SDK体验报告#使用的产品名称+是否好用+有没有需要优化的地方 如:XX产品可调用的SDK支持语言太少,建议增加XX语言。 2、#API SDK体验报告# 产品名称+ 使用环节 + 问题描述 + 优化建议 + 界面截图 如:在调用XX产品API时,在XX环节发现XX问题,建议做XX优化。 6883 10361(点击图片即可参与活动) 了解更多活动详情,领产品代金券,请戳链接: http://activity.huaweicloud.com/ ... 9N-sso&locale=zh-cn 参考: 密钥管理服务API调用的简单实现(附完整代码) http://forum.huaweicloud.com/for ... =5408&highlight=API 华为云sdk调用知识1-华为云的帐户介绍: http://forum.huaweicloud.com/thread-5371-1-1.html 华为云sdk调用知识2-domain_id/user_id以及project_id: http://forum.huaweicloud.com/thread-5372-1-1.html 【干货】【详情】用华为云账号通过smn-sdk-java简单发送SMN短息: http://forum.huaweicloud.com/thread-5187-1-2.html 华为云ECS服务API使用指南(1) - 获取虚拟机列表: http://forum.huaweicloud.com/thread-397-1-1.html 华为云ECS服务API使用指南(2) - 根据浮动ip过滤查询虚拟机列表: http://forum.huaweicloud.com/thread-623-1-1.html 华为云ECS服务API使用指南(3) - 使用python cli获取keystone认证: http://forum.huaweicloud.com/thread-858-1-1.html 本活动由开发者中心与华为云社区共同策划,有任何活动问题,请联系工作人员咨询。 本活动参加华为云社区嘉年华活动盛典,详情请戳: http://activity.huaweicloud.com/carnival/index.html?icn_source=%E5%88%86%E4%BC%9A%E5%9C%BA&icn_campaign=JNH2018
总条数:1466 到第 页
上滑加载中