建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消
发表于2020年07月07日 21:06:13 2551 2
直达本楼层的链接
楼主
显示全部楼层
【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播

最近几个月,我的变化其实还蛮大的,从一个被实习生“无视”的“前浪”,转变成了不仅能够解决技术问题还能解决业务问题(顺手还能帮实习生解决恋爱问题)的“前辈”。前面几期故事记录了我的高光时刻,有兴趣可以点击前文查看(https://bbs.huaweicloud.com/forum/forum-1104-1.html)。

 

公司的短视频项目上线之后一直不温不火,老板挺着急,运营部提出要在6月底组织一次千人直播带货活动,邀请1千个主播同时在短视频平台上开直播,拉用户和流量。

 千人同时在线直播,短视频平台的目标访问量在百万级以上,需要技术部门保证高并发流量下服务器的稳定。这个好办,华为云弹性云服务器是可以随时扩容的,经过部门研究,我们给出的技术方案是临时创建100台云虚拟机来支撑这次活动。

 这个任务又光荣地落到了我的身上,谁让我是公司公认的云服务器专家呢…可离直播活动落地只有一个星期的时间了,还要留出时间进行压测。“通过API可以批量处理弹性云服务器,但我现在一个个接口封装也来不及啊!而且根据我的经验,还得提前做好随时扩容的准备,能够支持比预估目标更高的流量,得赶紧想想除了API还有什么可以用……”我心里有点着急了。

 

习惯性地打开华为云官网,在首页发呆了1分钟,一道灵光闪过:操作简单,可以快速控制批量资源,这可不就是SDK的特性吗!说来就来,我很快就有了思路:先快速创建100台按需计费的弹性云服务器作为直播支撑,在直播完成后,再对这些弹性云服务器进行释放。

 

打开API Explorer(https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview?utm_source=apiwz&utm_medium=read )快速浏览,确认我需要用到的接口是CreatePostPaidServers 、 ListServerDetails 和DeleteServers。

 

万万没想到,这个设计还真起到了救急的作用!

 直播开始前1个小时,运营部门突然反馈,这次活动的推广效果大大超出预期,峰值流量可能是预期目标的10倍!这将给网站访问带来很大的压力,老大给我打电话问我有没有办法处理。

 这当然难不住我了,因为提前准备了技术方案,在直播过程中随着访问量的变化,随时批量调整服务器的配置,完美保障了直播的进行,最后在10倍于目标值的访问量下,依然没有出现任何卡顿/延迟的情况。

 活动结束后,我又开始了疯狂输出,将SDK的配置方法写在了文档里:

 

一、前置条件:获取必填参数

 1.     华为云SDK的认证方式为AK/SK认证,可以在华为云控制台”我的凭证-访问密钥”页面上创建和查看AK/SK。更多信息请查看访问密钥(https://support.huaweicloud.com/usermanual-ca/zh-cn_topic_0046606340.html)。

 2.     准备接口的必填参数

PS:在华为云控制台-镜像服务IMS中可快速获取公共镜像相应的ID

服务器配置详情:

l   区域:华北-北京一 - cn-north-1

l   可用区:可用区1 - cn-north-1a

l   规格:通用计算增强型 - c3.large.2

l   镜像:Windows Server 2019数据中心版 64 位简体中文 - fb48d5c7-8718-489a-9273-d3e0e09c84d7

l   服务器名:任意指定 - 如 "live-stream”

l   系统盘类型:普通 IO 磁盘 – "SATA"

l   虚拟私有云 ID(VPC ID):可获取当前账号在北京一区域中默认的 VPC ID,若没有默认 VPC 则新建

l   网卡信息:可获取当前账号在北京一区域中默认 PC / 新建 VPC 下的子网 ID

l   允许重名:当批量创建弹性云服务器时,云服务器名称是否允许重名,当count大于1的时候该参数生效 - false

 

二、实战演练

PS:指南:https://github.com/huaweicloud/huaweicloud-sdk-java-v3/blob/master/README_CN.md

 1.     新建maven项目,导入SDK的maven依赖

<!-- add dependencies in pom.xml -->
<dependency>
    <groupId>com.huaweicloud.sdk</groupId>
    <artifactId>huaweicloud-sdk-core</artifactId>
    <version>[3.0.1-beta, 3.1.0-beta)</version>
</dependency>
<dependency>
    <groupId>com.huaweicloud.sdk</groupId>
    <artifactId>huaweicloud-sdk-ecs</artifactId>
    <version>[3.0.1-beta, 3.1.0-beta)</version>
</dependency>

2.     批量创建弹性云服务器Demo

import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.http.HttpConfig;
import com.huaweicloud.sdk.ecs.v2.EcsClient;
import com.huaweicloud.sdk.ecs.v2.model.*;
 
import java.util.LinkedList;
import java.util.List;
 
public class TestCreateEcs {
    public static void main(String[] args) {
        String ak = "{your ak string}";
        String sk = "{your sk string}";
        String projectId = "{your project id}";
        String endpoint = "https://ecs.cn-north-1.myhuaweicloud.com";
 
        HttpConfig config = HttpConfig.getDefaultHttpConfig().withIgnoreSSLVerification(true);
 
        BasicCredentials credentials = new BasicCredentials().withAk(ak).withSk(sk).withProjectId(projectId);
 
        EcsClient ecsClient = EcsClient.newBuilder().withCredential(credentials).withEndpoint(endpoint).withHttpConfig(config).build();
 
        // 确认创建虚拟机的必填参数
        String az = "cn-north-1a";
        String flavorRef = "s3.medium.2";
        String imageRef = "fb48d5c7-8718-489a-9273-d3e0e09c84d7";
        String name = "live-stream";
        String vpcId = "{you vpc id}";
        // 网卡信息
        PostPaidServerNic nic = new PostPaidServerNic().withSubnetId("{your subnet id}");
        List<PostPaidServerNic> list = new LinkedList<>();
        list.add(nic);
        // 系统盘信息
        PostPaidServerRootVolume root = new PostPaidServerRootVolume().withVolumetype(PostPaidServerRootVolume.VolumetypeEnum.SATA);
 
        PostPaidServer servers = new PostPaidServer().withAvailabilityZone(az)
                .withFlavorRef(flavorRef)
                .withImageRef(imageRef)
                .withName(name)
                .withNics(list)
                .withRootVolume(root)
                .withVpcid(vpcId)
                .withCount(100)
                .withIsAutoRename(false);
 
        CreatePostPaidServersRequestBody body = new CreatePostPaidServersRequestBody().withServer(servers);
        CreatePostPaidServersRequest request = new CreatePostPaidServersRequest().withBody(body);
        CreatePostPaidServersResponse response = ecsClient.createPostPaidServers(request);
 
        System.out.println(response.toString());
    }
}

3.     批量删除弹性云服务器Demo

// Step1: 查询当前以"live-stream"为开头的虚拟机列表
ListServersDetailsRequest listServersDetailsRequest = new ListServersDetailsRequest().withName("live-stream");
ListServersDetailsResponse listServersDetailsResponse =
    ecsClient.listServersDetails(listServersDetailsRequest);
 
// Step2: 构造删除请求中的ServerId列表
List<ServerDetail> serversList = listServersDetailsResponse.getServers();
List<ServerId> serverIdList = new ArrayList<>();
for(ServerDetail server : serversList) {
    ServerId id = new ServerId().withId(server.getId());
    serverIdList.add(id);
}
 
// Step3: 传入serverId列表,删除虚拟机
DeleteServersRequestBody deleteServersRequestBody = new DeleteServersRequestBody().withServers(serverIdList);
DeleteServersRequest deleteServersRequest = new DeleteServersRequest().withBody(deleteServersRequestBody);
DeleteServersResponse deleteServersResponse = ecsClient.deleteServers(deleteServersRequest);


活动取得了非常好的成绩,实现了短视频平台流量和用户增长的目标,但是这次老板居然没有表扬我,我还有些纳闷:难道老板已经习惯了我的优秀?过了几天,HR小姐姐递过来一张表让我签字,表上写着:“调薪申请表,调薪幅度30%”,老板已经签好了名字。 


目前API Explorer平台(https://apiexplorer.developer.huaweicloud.com/apiexplorer/overview?utm_source=apiwz&utm_medium=read)已开放EI企业智能、计算、应用服务、网络、软件开发平台、视频等70+云服务,共上线2000+个API、6000+个错误码。在前期试运行期间,华为云API Explorer平台上的API接口也已被多家企业成功接入。

点击查看详情:《API Explorer新功能上线:支持一键分享调用参数,从此定位接口问题只要一键转发就行了,现在试用还有码豆拿哦》

华为云API Explorer平台在未来几个月会实现更多功能,比如支持SDK示例代码、CLI等特性,同时也会开放更多的云服务API接口,连接更多开发者实现创新、拓宽创新边界。


【拓展阅读】

  1. 【API进阶之路】因为不会创建云服务器,我被实习生摆了一道

  2. 【API进阶之路】前浪的绝地反击与自我证明

  3. 【API进阶之路】甩锅大会上,我是如何绝地求生的

  4. 【API进阶之路】一个技术预案,让老板当场喊出了“奥利给”

  5. 【API进阶之路】万万没想到,一个技术方案帮实习生追到了运营妹子!

  6. 【API进阶之路】一个技术盲点,差点让整个项目翻车

  7. 【API进阶之路】老板给我涨薪30%!如何通过SDK接口搞定千万级流量直播

  8. 【API进阶之路】半天搞定百万条手机号归属地查询,竟影响了公司战略方向!

  9. 【API进阶之路】无法想象!大龄码农的硬盘里有这么多宝藏

  10. 【API进阶之路】高考要考口语?一场10w+刷屏活动是如何用多模态评测API做出来的

  11. 【API进阶之路】帮公司省下20万调研费!如何巧用情感分析API实现用户偏好调研

  12. 【API进阶之路】逆袭!用关键词抽取API搞定用户需求洞察


【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~

API入门学习赛·AI人脸识别

l   报名地址

l   奖项设置

API入门学习赛·探险寻宝之旅

l   报名地址

l   奖项设置




举报
分享

分享文章到朋友圈

分享文章到微博

Cynthia成

发帖: 47粉丝: 18

发消息 + 关注

发表于2020年08月21日 10:28:14
直达本楼层的链接
来自 2#
显示全部楼层

【华为云API学习赛】为入门初学者量身定制的学习平台,以赛带学,学以致用。参赛、邀请都有丰富奖品,还有机会拿P40 5G手机~

API入门学习赛·AI人脸识别

l   报名地址

l   奖项设置

API入门学习赛·探险寻宝之旅

l   报名地址

l   奖项设置


点赞 评论 引用 举报

白先生

发帖: 0粉丝: 4

发消息 + 关注

发表于2020年12月02日 08:43:58
直达本楼层的链接
地板
显示全部楼层

感谢分享

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册