• 关于

    阿里云计算型弹性计算器

    的搜索结果

回答

便捷性 您可以一键创建 ECS/SCC/EGS 计算集群和集群管理器,一键部署需要的高性能计算环境和应用程序。帮助您快速构建处理能力出色的应用,解放计算带来的压力。 弹性 根据需求或任务队列使用率增减集群管理器里的计算节点,自动识别运行时负载性能需求,实现集群节点的弹性计算。 安全性 基于 ECS/SCC/EGS/VPC 提供的最高级别的多租户安全隔离。 云产品互通性 使用符合阿里云客户使用习惯的云平台管理控制台,并和阿里云其它产品和服务整合打通。 E-HPC主要提供以下功能: 应用场景 功能描述 参考 计算资源创建 进行HPC计算前,需要先创建HPC计算集群,用于后续提交、运行作业,查看作业结果。E-HPC在创建集群时能够自动部署调度器、应用软件和运行时依赖。 创建及配置集群 计算资源配置 E-HPC支持计算资源的多种配置管理,包括集群用户管理、节点管理、调度器队列管理、集群自动伸缩配置等。 用户管理 节点管理 自动伸缩 提交作业 通过E-HPC控制台即可提交HPC作业,小型作业脚本可以在控制台直接编辑提交,大型作业可通过OSS上传提交。用户也可以直接通过远程SSH命令行的方式访问集群提交作业。 作业管理 登录集群 作业提交 性能分析 通过E-HPC的集谛功能,用户可以监控作业运行时的集群性能数据,包括实时数据和历史数据,同时用户还可以选择所需进程进行性能剖析。 集谛 可视化处理 通过E-HPC的远程可视化功能,用户在控制台上即可实现可视化的作业前后处理。 远程可视化 混合云 通过E-HPC创建HPC混合云集群,可以利用本地的HPC集群向阿里云扩容计算资源,统一调度公共云上资源和用户本地计算节点。 创建混合云集群 使用API管理和使用E-HPC E-HPC提供了丰富的API,方便您快速进行二次开发。 API 概览 混合云部署和调度 通过E-HPC创建HPC混合云集群,利用本地的HPC集群向阿里云扩容计算资源 统一调度公共云上资源和用户本地计算节点,实现跨云调度(本地集群/专有云集群和公共云集群) 支持扩容多种规格实例,达到动态调配的功能 根据集群实时作业负载,自动扩容和缩容公共云上节点

1934890530796658 2020-03-23 16:45:00 0 浏览量 回答数 0

回答

最佳回答 阿里云服务器选择包括计费方式、地域可用区、ECS实例规格、镜像系统、存储云盘及公网带宽几方面,详细如下: 一:ECS付费模式选择 阿里云ECS云服务器有三种付费模式:包年包月、按量付费和抢占式实例: ECS云服务器付费模式 包年包月:包年包月模式比较常见,尤其是长时间使用ECS的场景,如Web网站应用,选择包年包月是节省成本也最合适的付费模式,包年包月是先付费后使用的计费方式,买一台ECS实例,按年或者按月多少钱,用户就先支付多少钱; 按量付费:按量付费模式是先使用后付费,阿里云系统以小时整点结算。按量付费模式适用于短时间或者业务高峰期间的应用场景,比如云服务器吧偶尔需要做测试,就会临时开一台按量付费的ECS,一个小时几分或者几毛钱,用完释放即可; 抢占式实例:抢占式相对于按量付费更优惠,抢占式实例有点类似市场经济,市场价格会随供需变化而浮动。云服务器吧必须提醒用户抢占式实例会被自动释放,所以有状态应用不宜使用抢占式实例,小心你的数据被释放。 二:地域节点及可用区 阿里云地域节点及可用区 地域是指云服务器的物理数据中心所在位置。理论上,用户距离ECS地域距离越近,网络延迟越小,速度就越快,所以ECS地域的选择建议就近原则。当然,这是抛开备案不谈,如果受备案约束,不想备案的用户,那么中国大陆地域就不要选择了,可以选择中国香港地域。 可用区是指同一地域下,电力和网络独立的区域,可用区的存在是为了提升ECS的容灾能力。当选择多台ECS实例时,如果你的应用需要较高的容灾能力,那就需要布局在同地域不同可用区下,如果没有要求,随机分配即可。 详细参考:地域和可用区选择 - 阿里云 三:ECS云服务器配置及规格选择 共享计算型n4、计算网络增强型sn1ne实例等,这么多规格如何选择? 计算型c6实例是新一代企业级实例,性能好价格也贵一些; 突发性能t5实例是入门级规格,CPU性能受限于基准性能; 共享计算型n4:是入门级规格,但是不限制处理器性能,拥有100%CPU性能; 计算网络增强型sn1ne实例:性能也不错,相对于计算型c6属于上一代实例。 关于ECS实例规格详细介绍参考:ECS实例规格族详解 - 阿里云 四:镜像操作系统 镜像可以分为两类,即Windows类和Linux类,镜像是可以免费更换的,但是需要注意的是,只有中国大陆地域的云服务器可以Linux和Windows系统互相更换。 云服务器吧选的中国香港地域,所以我就得谨慎的选择操作系统,假设我选择了Windows类的系统,后续我想要使用Linux类的系统就不能更换了。中国大陆地域如华北、华东、华南等对于不用担心,镜像随便换。 五:存储云盘 存储是指ECS云服务器的块存储,系统盘可选高效云盘、SSD云盘和ESSD云盘(由于XiXiBoBo之前选的是共享计算型n4实例,这个实例不支持ESSD云盘)。云盘性能方面ESSD云盘>SSD云盘>高效云盘,ESSD云盘价格要贵一些,高效云盘相对更便宜,关于云盘性能参考官方文档:云盘参数和性能对比 - 阿里云 七:公网宽带选择 阿里云服务器公网宽带选择 勾选“分配公网IPv4地址”云服务器才有公网IP,不勾选创建后的ECS实例是不可以对外访问的,不勾选的话,后期可以通过绑定弹性公网IP(EIP)来获取公网IP。 带宽计费模式可选按固定宽带和按使用流量。按固定宽带就是用户选择多少M,阿里云就分配给用户多少M的公网宽带,使用期间宽带天天跑满还是没有流量都随便,很好理解;按使用流量计费类似我们手机的上网流量,使用多少G支付多少G的钱,为了防止恶意流量攻击,可以设置宽带峰值。 XiXiBoBo选择了固定宽带计费模式,选择了1M宽带,1M宽带的下载速度是128KB/S,以此类推,2M宽带下载速度256KB/S... 更多参考地址: 阿里云官方(新用户需官网注册查看)

游客koilm2k76aaoo 2020-10-14 10:25:27 0 浏览量 回答数 0

回答

阿里云服务器选择包括计费方式、地域可用区、ECS实例规格、镜像系统、存储云盘及公网带宽几方面,详细如下: 一:ECS付费模式选择 阿里云ECS云服务器有三种付费模式:包年包月、按量付费和抢占式实例: 包年包月:包年包月模式比较常见,尤其是长时间使用ECS的场景,如Web网站应用,选择包年包月是节省成本也最合适的付费模式,包年包月是先付费后使用的计费方式,买一台ECS实例,按年或者按月多少钱,用户就先支付多少钱; 按量付费:按量付费模式是先使用后付费,阿里云系统以小时整点结算。按量付费模式适用于短时间或者业务高峰期间的应用场景,比如云服务器吧偶尔需要做测试,就会临时开一台按量付费的ECS,一个小时几分或者几毛钱,用完释放即可; 抢占式实例:抢占式相对于按量付费更优惠,抢占式实例有点类似市场经济,市场价格会随供需变化而浮动。云服务器吧必须提醒用户抢占式实例会被自动释放,所以有状态应用不宜使用抢占式实例,小心你的数据被释放。 二:地域节点及可用区 地域是指云服务器的物理数据中心所在位置。理论上,用户距离ECS地域距离越近,网络延迟越小,速度就越快,所以ECS地域的选择建议就近原则。当然,这是抛开备案不谈,如果受备案约束,不想备案的用户,那么中国大陆地域就不要选择了,可以选择中国香港地域。 可用区是指同一地域下,电力和网络独立的区域,可用区的存在是为了提升ECS的容灾能力。当选择多台ECS实例时,如果你的应用需要较高的容灾能力,那就需要布局在同地域不同可用区下,如果没有要求,随机分配即可。 详细参考:地域和可用区选择 - 阿里云 三:ECS云服务器配置及规格选择 共享计算型n4、计算网络增强型sn1ne实例等,这么多规格如何选择?计算型c6实例是新一代企业级实例,性能好价格也贵一些;突发性能t5实例是入门级规格,CPU性能受限于基准性能;共享计算型n4:是入门级规格,但是不限制处理器性能,拥有100%CPU性能;计算网络增强型sn1ne实例:性能也不错,相对于计算型c6属于上一代实例。 关于ECS实例规格详细介绍参考:ECS实例规格族详解 - 阿里云 四:镜像操作系统 镜像可以分为两类,即Windows类和Linux类,镜像是可以免费更换的,但是需要注意的是,只有中国大陆地域的云服务器可以Linux和Windows系统互相更换。 云服务器吧选的中国香港地域,所以我就得谨慎的选择操作系统,假设我选择了Windows类的系统,后续我想要使用Linux类的系统就不能更换了。中国大陆地域如华北、华东、华南等对于不用担心,镜像随便换。 五:存储云盘 存储是指ECS云服务器的块存储,系统盘可选高效云盘、SSD云盘和ESSD云盘(由于XiXiBoBo之前选的是共享计算型n4实例,这个实例不支持ESSD云盘)。云盘性能方面ESSD云盘>SSD云盘>高效云盘,ESSD云盘价格要贵一些,高效云盘相对更便宜,关于云盘性能参考官方文档:云盘参数和性能对比 - 阿里云 七:公网宽带选择 阿里云服务器公网宽带选择 勾选“分配公网IPv4地址”云服务器才有公网IP,不勾选创建后的ECS实例是不可以对外访问的,不勾选的话,后期可以通过绑定弹性公网IP(EIP)来获取公网IP。 带宽计费模式可选按固定宽带和按使用流量。按固定宽带就是用户选择多少M,阿里云就分配给用户多少M的公网宽带,使用期间宽带天天跑满还是没有流量都随便,很好理解;按使用流量计费类似我们手机的上网流量,使用多少G支付多少G的钱,为了防止恶意流量攻击,可以设置宽带峰值。 XiXiBoBo选择了固定宽带计费模式,选择了1M宽带,1M宽带的下载速度是128KB/S,以此类推,2M宽带下载速度256KB/S...

coder一枚 2020-09-09 13:39:12 0 浏览量 回答数 0

回答

选择裸金属服务器的最主要原因(超过55%)是:传统虚拟化技术I/O损耗较大;对于I/O密集型应用,裸金属相比传统虚拟机有更好的性能表现 此外近36%的客户认为:裸金属服务器可以降低成本。大多数企业在初始阶段采用将容器运行在虚拟机的方案,但是当大规模生产部署的时候,客户希望直接运行在裸金属服务器上来减少虚拟化技术的license成本(这也常被戏称为“VMWare税”)。 还有近30%的客户因为在物理机上部署有更少的额外资源开销(如虚拟化管理、虚拟机操作系统等);还有近24%的客户选择的原因是:可以有更高的部署密度,从而降低基础设施成本。 超过28%的客户认为,在物理机上可以更加灵活地选择网络、存储等设备和软件应用生态。 在公共云上,我们应该如何选择呢? 2017年10月,阿里云“神龙架构”横空出世。弹性裸金属服务器(ECS Bare Metal Instance)是一款同时兼具虚拟机弹性和物理机性能及特性的新型计算类产品,实现超强超稳的计算能力,无任何虚拟化开销。阿里云2019年8月重磅发布了弹性计算第六代企业级实例,基于神龙架构对虚拟化能力进行了全面升级 基于阿里自研神龙芯片和全新的轻量化Hypervisor - 极大减少虚拟化性能开销 基于阿里云智能神龙芯片和全新的轻量化VMM,将大量传统虚拟化功能卸载到专用硬件上,大大降低了虚拟化的性能开销,同时用户几乎可以获得所有的宿主机CPU和内存资源,提高整机和大规格实例的各项能力,尤其是I/O性能有了大幅度提升。 使用最新第二代英特尔至强可扩展处理器 - E2E性能提升 使用最新一代Intel Cascade Lake CPU, 突发主频提升至3.2GHz, 各场景E2E性能大幅提升,并在深度学习的多种场景有数倍的提升。 给企业级场景带来稳定和可预期的表现 - 全球最高水准SLA 针对软硬件优化以及更加实施更细致的QoS手段,给企业级客户的负载提供更稳定可预期的性能。 一般而言建议: 对性能极其敏感的应用,如高性能计算,裸金属实例是较好的选择。 如果需要Intel SGX,或者安全沙箱等技术,裸金属实例是不二选择。 六代虚拟机实例基于神龙架构,I/O性能有了显著提升,同时有更加丰富的规格配置,可以针对自身应用需求灵活选择,降低资源成本。 虚拟机实例支持热迁移,可以有效降低运维成本。 阿里云ACK K8s集群支持多个节点伸缩组(AutoScalingGroup),不同弹性伸缩组支持不同的实例规格。在工作实践,我们会为K8s集群划分静态资源池和弹性资源池。通常而言,固定资源池可以根据需要选择裸金属或者虚拟机实例。弹性资源池建议根据应用负载使用合适规格的虚拟机实例来优化成本、避免浪费,提升弹性供给保障。

游客bnlxddh3fwntw 2020-03-02 16:53:36 0 浏览量 回答数 0

回答

本文简要介绍使用函数计算的流程。函数计算帮助您无需管理服务器(Serverless),仅专注于函数代码就能快速搭建应用。函数计算能够弹性地伸缩,您只需要按使用量付费。 开发者工具 您可以使用 fcli 或者控制台搭建服务和查询日志等。更多详情,请参阅 命令行工具fcli、命令行工具fun 和 可视化界面控制台。 使用简介 使用函数计算前,您需要在 产品详情页 开通服务。以下流程图包含了使用函数计算搭建服务的必要步骤: Flowchart 创建服务。 创建函数,编写代码,将应用部署到函数中。 以事件源触发函数。 查看执行日志。 查看服务的监控。 创建服务 服务(Service)是管理函数计算的基本资源单位。您可以在服务级别上授权、配置日志和创建函数等。 有关服务的更多信息请参阅 服务简介 。 有关服务操作的更多信息请参阅 服务的增删改查。 创建函数 函数(Function)是调度与运行的基本单位,更是一段代码的处理逻辑。您需要根据函数计算提供的函数接口形式编写代码,并将代码以函数的形式部署到函数计算。函数计算中的服务对应于软件应用架构领域中的微服务。在函数计算平台构建应用时,首先根据需求将业务逻辑抽象为微服务,然后再实现为函数计算中的服务。 一个服务下可以创建多个函数,每个函数可以设置不同的内存规格、环境变量等属性,并可以结合用户的实际业务场景来决定是否开启 Initializer 功能。这种服务或者函数层次化的抽象,在系统抽象和实现灵活度上能够取得很好的平衡。例如,实现一个微服务,调用阿里云语音合成服务,将文字转成语音,再把这段语音和一系列图片组合为视频。其中文字转语音函数是调用其他服务,可以设置很小的内存规格。而视频合成函数是计算密集型,需要更大的内存。因此您可以组合多个不同规格的函数实现微服务,优化成本。 有关函数的更多信息请参阅 函数简介。 有关函数操作的更多信息请参阅 函数的增删改查。 触发函数 函数计算支持事件触发,即当某个事件发生时触发函数的执行。例如配置 OSS 触发器后,当 OSS 对应 Bucket 中有对象新增或删除后都会触发函数的执行,方便您处理上传的对象。配置日志服务触发器,当日志服务对应 Logstore 中有新日志写入后可以触发函数的执行,方便您处理写入的日志。您需要设置触发器来设置事件触发的方式。 函数计算目前支持的触发器请参考 触发器列表 。 有关触发器的更多信息请参阅 触发器简介。 有关触发器操作的更多信息请参阅 触发器的增删改查。 如果不配置触发器,您也可以使用控制台、命令行工具 fcli 或者 SDK 等方式直接调用函数执行。 查看执行日志 查看日志是帮助您调试的一个重要环节。关于使用函数计算配置日志并查看日志,请参阅 函数日志。 查看服务监控 您可以在函数计算 控制台 上查看服务监控。 关于监控指标的更多信息,请参阅 监控指标参考手册。 关于监控数据访问的更多信息,请参阅 监控数据访问指南。

1934890530796658 2020-03-27 16:03:17 0 浏览量 回答数 0

回答

前言 随着计算机技术和 Internet 的日新月异,视频点播技术因其良好的人机交互性和流媒体传输技术倍受教育、娱乐等行业青睐,而在当前, 云计算平台厂商的产品线不断成熟完善, 如果想要搭建视频点播类应用,告别刀耕火种, 直接上云会扫清硬件采购、 技术等各种障碍,以阿里云为例: image 这是一个非常典型的解决方案, 对象存储 OSS 可以支持海量视频存储,采集上传的视频被转码以适配各种终端,CDN 加速终端设备播放视频的速度。此外还有一些内容安全审查需求, 比如鉴黄、鉴恐等。 而在视频点播解决方案中, 视频转码是最消耗计算力的一个子系统,虽然您可以使用云上专门的转码服务,但在很多情况下,您会选择自己搭建转码服务。比如: 您已经在虚拟机/容器平台上基于 FFmpeg 部署了一套视频处理服务,能否在此基础上让它更弹性,更高的可用性? 您有并发处理大量视频的需求。 您有很多超大的视频需要批量快速处理完, 比如每周五定期产生几百个 4G 以上的 1080P 大视频, 但是希望当天几个小时后全部处理完。 您有更高级的自定义处理需求,比如视频转码完成后, 需要记录转码详情到数据库, 或者在转码完成后, 自动将热度很高的视频预热到 CDN 上, 从而缓解源站压力。 自定义视频处理流程中可能会有多种操作组合, 比如转码、加水印和生成视频首页 GIF。后续为视频处理系统增加新需求,比如调整转码参数,希望新功能发布上线对在线服务无影响。 您的需求只是简单的转码需求,或是一些极其轻量的需求,比如获取 OSS 上视频前几帧的 GIF、获取视频或者音频的时长,自己搭建成本更低。 各种格式的音频转换或者各种采样率自定义、音频降噪等功能 您的视频源文件存放在 NAS 或者 ECS 云盘上,自建服务可以直接读取源文件处理,而不需要将它们再迁移到 OSS 上。 如果您的视频处理系统有上述需求,或者您期望实现一个 弹性、高可用、低成本、免运维、灵活支持任意处理逻辑 的视频处理系统,那么本文则是您期待的最佳实践方案。 Serverless 自定义音视频处理 在介绍具体方案之前, 先介绍两款产品: 函数计算 :阿里云函数计算是事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询、性能监控、报警等功能。 函数工作流:函数工作流(Function Flow,以下简称 FnF)是一个用来协调多个分布式任务执行的全托管云服务。您可以用顺序,分支,并行等方式来编排分布式任务,FnF 会按照设定好的步骤可靠地协调任务执行,跟踪每个任务的状态转换,并在必要时执行用户定义的重试逻辑,以确保工作流顺利完成。 免费开通函数计算,按量付费,函数计算有很大的免费额度。 免费开通函数工作流,按量付费,函数工作流有很大的免费额度。 函数计算可靠的执行任意逻辑, 逻辑可以是利用 FFmpeg 对视频任何处理操作, 也可以更新视频 meta 数据到数据库等。函数工作流对相应的函数进行编排, 比如第一步的函数是转码, 第二步的函数是转码成功后,将相应 meta 数据库写入数据库等。 至此,您应该初步理解了函数计算的自定义处理能力 + 函数工作流编排能力几乎满足您任何自定义处理的需求,接下来,本文以一个具体的示例展示基于函数计算和函数工作流打造的一个弹性高可用的 Serverless 视频处理系统,并与传统方案进行性能、成本和工程效率的对比。 Simple 视频处理系统 假设您是对视频进行单纯的处理, 架构方案图如下: image 如上图所示, 用户上传一个视频到 OSS, OSS 触发器自动触发函数执行, 函数调用 FFmpeg 进行视频转码, 并且将转码后的视频保存回 OSS。 OSS 事件触发器, 阿里云对象存储和函数计算无缝集成。您可以为各种类型的事件设置处理函数,当 OSS 系统捕获到指定类型的事件后,会自动调用函数处理。例如,您可以设置函数来处理 PutObject 事件,当您调用 OSS PutObject API 上传视频到 OSS 后,相关联的函数会自动触发来处理该视频。 Simple 视频处理系统示例工程地址 强大的监控系统: 您可以直接基于示例工程部署您的 Simple 音视频处理系统服务, 但是当您想要处理超大视频(比如 test_huge.mov ) 或者对小视频进行多种组合操作的时候, 您会发现函数会执行失败,原因是函数计算的执行环境有最大执行时间为 10 分钟的限制,如果最大的 10 分钟不能满足您的需求, 您可以选择: 对视频进行分片 -> 转码 -> 合成处理, 详情参考:fc-fnf-video-processing, 下文会详细介绍; 联系函数计算团队(钉钉群号: 11721331) 或者提工单: 适当放宽执行时长限制; 申请使用更高的函数内存 12G(8vCPU) 为了突破函数计算执行环境的限制(或者说加快大视频的转码速度), 进行各种复杂的组合操作, 此时引入函数工作流 FnF 去编排函数实现一个功能强大的视频处理工作流系统是一个很好的方案。 视频处理工作流系统 image 如上图所示, 假设用户上传一个 mov 格式的视频到 OSS,OSS 触发器自动触发函数执行, 函数调用 FnF,会同时进行 1 种或者多种格式的转码(由您触发的函数环境变量DST_FORMATS 参数控制)。 所以您可以实现如下需求: 一个视频文件可以同时被转码成各种格式以及其他各种自定义处理,比如增加水印处理或者在 after-process 更新信息到数据库等。 当有多个文件同时上传到 OSS,函数计算会自动伸缩, 并行处理多个文件, 同时每次文件转码成多种格式也是并行。 结合 NAS + 视频切片, 可以解决超大视频(大于 3G )的转码, 对于每一个视频,先进行切片处理,然后并行转码切片,最后合成,通过设置合理的切片时间,可以大大加速较大视频的转码速度。 所谓的视频切片,是将视频流按指定的时间间隔,切分成一系列分片文件,并生成一个索引文件记录分片文件的信息 视频处理工作流系统示例工程地址 示例效果: gif 函数计算 + 函数工作流 Serverless 方案 VS 传统方案 卓越的工程效率 自建服务 函数计算 + 函数工作流 Serverless 基础设施 需要用户采购和管理 无 开发效率 除了必要的业务逻辑开发,需要自己建立相同线上运行环境, 包括相关软件的安装、服务配置、安全更新等一系列问题 只需要专注业务逻辑的开发, 配合 FUN 工具一键资源编排和部署 并行&分布式视频处理 需要很强的开发能力和完善的监控系统来保证稳定性 通过 FnF 资源编排即可实现多个视频的并行处理以及单个大视频的分布式处理,稳定性和监控交由云平台 学习上手成本 除了编程语言开发能力和熟悉 FFmpeg 以外,可能使用 K8S 或弹性伸缩( ESS ),需要了解更多的产品、名词和参数的意义 会编写对应的语言的函数代码和熟悉 FFmpeg 使用即可 项目上线周期 在具体业务逻辑外耗费大量的时间和人力成本,保守估计大约 30 人天,包括硬件采购、软件和环境配置、系统开发、测试、监控报警、灰度发布系统等 预计 3 人天, 开发调试(2人天)+ 压测观察(1 人天) 弹性伸缩免运维,性能优异 自建服务 函数计算 + 函数工作流 Serverless 弹性高可用 需要自建负载均衡 (SLB),弹性伸缩,扩容缩容速度较 FC 慢 FC系统固有毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,免运维,视频处理工作流系统 (FnF + FC) 压测;性能优异, 详情见下面的转码性能表 监控报警查询 ECS 或者容器级别的 metrics 提供更细粒度的 FnF 流程执行以及函数执行情况, 同时可以查询每次函数执行的 latency 和日志等, 更加完善的报警监控机制 函数计算 + 函数工作流 Serverless 方案转码性能表 实验视频为是 89s 的 mov 文件 4K 视频: 4K.mov,云服务进行 mov -> mp4 普通转码需要消耗的时间为 188s, 将这个参考时间记为 T 视频切片时间 FC转码耗时 性能加速百分比 45s 160s 117.5% 25s 100s 188% 15s 70s 268.6% 10s 45s 417.8% 5s 35s 537.1% 性能加速百分比 = T / FC转码耗时 从上表可以看出,设置的视频切片时间越短, 视频转码时间越短, 函数计算可以自动瞬时调度出更多的计算资源来一起完成这个视频的转码, 转码性能优异。 更低的成本 具有明显波峰波谷的视频处理场景(比如只有部分时间段有视频处理请求,其他时间很少甚至没有视频处理请求),选择按需付费,只需为实际使用的计算资源付费。 没有明显波峰波谷的视频处理场景,可以使用预付费(包年包月),成本仍然具有竞争力。 函数计算成本优化最佳实践文档。 假设有一个基于 ECS 搭建的视频转码服务,由于是 CPU 密集型计算, 因此在这里将平均 CPU 利用率作为核心参考指标对评估成本,以一个月为周期,10 台 C5 ECS 的总计算力为例, 总的计算量约为 30% 场景下, 两个解决方案 CPU 资源利用率使用情况示意图大致如下: image 由上图预估出如下计费模型: 函数计算预付费 3CU 一个月: 246.27 元, 计算能力等价于 ECS 计算型 C5 ECS 计算型 C5 (2vCPU,4GB)+云盘: 包月219 元 函数计算按量付费占整个计算量的占比 <= 10%,费用约为 3×864×10% = 259.2 元,(3G 规格的函数满负载跑满一个月费用为:0.00011108×3×30×24×3600 = 863.8,详情查看计费) ITEM 平均CPU利用率 计算费用 总计 函数计算组合付费 >=80% 998(246.27×3+259.2) <= 998 按峰值预留ECS <=30% 2190(10*219) >=2190 在这个模型预估里面,可以看出 FC 方案具有很强的成本竞争力,在实际场景中, 基于 ECS 自建的视频转码服务 CPU 利用甚至很难达到 20%, 理由如下: 可能只有部分时间段有视频转码请求 为了用户体验,视频转码速度有一定的要求,可能一个视频转码就需要 10 台 ECS 并行处理来转码, 因此只能预备很多 ECS 因此,在实际场景中, FC 在视频处理上的成本竞争力远强于上述模型。 即使和云厂商视频转码服务单价 PK, 该方案仍有很强的成本竞争力 我们这边选用点播视频中最常用的两个格式(mp4、flv)之间进行相互转换,经实验验证, 函数内存设置为3G,基于该方案从 mp4 转码为 flv 的费用概览表: 实验视频为是 89s 的 mp4 和 flv 格式的文件视频, 测试视频地址: 480P.mp4 720P.mp4 1080P.mp4 4K.mp4 480P.flv 720P.flv 1080P.flv 4K.flv 测试命令: ffmpeg -i test.flv test.mp4 和 ffmpeg -i test.flv test.mp4 mp4 转 flv: 分辨率 bitrate 帧率 FC 转码耗费时间 FC 转码费用 某云视频处理费用 成本下降百分比 标清 640480 889 kb/s 24 11.2s 0.003732288 0.032 88.3% 高清 1280720 1963 kb/s 24 20.5s 0.00683142 0.065 89.5% 超清 19201080 3689 kb/s 24 40s 0.0133296 0.126 89.4% 4K 38402160 11185 kb/s 24 142s 0.04732008 0.556 91.5% flv 转 mp4: 分辨率 bitrate 帧率 FC 转码耗费时间 FC 转码费用 某云视频处理费用 成本下降百分比 标清 640480 712 kb/s 24 34.5s 0.01149678 0.032 64.1% 高清 1280720 1806 kb/s 24 100.3s 0.033424 0.065 48.6% 超清 19201080 3911 kb/s 24 226.4s 0.0754455 0.126 40.1% 4K 38402160 15109 kb/s 24 912s 0.30391488 0.556 45.3% 成本下降百分比 = (某云视频处理费用 - FC 转码费用)/ 云视频处理费用 某云视频处理,计费使用普通转码,转码时长不足一分钟,按照一分钟计算,这里计费采用的是 2 min,即使采用 1.5 min 计算, 成本下降百分比基本在10%以内浮动 从上表可以看出, 基于函数计算 + 函数工作流的方案在计算资源成本上对于计算复杂度较高的 flv 转 mp4 还是计算复杂度较低的 mp4 转 flv, 都具有很强的成本竞争力。 根据实际经验, 往往成本下降比上表列出来的更加明显, 理由如下: 测试视频的码率较高, 实际上很多场景绝大部分都是标清或者流畅视频的转码场景, 码率也比测试视频低,这个时候计算量变小, FC 执行时间短, 费用会降低, 但是通用的云转码服务计费是不变的. 很多视频分辨率在通用的云转码服务是计费是有很大损失的, 比如转码的视频是 856480 或者 1368768, 都会进入云转码服务的下一档计费单价, 比如856480 进入 1280720 高清转码计费档,1368768 进入 19201080 超清转码计费档, 单价基本是跨越式上升, 但是实际真正的计算量增加可能还不到30%, 而函数计算则是真正能做到按计算量付费. 操作部署 免费开通函数计算,按量付费,函数计算有很大的免费额度。 免费开通函数工作流,按量付费,函数工作流有很大的免费额度。 免费开通文件存储服务NAS, 按量付费 详情见各自示例工程的 README Simple 视频处理系统示例工程地址 视频处理工作流系统示例工程地址 总结 基于函数计算 FC 和函数工作流 FnF 的弹性高可用视频处理系统天然继承了这两个产品的优点: 无需采购和管理服务器等基础设施,只需专注视频处理业务逻辑的开发,大幅缩短项目交付时间和人力成本 提供日志查询、性能监控、报警等功能快速排查故障 以事件驱动的方式触发响应用户请求 免运维,毫秒级别弹性伸缩,快速实现底层扩容以应对峰值压力,性能优异 成本极具竞争力 相比于通用的转码处理服务: 超强自定义,对用户透明, 基于 FFmpeg 或者其他音视频处理工具命令快速开发相应的音视频处理逻辑 原有基于 FFmpeg 自建的音视频处理服务可以一键迁移 弹性更强, 可以保证有充足的计算资源为转码服务,比如每周五定期产生几百个 4G 以上的 1080P 大视频, 但是希望当天几个小时后全部处理完 各种格式的音频转换或者各种采样率自定义、音频降噪等功能, 比如专业音频处理工具 aacgain 和 mp3gain 可以和 serverless 工作流完成更加复杂、自定义的任务编排,比如视频转码完成后,记录转码详情到数据库,同时自动将热度很高的视频预热到 CDN 上, 从而缓解源站压力 更多的方式的事件驱动, 比如可以选择 OSS 自动触发(丰富的触发规则), 也可以根据业务选择 MNS 消息(支持 tag 过滤)触发 在大部分场景下具有很强的成本竞争力相比于其他自建服务: 毫秒级弹性伸缩,弹性能力超强,支持大规模资源调用,可弹性支持几万核.小时的计算力,比如 1 万节课半个小时完成转码 只需要专注业务逻辑代码即可,原生自带事件驱动模式,简化开发编程模型,同时可以达到消息(即音视频任务)处理的优先级,可大大提高开发运维效率 函数计算采用 3AZ 部署, 安全性高,计算资源也是多 AZ 获取, 能保证每个用户需要的算力峰值 开箱即用的监控系统, 如上面 gif 动图所示,可以多维度监控函数的执行情况,根据监控快速定位问题,同时给用户提供分析能力, 比如视频的格式分布, size 分布等 在大部分场景下具有很强的成本竞争力, 因为在函数计算是真正的按量付费(计费粒度在百毫秒), 可以理解为 CPU 的利用率为 100% 最后一一回答一下之前列出的问题: Q1: 您已经在虚拟机/容器平台上基于 FFmpeg 部署了一套视频处理服务,能否在此基础上让它更弹性,更高的可用性? A: 如工程示例所示,在虚拟机/容器平台上基于 FFmpeg 的服务可以轻松切换到函数计算, FFmpeg 相关命令可以直接移值到函数计算,改造成本较低, 同时天然继承了函数计算弹性高可用性特性。 Q2:您的需求只是简单的转码需求,或是一些极其轻量的需求,比如获取 OSS 上视频前几帧的 GIF 等。 自己搭建成本更低。 A: 函数计算天生就是解决这些自定义问题, 你的代码你做主, 代码中快速执行几个 FFmpeg 的命令即可完成需求。典型示例: fc-oss-ffmpeg Q3: 您有更高级的自定义处理需求,比如视频转码完成后, 需要记录转码详情到数据库, 或者在转码完成后, 自动将热度很高的视频预热到 CDN 上, 从而缓解源站压力。 A: 详情见视频处理工作流系统(函数计算 + 函数工作流方案),after-process 中可以做一些自定义的操作, 您还可以基于此流程再做一些额外处理等, 比如: 再增加后续流程 最开始增加 pre-process Q4: 您有并发同时处理大量视频的需求。 A: 详情见视频处理工作流系统(函数计算 + 函数工作流方案), 当有多个文件同时上传到 OSS, 函数计算会自动伸缩, 并行处理多个文件。详情可以参考 视频处理工作流系统 (FnF + FC) 压测 Q5:您有很多超大的视频需要批量快速处理完, 比如每周五定期产生几百个 4G 以上的 1080P 大视频, 但是希望当天几个小时后全部处理完。A: 详情可以参考视频处理工作流系统 (FnF + FC) 压测, 可以通过控制分片的大小, 可以使得每个大视频都有足够多的计算资源参与转码计算, 大大提高转码速度。 Q6: 自定义视频处理流程中可能会有多种操作组合, 比如转码、加水印和生成视频首页 GIF,后续为视频处理系统增加新需求,比如调整转码参数,希望新功能发布上线对在线服务无影响。 A: 详情见视频处理工作流系统(函数计算 + 函数工作流方案), FnF 只负责编排调用函数, 因此只需要更新相应的处理函数即可,同时函数有 version 和 alias 功能, 更好地控制灰度上线, 函数计算版本管理 Q7: 您的视频源文件存放在 NAS 或者 ECS 云盘上,自建服务可以直接读取源文件处理,而不需要将他们再迁移到 OSS 上。 A: 函数计算可以挂载 NAS, 直接对 NAS 中的文件进行处理

1934890530796658 2020-03-27 18:21:36 0 浏览量 回答数 0

回答

前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云 函数计算 平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS, 一键部署等能力, 展现函数计算的开发敏捷特性、自动弹性伸缩能力、免运维和完善的监控设施。 相关参考文档: https://yq.aliyun.com/articles/640912 1.1 DEMO 概述 DEMO 示例效果入口: http://hz.mofangdegisn.cn 账号: fc-test-user 密码: fc-test-pwd DEMO 示例工程地址: fc-wordpress 开通服务 免费开通函数计算, 按量付费,函数计算有很大的免费额度。 免费开通文件存储服务NAS, 按量付费 1.2 解决方案 image 如上图所示, 当多个用户通过对外提供的 url 访问web服务的时候,每秒的请求几百上千都没有关系, 函数计算平台会自动伸缩, 提供足够的执行实例来响应用户的请求, 同时函数计算提供了完善的监控设施来监控您的函数运行情况。 1.3 Serverless 方案与传统自建 web 方案对比 ITEM 成本 稳定性 基于 VM 方案 使用 ecs.t5-lc1m1.small, 22.8元/月 服务器和数据库在同一台VM, 均无主备容灾,同时该规格的主机本身性能弱 轻量应用服务器 60元/月(1vCPU 1GB 1Mbps 20GB[ssd]) 服务器和数据库在同一台VM, 均无主备容灾,同时该规格的主机本身性能弱 函数计算 sqlite3 版本约为 1元/月 mysql 版本大约 26元/月 高 函数计算完整费用详情: 每月前 100 万次函数调用免费, 每月前 400000(GB*秒) 费用免费, 函数的内存可以设置为 128M 或者 256M, 因此对于一个一个月访问量低于 100 万次的网站, 该项是免费的 对于低成本的网站, 假设一个月的产生的公网流量为 1GB, 0.8元 NAS, US$0.06/GB/Month, 网站大小为 50M, 即使按 1G 计算, 0.42元 RDS mysql 最基本的单机版本, 25元/月 函数计算计费 | NAS 定价 如上所述, 在低成本网站领域, 函数计算具有十分明显的成本优势,同时还保持了弹性能力,以后业务规模做大以后并没有技术切换成本(可能需要做的只是更换一个更强的关系型数据库), 同时财务成本增长配合预付费也能保持平滑。低成本网站变成高可用高性能网站如丝般顺滑, 高性能网站详情可以参考文末 FAQ 中的 Q1 问题。 函数计算运行 PHP 框架原理 在具体操作部署之前, 先简单梳理一遍函数计算运行 PHP 框架原理 2.1 传统服务器 PHP 运行原理 原理示意图image.png A simple nginx confimage.png 从上面原理示意图我们可以看出,Web 服务器根据 conf 中 location将 PHP 脚本交给 php-fpm 去解析,然后将解析后的结果返回给 client 端 2.2 FC 驱动 PHP 工程原理 image 函数计算的执行环境实例相当于传统 web 服务的 Apache/Nginx 用户函数相当于实现 Apache/Nginx 的 conf 中 location 用户将 Web 网站部署在 NAS,然后挂载 NAS 到函数的执行环境, 比如下面代码中 /mnt/auto 目录 对于 WordPress 入口函数代码就是这么简单: index.php 其中函数计算为用户提供了一个 $GLOBALS['fcPhpCgiProxy'] 对象用来和 php-fpm 进行交互,对PHP 工程中的 php 文件进行解析,该对象提供了两个重要的接口: requestPhpCgi requestPhpCgi($request, $docRoot, $phpFile = "index.php", $fastCgiParams = [], $options = []) $request: 跟 php http invoke 入口的参数一致 $docRoot: Web 工程的根目录 $phpFile: 用于拼接 cgi 参数中的 SCRIPT_FILENAME 的默认参数 $fastCgiParams: 函数计算内部尽量根据 $request给您构造 default cgi params, 但是如果您不是想要的,可以使用$fastCgiParams覆盖一些参数 (reference: cgi) $options: array类型,可选参数, debug_show_cgi_params 设为 true ,会打印每次请求 php 解析时候的 cgi 参数, 默认为 false ;readWriteTimeout 设置解析的时间, 默认为 5 秒 如果您有兴趣, 可以了解下函数计算 PHP Runtime: PHP 入口函数 PHP 执行环境 案例操作步骤 准备条件 免费开通函数计算, 按量付费,函数计算有很大的免费额度。 免费开通文件存储服务NAS, 按量付费 有一个域名, 比如 abc.com, 并将域名 CNAME 解析到函数计算(FC) 对应的 region 如您想在杭州的 region 部署 wordpres 网站, 则将 abc.com CNAME 解析到 12345.cn-hangzhou.fc.aliyuncs.com, 其中 12345 是您的 accountId 3.1 安装最新的 Fun 工具 安装版本为8.x 最新版或者10.x 、12.x nodejs 安装 funcraf 3.2 Clone 工程 git clone https://github.com/awesome-fc/fc-wordpress.git 3.3 根据需要使用的数据库进入不同的目录 复制 .env_example 文件为 .env, 并且修改 .env 中的信息为自己的信息 如果使用 mysql 数据库, 参考章节 3.3.1 如果使用 sqlite3 数据库, 参考章节 3.3.2 3.3.1 使用 mysql 数据库 进入目录 fc-wp-mysql fun nas init fun nas info fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas 如果你没有修改 templata.yml 中的配置 service名字, 那么则可以进入下一步; 如果有修改, 会在当前目录生成新的目录 .fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目录), 将默认目录下的 .fun/nas/auto-default/fc-wp-mysql/wordpress 的wordpress目录拷贝到 .fun/nas/auto-default/{serviceName} 下, 同时可以删除目录 .fun/nas/auto-default/fc-wp-mysql/wordpress 上传 wordpress 网站到 NAS fun nas sync fun nas ls nas:///mnt/auto/ fun nas sync: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-mysql)上传到 NAS 中的 fc-wp-mysql 目录 fun nas ls nas:///mnt/auto/: 查看我们是否已经正确将文件上传到了 NAS 3.3.2 使用 sqlite3 数据库 进入目录 fc-wp-sqlite fun nas init fun nas info fun nas init: 初始化 NAS, 基于您的 .env 中的信息获取(已有满足条件的nas)或创建一个同region可用的nas 如果你没有修改 templata.yml 中的配置 service名字, 那么则可以进入下一步; 如果有修改, 会在当前目录生成新的目录 .fun/nas/auto-default/{serviceName} (fun nas info 可以列出新的目录), 将默认目录下的 .fun/nas/auto-default/fc-wp-sqlite/wordpress 的wordpress目录拷贝到 .fun/nas/auto-default/{serviceName} 下, 同时可以删除目录 .fun/nas/auto-default/fc-wp-sqlite/wordpress 本地完成安装过程, 初始化 sqlite3 数据库 在目录 .fun/nas/auto-default/fc-wp-sqlite/wordpress 中输入命令: php -S 0.0.0.0:80 修改 host 文件,添加 127.0.0.1 hz.mofangdegisn.cn linux/mac : vim /etc/hosts windows7: C:\Windows\System32\drivers\etc 其中 hz.mofangdegisn.cn 是您预先准备的域名 通过浏览器输入 hz.mofangdegisn.cn, 这个时候没有mysql数据库设置页面,完成 wordpress 安装过程 成功安装以后, 这个时候, .fun/nas/auto-default/fc-wp-sqlite/wordpress/wp-content 下面应该有一个 database 的目录, ls -a 查看, 应该有 .ht.sqlite 这个 sqlite3 数据库文件 回退 host 文件的修改 注: 中间修改 host 的目的是初始化 sqlite3 数据库的时候, base site url 是提前准备的域名, 而不是 127.0.0.1 上传 wordpress 网站到 NAS fun nas sync fun nas ls nas:///mnt/auto/ fun nas sync: 将本地 NAS 中的内容(.fun/nas/auto-default/fc-wp-sqlite)上传到 NAS 中的 fc-wp-sqlite 目录 fun nas ls nas:///mnt/auto/: 查看我们是否已经正确将文件上传到了 NAS 3.4 部署函数到FC平台 接下来将函数部署到云平台: 修改 index.php 中的 $host 中的值 修改 template.yml LogConfig 中的 Project, 任意取一个不会重复的名字即可 修改 template.yml 自定义域名为自己提前准备好的域名 执行 fun deploy 登录控制台 https://fc.console.aliyun.com,可以看到service 和函数已经创建成功, 并且 service 也已经正确配置。 通过浏览器打开自己之前配置的域名, 比如本例中的 hz.mofangdegisn.cn mysql 版本数据库, 可以直接跟传统的 wordpress 一样,直接进入安装过程 sqlite3 版本数据库, 由于之前已经完成初始化,可以直接进入网站首页或网站后台 FAQ Q1: 函数计算能开发高性能高可用网站吗? A: 可以, 使用函数计算的单实例多并发功能和高性能数据库 单实例多并发 选择高性能关系型数据库,比如高可用的云数据库PolarDB 有必要再加上这些优化: 预留实例消除冷启动 + 预付费优化成本 极速型 NAS OSS 对象存储 + CDN 来存储和分发静态资源 目前 PHP Runtime 并不支持单实例多并发, 使用 Custom Runtime,可以将基于传统模式 nginx + php-fpm + mysql 开发的网站直接简单无缝迁移到函数计算平台,示例工程 customruntime-php 使用OSS对Wordpress进行图片动静分离 Q2: 使用低成本 sqlite3 版本的网站, 冷启动第一次打开很慢怎么办? A: 用一个 timer trigger 的函数 keep warm Q3: 使用低成本 sqlite3 版本的网站, 能支持多大的qps? A: 由 sqlite3 数据库性能决定, 这边有一些压测结果: image image 每次压力增大时候, 都有些冷启动,时间慢点,但是支持从压测结果来看支持 50 QPS 是没有疑问的, 是足够支持一些中小网站的。 Q4: 使用其他语言基于函数计算开发 serverless 网站可以吗? A: 可以, 比如 python: https://yq.aliyun.com/articles/603249 , 或者直接使用 custom runtime, 内置了 java、python 和 node, Custom Runtime 用户手册 , Custom Runtime 使用集锦

1934890530796658 2020-03-27 17:54:50 0 浏览量 回答数 0

问题

词汇表是什么样的?(S-V)

轩墨 2019-12-01 22:06:08 2089 浏览量 回答数 0

回答

本文主要为您介绍如何创建和使用带有 NPU 资源的 Kubernetes 集群。 前提条件 您需要开通容器服务和访问控制(RAM)服务。 背景信息 与大型算法模型中 CPU 相比,NPU 处理器最明显的优势是信息处理能力快。NPU 采用了“数据驱动并行计算”架构,颠覆了 CPU 所采用的传统冯·诺依曼计算机架构,这种数据流类型的处理器大大提升了计算能力与功耗的比率。NPU 特别适合处理视频、图像类的海量多媒体数据的场景,不仅速度比 CPU 要高出 100 ~ 1000 倍,同时功耗也远远低于 CPU。 您可以通过阿里云 Kubernetes 集群 + ALI NPU 运行机器学习,图像处理等高运算密度等任务,实现快速部署和弹性扩缩容等功能。 说明 如果想了解 ALI NPU 的相关信息,请参见 AliNPU Website。 本文将以创建 Kubernetes 集群时,添加 ecs.ebman1.26xlarge 实例为例说明如何使用 NPU。 创建集群过程中,容器服务会进行如下操作: 创建 ECS,配置管理节点到其他节点的 SSH 的公钥登录,通过 CloudInit 安装配置 Kubernetes 集群。 创建安全组,该安全组允许 VPC 入方向全部 ICMP 端口的访问。 如果您不使用已有的 VPC 网络,会为您创建一个新的 VPC 及 VSwitch,同时为该 VSwitch 创建 SNAT。 创建 VPC 路由规则。 创建 NAT 网关及 EIP。 创建 RAM 子账号和 AccessKey,该子账号拥有 ECS 的查询、实例创建和删除的权限,添加和删除云盘的权限,SLB 的全部权限,云监控的全部权限,VPC 的全部权限,日志服务的全部权限,NAS 的全部权限。Kubernetes 集群会根据用户部署的配置相应的动态创建 SLB,云盘,VPC路由规则。 创建内网 SLB,暴露 6443 端口。 创建公网 SLB,暴露 6443、8443和 22 端口(如果您在创建集群的时候选择开放公网 SSH 登录,则会暴露 22 端口;如果您选择不开放公网 SSH 访问,则不会暴露 22 端口)。 使用限制 随集群一同创建的负载均衡实例只支持按量付费的方式。 Kubernetes 集群仅支持专有网络 VPC。 每个账号默认可以创建的云资源有一定的配额,如果超过配额创建集群会失败。请在创建集群前确认您的配额。 如果您需要提高配额,请提交工单申请。 每个账号默认最多可以创建 5 个集群(所有地域下),每个集群中最多可以添加 40 个节点。如果您需要创建更多的集群或者节点,请提交工单申请。 说明 Kubernetes 集群中,VPC 默认路由条目不超过48条,意味着 Kubernetes 集群使用 VPC 时,默认节点上限是 48 个,如果需要更大的节点数,需要您先对目标 VPC 开工单,提高 VPC 路由条目,再对容器服务提交工单。 每个账号默认最多可以创建 100 个安全组。 每个账号默认最多可以创建 60 个按量付费的负载均衡实例。 每个账号默认最多可以创建 20 个EIP。 ECS 实例使用限制: 仅支持 CentOS 操作系统。 支持创建按量付费和包年包月的 ECS 实例。 说明 实例创建后,您可以通过 ECS 管理控制台将按量付费转预付费,请参见按量付费转包年包月。 创建 NPU 型 Kubernetes 集群 登录容器服务管理控制台。 在 Kubernetes 菜单下,单击左侧导航栏的集群 > 集群,单击页面右上角的创建 Kubernetes 集群。 在选择集群模板页面,选择异构计算专有集群页面,并单击创建,进入Kubernetes 专有版页面。 本例中创建的是异构计算专有集群,您也可以在选择集群模板时选择异构计算托管集群并进行以下操作。选择集群模板 说明 为了创建 NPU 集群,通常情况下,Worker 节点使用 NPU 类型的 ECS。集群其他参数配置,请参见创建 Kubernetes 集群。 设置 Worker 节点的配置信息。本例中将 Worker 节点作为 NPU 工作节点,选择 NPU 计算型实例规格 ecs.ebman1.26xlarge。 若您选择新增实例,则需要选择 Worker 节点的系列和规格,以及需要创建的 Worker 节点的数量(本示例创建 2 个 NPU 节点,实例类型为 ecs.ebman1.26xlarge)。 设置节点 若您选择添加已有实例,则需要预先在此地域下创建 NPU 云服务器。请参见实例规格族。 完成其他配置后,单击创建集群,启动部署。 集群创建成功后,单击左侧导航栏中的集群 > 节点,进入节点列表页面。 选择所需的集群,选择创建集群时配置的 Worker 节点,单击操作列的更多 > 详情,查看该节点挂载的 NPU 设备。 配置私有镜像密钥 如果您需要使用阿里云提供的 NPU 类型的 Docker 镜像,可以联系与您对接的客户经理或销售人员,获取一个已授权的账号。下载 Docker 镜像并在 Kubernetes 集群中配置私有镜像密钥。 在 Kubernetes 菜单下,单击左侧导航栏的集群 > 集群,进入集群列表页面。 选择所需的集群并单击操作列更多 > 通过 CloudShell 管理集群。 集群连接成功后,界面显示如下:显示结果 执行以下命令,创建一个 docker-registry 类型的 secret。 kubectl create secret docker-registry regsecret --docker-server=registry.cn-shanghai.aliyuncs.com --docker-username=<your_username> --docker-password=<your_password> 说明 regsecret:指定密钥的键名称,可自行定义。 --docker-server:指定 Docker 仓库地址。 --docker-username:获取的账号。 --docker-password:获取的密码。 在 Pod 的配置文件中添加 secret,拉取NPU类型的私有镜像。 apiVersion: v1 kind: Pod metadata: name: test-npu spec: containers: - name: <容器名称> image: registry.cn-shanghai.aliyuncs.com/hgai/<NPU类型的docker镜像> imagePullSecrets: - name: <secret名称> 说明 imagePullSecrets 是声明拉取镜像时需要指定密钥。 regsecret 必须和步骤3生成密钥的键名一致。 image 中的 Docker 仓库名称必须和 --docker-server 中的 Docker 仓库名一致。 使用 NPU 资源 如果某一个 Pod 需要使用 NPU 资源,需要在resources.limits定义aliyun.com/npu的值。 apiVersion: v1 kind: Pod metadata: name: <pod名称> spec: containers: - name: <容器名称> image: <镜像名称> resources: limits: aliyun.com/npu: <请求npu资源数> 运行 TensorFLow 的 NPU 实验环境 您可以在集群中使用 NPU 资源完成模型训练。本例中,将会启动一个使用 NPU 资源的 Pod 进行模型训练。 连接集群,请参见在CloudShell上通过kubectl管理Kubernetes集群 。 在 CloudShell 界面执行以下操作。 cat > test-pod.yaml <<- EOF apiVersion: v1 kind: Pod metadata: name: test-npu-pod spec: restartPolicy: Never imagePullSecrets: - name: regsecret containers: - name: resnet50-npu image: registry.cn-shanghai.aliyuncs.com/hgai/tensorflow:v1_resnet50-tensorflow1.9.0-toolchain1.0.2-centos7.6 resources: limits: aliyun.com/npu: 1 # requesting NPUs EOF 执行如下命令,创建 Pod。 kubectl apply -f test-pod.yaml 执行以下命令,查看 Pod 的状态。 kubectl get po test-npu-pod 说明 如果Pod 为 Error 状态,请执行kubectl logs test-npu-pod命令监听 Pod 日志,并排查修改。 执行结果 等待一段时间后,您可以通过执行如下命令查看 Pod 的状态。 kubectl get po test-npu-pod 如果查看到 Pod 的状态为 Completed,再执行如下命令查看日志。 kubectl logs test-npu-pod 此时看到日志显示结果如下,表示训练任务完成。 2019-10-30 12:10:50.389452: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 AVX512F FMA 100%|##########| 98/98 [00:26<00:00, 3.67it/s] resnet_v1_50, result = {'top_5': 0.9244321584701538, 'top_1': 0.7480267286300659}

1934890530796658 2020-03-27 10:02:57 0 浏览量 回答数 0

问题

【精品问答】大数据计算技术1000问

问问小秘 2019-12-01 21:57:13 6895 浏览量 回答数 2

回答

本文主要为您介绍支持 GPU 调度的 Kubernetes GPU 集群。 前提条件 您需要开通容器服务和访问控制(RAM)服务。 登录 容器服务管理控制台和RAM 管理控制台开通相应的服务。 背景信息 自从1.8版本开始,Kubernetes已经明确表示要通过统一的设备插件方式支持像Nvidia GPU,InfiniBand,FPGA 等硬件加速设备,而社区的GPU方案将在1.10全面弃用,并在1.11版本彻底从主干代码移除。若您需要通过阿里云Kubernetes集群+GPU运行机器学习,图像处理等高运算密度等任务,无需安装nvidia driver和CUDA,就能实现一键部署和弹性扩缩容等功能。 创建集群过程中,容器服务会进行如下操作: 创建 ECS,配置管理节点到其他节点的 SSH 的公钥登录,通过 CloudInit 安装配置 Kubernetes 集群。 创建安全组,该安全组允许 VPC 入方向全部 ICMP 端口的访问。 如果您不使用已有的 VPC 网络,会为您创建一个新的 VPC 及 VSwitch,同时为该 VSwitch 创建 SNAT。 创建 VPC 路由规则。 创建 NAT 网关及 EIP。 创建 RAM 子账号和 AK,该子账号拥有 ECS 的查询、实例创建和删除的权限,添加和删除云盘的权限,SLB 的全部权限,云监控的全部权限,VPC 的全部权限,日志服务的全部权限,NAS 的全部权限。Kubernetes 集群会根据用户部署的配置相应的动态创建 SLB,云盘,VPC路由规则。 创建内网 SLB,暴露 6443 端口。 创建公网 SLB,暴露 6443、8443和 22 端口(如果您在创建集群的时候选择开放公网 SSH 登录,则会暴露 22 端口;如果您选择不开放公网 SSH 访问,则不会暴露 22 端口)。 使用限制 用户账户需有 100 元的余额并通过实名认证,否则无法创建按量付费的 ECS 实例和负载均衡。 随集群一同创建的负载均衡实例只支持按量付费的方式。 Kubernetes 集群仅支持专有网络 VPC。 每个账号默认可以创建的云资源有一定的配额,如果超过配额创建集群会失败。请在创建集群前确认您的配额。如果您需要提高配额,请提交工单申请。 每个账号默认最多可以创建 50 个集群(所有地域下),每个集群中最多可以添加 100 个节点。如果您需要创建更多的集群或者节点,请提交工单申请。 说明 Kubernetes 集群中,VPC 默认路由条目不超过 48 条,意味着 Kubernetes 集群使用 VPC 时,默认路由条目上限是 48 个,如果需要更大的路由条目数,需要您先对目标 VPC 提交工单,申请提高配额。 每个账号默认最多可以创建 100 个安全组。 每个账号默认最多可以创建 60 个按量付费的负载均衡实例。 每个账号默认最多可以创建 20 个EIP。 ECS 实例使用限制: 支持创建按量付费和包年包月的 ECS 实例。 说明 实例创建后,您可以通过 ECS 管理控制台将按量付费转包年包月。 创建GN5型Kubernetes集群 登录容器服务管理控制台。 在 Kubernetes 菜单下,单击左侧导航栏的集群 > 集群,单击页面右上角的创建 Kubernetes 集群。 在选择集群模板页面,选择标准专有版集群页面,并单击创建,进入Kubernetes 专有版页面。 说明 为了创建GPU集群,通常情况下,Worker节点使用GPU类型的ECS。其他集群的参数配置,请参见创建 Kubernetes 集群。 设置 Worker 节点的配置信息。本例中将Worker节点作为GPU工作节点,选择GPU计算型gn5。 若您选择新增实例,则需要选择 Worker 节点的系列和规格,以及需要创建的 Worker 节点的数量(本示例创建2个GPU节点)。 节点设置 若您选择添加已有实例,则需要预先在此地域下创建GPU云服务器。 完成其他配置后,单击创建集群,启动部署。 集群创建成功后,单击左侧导航栏中的集群 > 节点,进入节点列表页面。 选择所需的集群,选择创建集群时配置的Worker节点,单击操作列的更多 > 详情,查看该节点挂载的GPU设备。 运行TensorFLow的GPU实验环境 数据科学家通常习惯使用Jupyter作为TensorFlow实验环境,我们这里可以用一个例子向您展示如何快速部署一个Jupyter应用。 在 Kubernetes 菜单下,单击左侧导航栏的应用 > 无状态,进入无状态(Deployment)页面。 单击页面右上角的创建使用模板创建 。 选择所需的集群,命名空间,选择样例模板或自定义,然后单击创建。 创建应用 本例中,示例模板是一个Jupyter应用,包括一个deployment和service。 Define the tensorflow deployment apiVersion: apps/v1 kind: Deployment metadata: name: tf-notebook labels: app: tf-notebook spec: replicas: 1 selector: # define how the deployment finds the pods it mangages matchLabels: app: tf-notebook template: # define the pods specifications metadata: labels: app: tf-notebook spec: containers: - name: tf-notebook image: tensorflow/tensorflow:1.4.1-gpu-py3 resources: limits: nvidia.com/gpu: 1 #指定调用nvidia gpu的数量 ports: - containerPort: 8888 hostPort: 8888 env: - name: PASSWORD # 指定访问Jupyter服务的密码,您可以按照您的需要修改 value: mypassw0rd Define the tensorflow service apiVersion: v1 kind: Service metadata: name: tf-notebook spec: ports: - port: 80 targetPort: 8888 name: jupyter selector: app: tf-notebook type: LoadBalancer #阿里云的负载均衡访问内部服务和负载均衡 旧的GPU部署方案,您必须要定义如下的nvidia驱动所在的数据卷。 volumes: - hostPath: path: /usr/lib/nvidia-375/bin name: bin - hostPath: path: /usr/lib/nvidia-375 name: lib 这需要您在编写部署文件时,强依赖于所在的集群,导致缺乏可移植性。但是在Kubernetes 1.9.3及之后的版本中,最终用户无需指定这些hostPath,nvidia的插件会自发现驱动所需的库链接和执行文件。 单击左侧导航栏中的路由与负载均衡 > 服务,选择所需的集群和命名空间,选择tf-notebook服务,查看外部端点。 查看服务 在浏览器中访问Jupyter实例,访问地址是http://EXTERNAL-IP,输入模板中配置的密码。 您可通过如下的程序,验证这个Jupyter实例可以使用GPU。它将列出Tensorflow可用的所有设备。 from tensorflow.python.client import device_lib def get_available_devices(): local_device_protos = device_lib.list_local_devices() return [x.name for x in local_device_protos] print(get_available_devices()) 查看结果

1934890530796658 2020-03-27 10:03:01 0 浏览量 回答数 0

回答

本文通过实践案例为您介绍云监控如何利用MNS消息队列实现自动化处理ECS状态变化事件。 背景信息 阿里云ECS在已有的系统事件的基础上,通过云监控新发布了状态变化类事件和抢占型实例的中断通知事件。每当ECS实例的状态发生变化的时候,都会触发一条ECS实例状态变化事件。这种变化包括您在控制台/OpenAPI/SDK操作导致的变化,也包括弹性伸缩或欠费等原因而自动触发的变化,还包括因为系统异常而触发的变化。 云监控以前发布的系统事件,主要针对告警后人工介入的场景,而这次新发布的事件属于正常类的信息通知,适合自动化的审计运维等场景。为了自动化处理ECS状态变化事件,云监控提供了两种主要途径:一种是通过函数计算,另一种是通过MNS消息队列。本文将为您介绍利用MNS消息队列自动化处理ECS事件的三种最佳实践。 自动化处理ECS状态变化事件的准备工作 创建消息队列 登录MNS控制台。 在队列列表页面,选择地域,单击右上角的创建队列,进入新建队列页面。 输入队列的名称(例如“ecs-cms-event”)等信息,单击确认即可完成创建消息队列。 创建事件报警规则 登录云监控控制台。 单击左侧导航栏中的事件监控,进入事件查询页面 单击报警规则页签,然后单击右上角的创建事件报警,弹出创建/修改事件报警对话框。 在基本信息区域,填写报警规则名称,例如如“ecs-test-rule”。 设置事件报警规则:选择事件类型为系统事件。 产品类型、事件等级、事件名称:产品类型选择云服务器ECS,事件类型选择StatusNotification,其余按照实际情况填写。 资源范围:选择全部资源时,任何资源发生相关事件,都会按照配置发送通知;选择应用分组时,只有指定分组内的资源发生相关事件时,才会发送通知。 在报警方式中,选择消息队列,然后选择地域和队列(例如ecs-cms-event)。 完成以上设置后,单击确定按钮即可完成创建事件报警规则。 安装Python依赖 本文所有的代码均使用Python 3.6测试通过,您也可以使用Java等其他编程语言。 请使用Pypi安装以下Python依赖: aliyun-python-sdk-core-v3>=2.12.1 aliyun-python-sdk-ecs>=4.16.0 aliyun-mns>=1.1.5 自动化处理ECS状态变化事件的实施步骤 云监控会把云服务器ECS所有的状态变化事件都投递到MNS里面,接下来我们需要通过编写代码从MNS获取消息并进行消息处理。 实践一:对所有ECS的创建和释放事件进行记录 目前ECS控制台无法查询已经释放的实例。如果您有查询需求,可以通过ECS状态变化事件把所有ECS的生命周期记录在自己的数据库或者日志里。每当创建ECS时,会首先发送一个Pending事件,每当释放ECS时,会最后发送一个Deleted事件。我们需要对这两种事件进行记录。 编辑一个Conf文件。需包含mns的endpoint(可以登录MNS的控制台,在队列列表页,单击获取Endpoint得到)、阿里云的access key和secrect、region id(例如cn-beijing)以及mns queue的名字。 class Conf: endpoint = 'http:// .mns. .aliyuncs.com/' access_key = '<access_key>' access_key_secret = '<access_key_secrect>' region_id = 'cn-beijing' queue_name = 'test' vsever_group_id = '<your_vserver_group_id>' 使用MNS的SDK编写一个MNS Client用来获取MNS消息。 -- coding: utf-8 -- import json from mns.mns_exception import MNSExceptionBase import logging from mns.account import Account from . import Conf class MNSClient(object): def init(self): self.account = Account(Conf.endpoint, Conf.access_key, Conf.access_key_secret) self.queue_name = Conf.queue_name self.listeners = dict() def regist_listener(self, listener, eventname='Instance:StateChange'): if eventname in self.listeners.keys(): self.listeners.get(eventname).append(listener) else: self.listeners[eventname] = [listener] def run(self): queue = self.account.get_queue(self.queue_name) while True: try: message = queue.receive_message(wait_seconds=5) event = json.loads(message.message_body) if event['name'] in self.listeners: for listener in self.listeners.get(event['name']): listener.process(event) queue.delete_message(receipt_handle=message.receipt_handle) except MNSExceptionBase as e: if e.type == 'QueueNotExist': logging.error('Queue %s not exist, please create queue before receive message.', self.queue_name) else: logging.error('No Message, continue waiting') class BasicListener(object): def process(self, event): pass 上述代码只是对MNS消息进行拉取,调用Listener消费消息之后删除消息,后面的实践也会用到。 注册一个Listener进消费指定事件。这个简单的Listener判断收到Pending和Deleted事件时,打印一行日志。 # -- coding: utf-8 -- import logging from .mns_client import BasicListener class ListenerLog(BasicListener): def process(self, event): state = event['content']['state'] resource_id = event['content']['resourceId'] if state == 'Panding': logging.info(f'The instance {resource_id} state is {state}') elif state == 'Deleted': logging.info(f'The instance {resource_id} state is {state}') Main函数可以这么写: mns_client = MNSClient() mns_client.regist_listener(ListenerLog()) mns_client.run() 实际生产环境下,可能需要把事件存储在数据库里,或者利用SLS日志服务,方便后期的搜索和审计。 实践二:ECS的关机自动重启 在某些场景下,ECS会非预期的关机,您可能需要自动重启已经关机的ECS。 为了实现这一目的,我们复用实践一里面的MNS Client,添加一个新的Listener。当收到Stopped事件的时候,对该ECS执行一个Start命令。 -- coding: utf-8 -- import logging from aliyunsdkecs.request.v20140526 import StartInstanceRequest from aliyunsdkcore.client import AcsClient from .mns_client import BasicListener from .config import Conf class ECSClient(object): def init(self, acs_client): self.client = acs_client # 启动ECS实例 def start_instance(self, instance_id): logging.info(f'Start instance {instance_id} ...') request = StartInstanceRequest.StartInstanceRequest() request.set_accept_format('json') request.set_InstanceId(instance_id) self.client.do_action_with_exception(request) class ListenerStart(BasicListener): def init(self): acs_client = AcsClient(Conf.access_key, Conf.access_key_secret, Conf.region_id) self.ecs_client = ECSClient(acs_client) def process(self, event): detail = event['content'] instance_id = detail['resourceId'] if detail['state'] == 'Stopped': self.ecs_client.start_instance(instance_id) 在实际生产环境下,执行完Start命令后,可能还需要继续接收后续的Starting/Running/Stopped等事件,再配合计时器和计数器,进行Start成功或失败之后的处理。 实践三:抢占型实例释放前,自动从SLB移除 抢占型实例在释放之前五分钟左右,会发出释放告警事件,您可以利用这短暂的时间运行一些业务不中断的逻辑。例如,主动从SLB的后端服务器中去掉这台即将被释放的抢占型实例,而不是被动等待实例释放后SLB的自动处理。 我们还是复用实践一的MNS Client,添加一个新的Listener,当收到抢占型实例的释放告警时,调用SLB的SDK。 -- coding: utf-8 -- from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest from .mns_client import BasicListener from .config import Conf class SLBClient(object): def init(self): self.client = AcsClient(Conf.access_key, Conf.access_key_secret, Conf.region_id) self.request = CommonRequest() self.request.set_method('POST') self.request.set_accept_format('json') self.request.set_version('2014-05-15') self.request.set_domain('slb.aliyuncs.com') self.request.add_query_param('RegionId', Conf.region_id) def remove_vserver_group_backend_servers(self, vserver_group_id, instance_id): self.request.set_action_name('RemoveVServerGroupBackendServers') self.request.add_query_param('VServerGroupId', vserver_group_id) self.request.add_query_param('BackendServers', "[{'ServerId':'" + instance_id + "','Port':'80','Weight':'100'}]") response = self.client.do_action_with_exception(self.request) return str(response, encoding='utf-8') class ListenerSLB(BasicListener): def init(self, vsever_group_id): self.slb_caller = SLBClient() self.vsever_group_id = Conf.vsever_group_id def process(self, event): detail = event['content'] instance_id = detail['instanceId'] if detail['action'] == 'delete': self.slb_caller.remove_vserver_group_backend_servers(self.vsever_group_id, instance_id) 注意 抢占型实例释放告警的event name与前面不同,应该是“Instance:PreemptibleInstanceInterruption”, mns_client.regist_listener(ListenerSLB(Conf.vsever_group_id), 'Instance:PreemptibleInstanceInterruption') 在实际生产环境下,您可能需要再申请一台新的抢占型实例,挂载到SLB上,来保证服务能力。

1934890530796658 2020-03-25 19:15:43 0 浏览量 回答数 0

回答

【丁宁-清华大学-阿里达摩院自然语言技术实习体验】 作者简介:丁宁,清华大学计算机科学与技术系2年级博士生,研究方向为自然语言处理、信息抽取、语言表示学习等,在ACL、EMNLP、AAAI、IJCAI等发表多篇文章,作为研究型实习生在阿里达摩院实习半年+。 实习体会 很幸运能来到阿里巴巴进行实习!组里的氛围特别好,同事和师兄师姐都非常专业、友善、亲切。无论是科研上还是工作生活上的任 何问题,都能得到慷慨的帮助。在这里,我认识了一批学术和生活上的榜样(我的主管每天都吃健康餐,而我牛肉汤泡饼),结交了志同道合的朋友(排队喝牛肉汤回来写论文的日子),见识到了IT同学的认真负责(远程帮我调试打印机,周末修电脑),见过了马云老师,也亲身经历了一次双十一奋战。阿里的科研积淀和文化氛围都让我感到收获颇丰,感谢阿里巴巴提供研究型实习生这一高水平项目,也期待更多的同学可以加入研究型实习生的大家庭。 科研心得& 工作宣传 今年在阿里巴巴所做的跨领域分词工作被ACL 2020高分接收,其中meta review说“well-written, well-motivated with strong results, sure accept”。其实这句话可以很好地总结评判科研论文好坏的标准,实际上或许现阶段的科研也并没有什么秘密,动机明确、方法得当、实验充分,就可以形成一篇不错的科研论文。当然了,如果想做出让领域内眼前一亮的工作,可能就需要一些灵光一闪了。 具体到我们的工作上来,跨领域任务往往面临目标领域精标注数据缺失的问题,具体到分词任务上来说,这种数据缺失往往会导致OOV和词的分布差异问题。本文通过弱监督启发式算法来进行远程标注,并引入对抗学习来进行降噪。本文的实验中以newswire (新闻语料)作为源领域,在5个不同的目标领域数据上都取得了较好的效果。 这个工作或许有助于我们真正的往跨领域的两个通用问题上去设计了相关的解决办法。论文名字:《Coupling Distant Annotation and Adversarial Training for Cross-Domain Chinese Word Segmentation》,具体可以查看达摩院的官方宣传~:ACL 2020有哪些值得关注的论文? - 阿里巴巴达摩院的回答 - 知乎https://www.zhihu.com/question/385259014/answer/1190808208 另外,也宣传一下作为co-author的另一篇ACL 2020论文,是实习生同事周洁(上海交大研究生)的工作,瞄准多层级文本分类任务,设计层级敏感编码器将多层结构作为有向图建模,并且实现了一个串行和并行的版本,论文名字:Hierarchy-Aware Global Model for Hierarchical Text Classification。 还有另一个实习生同事张浩宇(国防科大博士生)在IJCAI 2020的工作,使用noisy learning的方法去进行远程监督entity typing降噪,方法非常优雅,论文名字:Learning with Noise: Improving Distantly-Supervised Fine-grained Entity Typing via Automatic Relabeling。 【杜志浩-哈尔滨工业大学-我在达摩院作实习研究僧的那些事儿】 经韩老师介绍,2019年7月,有幸进入阿里巴巴达摩院成为一名实习研究僧。如今也已半年有余,期间发生的事情仍然历历在目。从初出茅庐的不安,到积极融入的快乐,再到宠辱不惊的泰然,一路走来收获良多! 初出茅庐 其实,刚到达摩院语音算法组时,我的内心充满了不安。这种不安来自于初出茅庐的不自信,不知自己能否胜任这份工作,为公司带来效益。同时,也来自于环境转变的不适应,换了一个全新的环境,对公司内的工作方式、待人接物都不甚了解。 但是,在算法组师兄师姐的帮助下,我的这些不安很快就烟消云散了。为了能够使我尽快熟悉工作内容、了解工作方式,雷鸣师兄坚持每周四晚上为实习生开组会,拉着仕良哥、智颖等很多小伙伴一起讨论算法思路和实验中遇到的问题。我想他们应该都挺忙的吧,但还是牺牲自己休息的时间来参加组会。 刚来的那段时间,除了“雷老师,xxx麻烦审批通过一下”以外,我说的最多的恐怕就是“xx姐/哥,xxx在哪”。由于对很多事情都不了解,比如服务器怎么申请啊,oss怎么弄啊,我总是要麻烦逍北姐、遥仙哥等目之所及的小伙伴。他们一边在忙自己的工作一边还不厌其烦的告诉我,为我提供了莫大的帮助。 积极融入 在算法组这段时间,让我印象最为深刻的一句话就是“我们做事情都很直接,有什么问题,就带着方案提出来”。以前,总是被教育和鼓励发现问题,在阿里,找到问题只是完成了第一步,还需要再提出一个切实可行的解决方案。期间发生的一段小插曲让我现在依然记忆犹新。  为了准备910,语音测试组的小伙伴每天都在紧张的进行测试。其中一项是对语音实时转录及翻译软件的稳定性测试。由于已经进入应用阶段,不能在直接将数据送入到模型中,需要将语音播放出来,再由软件录音进行测试。播放的内容是马老师的演讲,对于坐在旁边的小伙伴来说既是一件好事,也是一件坏事。由于马老师的演讲实在太引人入胜了,每次他们进行测试时,我们都无法专心工作,最终只能……。 咳咳,我心想,这么下去也不是事儿啊,梦想要有,生活也得继续啊,得想想办法解决一下这个问题。我尝试了各种办法,但似乎都无法绕过功放这个问题。最终功夫不负有心人,找到了一款虚拟声卡的软件,能够将一个应用程序的音频输出直接作为另一个应用程序的输入。在熟悉过这个软件的使用方式后,我找到测试组的组长,向他提出了我现在的处境和解决方案。他告诉我,他也知道这样会打扰到周边的人,但是之前也没有太好的办法,感谢我提出的解决方案。 虽然这只是实习期间的一段小插曲,但是我依然印象深刻。通过这件事,我践行了带着方案提问题,这一阿里人所特有的工作方式,让我感觉自己正在逐渐融入到这个集体当中。 宠辱不惊 经过几个月“死去”又“活来”的做实验、写论文,我跟雷鸣师兄合作的语音增强相关工作投稿到了ICASSP 2020。这是语音信号处理领域的顶级会议,在来阿里之前,我也投稿过一次,但不幸被拒。为了准备这篇文章,雷鸣师兄跟我保持着很高互动,了解实验进度,适时的进行指导。此外,还有仕良哥帮助我进行语音畸变的评估。 2020年1月25日这一天,是我国的传统节日,春节,同时也是ICASSP出结果的日子。在得知结果前,我的内心非常忐忑。但当得知接收的喜讯时,我反而没有想象中那么兴奋,没有想象中那么高兴。我的第一反应是看看审稿人的意见,看看我专家们对我文章的看法,还有哪些不足和需要改进的地方。 我想宠辱不惊的心态应该是我在阿里的一个重要收获吧,不以物喜不以己悲。尽力做好自己该做的事儿,结果自然水到渠成。 再说两句 在阿里的这段实习使我受益匪浅。这里有乐于助人、善解人意的师兄师姐,也有认真负责、要求严格的主管Leader;有弹性自由的工作时间,也有肝到深夜的满腔热情;有最新最热的研究成果,也有成熟稳定的应用软件。这里不像实验室的象牙塔,关注技术的同时,也更关注技术如何落地、如何应用到生活中去,最终如何造福亿万用户。 韩鹏-KAUST-青春没有我之阿里巴巴天猫精灵争夺赛被迫写的研究心得 竞选宣言: 在阿里实习摸了几个月的鱼,最开心的就是又吃到了祖国的美食,虽然杭州的食物实在是太清淡了,但总比我在沙特每天吃水煮青菜不放盐要好很多。在阿里的这几个月,让我看淡了很多,发现生命里比较重要的就是长在自己脑袋上的头发,不能太年轻就失去他们。女网红我是感觉自己这辈子没机会了,毕竟流量明星也不是靠推荐算法能捧红的,也就希望能够得到这次500块钱的天猫精灵,请大家pick我。 研究心得: 多抱大腿 为了凑足300字的内心情感白描: 这个世界实在是太无聊了,尤其疫情导致的只能居家办公,我已经憋得快精神失常了,虽然平时也不是那么正常。希望这个世界早日恢复原来的美好,我还打算去越南胡志明市的日式KTV感受一下女仆装呢,希望疫情不会让这些服务业倒闭呢吧。 居然还不够300字,感觉生命浪费在写文字上要比大保健上还是好一些的,希望这些文字能够启发你,虽然我感觉也并没有什么意义,而人活着的意义又是什么呢? 【韩镕罄-南加州大学- 阿里研究型实习生体验】 简介: 经过两年研究时间,找到了学校的教职,也找到了老婆,感谢阿里~ 2018年八月来阿里做研究型实习生,本人在南加州大学商学院读Operations Management 的Ph.D. 块两年时间做了几篇 field experiment paper, 感觉阿里有太多好玩有趣的商业问题可以讨论直接研究。 通过和阿里的合作顺利找到UIUC 伊利诺伊大学香槟分校的常任轨教职。 更神奇的是,在实习期间,随便刷个阿里妹儿的相亲帖, 加个微信 聊一聊 发现和自己一天生日。 就是你了!现在已经结婚快半年! 三十而立,一切静好,感谢阿里! 【马腾-清华大学- 阿里巴巴RI项目心得】 我与阿里之缘 在2019年的夏天,后来成为我主管的文侑来到清华进行交流,当时的我刚刚完成了一个学术项目的研究,正在寻求于之后的研究方向。恰好在交流会上碰见了文侑,经过一番交流之后吗,了解到操作系统团队是阿里 RDMA 技术的先行者和推广者,这正是我计划之后想要研究的方向,于是便一拍即合。由于我之前所研究的领域刚好符合是阿里目前正在做的一些项目,所以文侑提供了一个可以在阿里实习的机会。 在通过了多轮面试之后,我终于成功的入职了操作系统内核组作为学术型实习生。从2018年九月初入职至今,将近两年的时间,我也逐渐地适应了在阿里的生活,松弛有度而又充满欢乐。在这里我也结识了许多要好的朋友,并且,通过公司组织的各种聚会和团建的活动,让我解释了许多有着共同语言爱好的伙伴,大家给与了我这个新人很多的帮助和照顾,使我也渐渐地融入了这个有爱的团队。 在阿里的学术成果 在阿里实习期间,在同事们的帮助下,我顺利地完成了两个与我所在实验室合作的学术项目,并且这两个项目也幸运的产出了两篇高质量的论文,分别发表在了不同领域的高水平会议当中。 其中,第一篇论文发表在第21届Cluster会议,与2019年在美国阿尔伯克基召开。Cluster 是高性能计算方向计算机系统领域的主要会议,这个工作提出并实现了统一高效的 RDMA 消息中间件,解决了 RDMA 在实际生产过程中的一些关键可靠性和可用性问题,例如:极简的接口抽象,必要的上层消息确认机制,中间件辅助流控配合 DCQCN,结合生产系统的诊断机制等等,目前该技术已经被广泛应用在阿里巴巴基础云产品中(包括:数据库,分布式存储等)。另外一个工作则发表在了第25届 ASPLOS会议。ASPLOS 是操作系统,体系结构和编程语言三个方向综合的计算机系统领域顶级会议。这篇论文是和我所在的清华高性能所合作完成的,文章中第一次提出了利用RDMA将数据中心的NVM做disaggregation, 实现了高效的框架,同时证明了这种新架构的可行性。 在阿里的感想 阿里巴巴操作系统团队是一直致力于建立和完善系统领域工业界和学术界的纽带,并且在持续实践工业界和学术界之间的问题分享和工作互动,他们希望通过这些分析和互动能够更好地促进中国在世界计算机系统领域的整体发展和创新。作为操作系统团队中的一员,我深切了解到了先进技术对于企业发展的重要性,在实习的过程中,同我所在的实验室进行合作,我更是深深感受到只有通过学术与工业相辅相成,才能够真正让企业发展先进技术。另外一方面,经过一段时间的实习,我对所在的操作系统团队和阿里技术部门的工作有了更深入的了解,我对自己也有了进一步的规划,计划在毕业之后能够入职阿里,通过我的努力,继续在追逐技术之路上奋斗着。 【亓家鑫-新加坡南洋理工大学- 阿里云实习心得】 非常荣幸我们的研究工作*《Two causal principles for improving visual dialog》*获得了同行的认可,并收录在CVPR 2020会议中。在此要特别感谢我的教授,MReaL实验室成员以及阿里城市大脑实验室师兄师姐一直以来的支持和帮助。比起论文本身的内容,我更希望跟大家分享一年来做研究的心得和感悟,虽然目前我仍然是一个萌新,不过我希望通过萌新的角度能带给大家一些研究上的启发。 开始一个研究之前,选择方向很重要。当然,每一个方向都有自己的优缺点,比如新的方向“容易”发文章,可能将其他领域原有的方法引入加一些调整就可以达到比较高的结果。不过如果没有坚实的创新,在同行评议时,可能会受到质疑。一旦没有通过,再转投时可能发现已经落后于其他人。“老“的方向可能会感觉灌水困难,不过因为我没有真正做过经典的方向,所以不太好发表评论。根据观察,在一堆全面而又坚实的研究中找到创新点,对萌新来说确实困难,不过一旦有所突破,肯定会对这个社区产生广泛的影响。作为一个萌新,可能不会自己选择方向或者领域,所以接受导师或者主管的安排成了唯一的选择,不过要相信自己的导师和主管,因为大家都是在帮助你,而且他们经验丰富。只有当自己走完一套研究的流程,并且真正找到自己感兴趣或者觉得可以有所突破的方向,那可能才是真正属于自己的研究的开始。 当选定了方向,开始做研究的时候,清楚的了解所有有关的方法是非常重要的,因为这样可以防止你的idea被存在的方法“抄袭“。其实对一个比较成熟的研究方向来说,简单思考得到的idea一般都会被提出过。不过研究完所有存在方法后,要跳出这些方法,因为阅读他们的方法可能不是来借鉴,更多的是防止撞车,想要真正有创新,在别人的方法上改动往往是不够的,这就要求我们重新审视这个任务甚至数据集的每一个样本。当然目前即使是学术界toy的数据集也有动辄几十万的数据量,看完是不可能的,不过根据自己的思路统计一些数据特征,有时候对研究会产生很大的帮助。当觉得自己已经掌握了这个数据集或者这个任务的时候,应该是跑一些baseline来练习了。 我作为萌新,没有从零开始写,而是找了一个现成的模型开始修改,这样难度会减少很多,不过毕竟是别人的代码,还是有很多不舒服的地方,所以等自己成熟了的时候,有空的时候,一定要从头写一遍。当然我也不知道什么时候有空。当我开始修改baseline的时候,此次的研究旅行就算是上路了,在接受导师的指引的同时也可以自己不断的尝试自己的想法,因为不知道什么是有用的。我作为萌新刚开始的感受是我觉得可能我想的都有用,那一定要去试一下,所以我也建议大家多试一下,说不定真的有用呢,反正电费不花自己的。当一个东西有用的时候,就可以来思考他为什么有用了,当你想好它为什么有用并且通过了广泛的测试,就到了跟大家分享成果的时候。 当然,一个有用的idea背后可能有无数个没用的idea,至于他们为什么没用,我觉得如果实在是有兴趣,可以研究一下,但是有时候会花大量的时间。举一个实际的例子,我在去年做visual dialog比赛,大概四月份就发现了一个有用的方法,之后也顺利的拿到了第一并且在此基础上进行探究和扩展发表了自己的成果。不过同时,当时有一个效果降低的操作一直困扰着我,直到六个月以后,当然这六个月中还做了其他的事情,我才发现了它真正的原因,并且最终变成了我文章中的一句话。举这个例子的目的是,研究没有效果的idea会对研究有所帮助,不过可能会收益较低。 研究成果的发表是一个很重要的过程,它可以给领域内的同行以启发,甚至可以影响本领域之外的人,所以有时候高度总结自己的思想是一件有用的事情。比如我所做的工作我认为进行高度总结之后可以得到一个启发是:对多模态任务来说不一定所有模态都是平等的,对模型来说所存在模态也不一定是影响结果的全部。除了对自己motivation的总结,应用细节以及结果展示也是非常重要的,因为我是萌新,怎样写出一篇文章的经验肯定是不足的,所以在此不再赘述。在发表完文章之后,“售后服务“也是非常重要的一点,这也是我的教授教我的很重要的理念。因为发表的内容不是刊登出来就结束了,而是你对社区贡献的开始,之后做研究可能会发现更好的实现,或者当时的理论没有讲清楚完善,这些都可以补充到自己的代码中,让大家更好的了解你的思路和工作,或许以后还能收获好评。 此外,实验室的成员就是自己研究道路上的引导者和伙伴,会对自己的研究产生各种各样至关重要的影响,大多时候大家都不会吝惜跟你讨论分享自己的观点,有时还会亲自帮助你解决问题,所以要记得经常参加团建和小集体聚会。不过也不能太依赖别人,每当遇到问题的时候,特别是技术性的问题,还是依靠自己解决的好,毕竟未来总会离开实验室,离开乐于帮助你的人。最后,保护好自己的头发,还是要早睡早起,调不出来的bug熬夜也调不出来,不work的idea可能真的不work,没有人保证炼出来的一定是金子,不要过分影响正常的作息,毕竟这不是百米赛跑,也不能算是马拉松,而是长久的起码好几年以上要坚持的事业。不过我作为萌新才刚刚起步,依然没有体会到最艰难的时刻,不过做好心理准备还是应该的,该来的总是会来的。最后的最后希望这些浅显的经验总结能够给大家带来一点儿帮助,谢谢大家的阅读。 【田冰川-南京大学- 在阿里网络团队实习两年是一种怎样的体验?】 简介: 大家好!我是田冰川,南京大学2016级直博生,导师为田臣老师,研究方向为计算机网络。2018年6月,我以研究型实习生的身份入职阿里巴巴基础设施事业部网络研究团队,实习期间主要从事网络验证相关的研究工作,即通过形式化方法与灰度测试,来降低网络变更中的潜在风险。 2018年既是网络研究团队刚刚组建的一年,也是研究型实习生在阿里刚刚起步的一年。这年春天,经我导师田臣老师介绍,我参加了研究型实习生面试,加入了网络研究团队。 来到团队后,我参加的第一个研究项目是“金睛”,用以保障复杂ACL变更的正确性。ACL即访问控制列表,网络中的ACL决定着流量的连通性。网络架构演化有时会伴随着对ACL的迁移,如何保证迁移前后网络连通性是等价的,是困扰架构与运营部门的一大难题,而金睛项目则是为该问题而生。项目落地以来,金睛系统多次在骨干网ACL迁移中对变更方案进行了验证,并逐渐扩展至对边缘网络的验证。相关论文发表于SIGCOMM 2019主会,我在会场进行了20余分钟的演讲,与我们团队的另一篇文章HPCC共同成为阿里集团在网络领域top1学术会议主会中的首次亮相。 时间总是过的很快。转眼间,我来阿里已经两年了,自金睛之后,又陆续参与了多个研究课题。在阿里的时间越久,就越能切身体会到学术界研究与工业界研究的不同。在阿里实习以来,我接触到的所有研究课题,都不是凭空“想”出来的空中楼阁,更不是靠别人论文“启发”出来的二手课题,而是源自于真实业务的现阶段瓶颈与下一阶段发展趋势——这一点是高校科研很难做到的。 这两年间,我对科研这件事的心态也发生了进一步的变化。2017年,来到阿里之前,我的论文达到了学校博士毕业的最低要求,相当于没有了毕业之忧,对科研的心态从“先拿到博士学位再说”,变成了“想要做出点什么,不想让自己的博士5年就这么水过去”;在来到阿里,接触到工业界的前沿课题之后,我对科研的心态再一次发生了转变,变成“因为认可一件事的价值,所以想要去做好”——这已经成为一种内在的驱动力,让我在认真工作的同时,享受研究带来的乐趣。 如果一切顺利的话,我将于2021年6月博士毕业。能在阿里巴巴度过专属实习生的“三年醇”,想必也是人生中的一大成就了! 【吴秉哲-北京大学- 吴师傅的博士研究课题:大数据时代的数据隐私研究方向初探】 加上本科的时间,不知不觉已经在燕园里面呆了八年了,明年不出意外应该就会离开学校去业界工作。准备最近以文章的形式梳理一下博士几年的研究以及生活的心路历程。由于内容比较分散,所以决定分为几个不同的部分。这次推送封面图片是16年骑行到加乌拉山口遥看喜马拉雅山脉的图片,而我在阿里的花名是风远,意为远处的风。希望多年之后,还有一颗少年的心,投入每天永不变。这次借着阿里内部一个活动的机会,写了今天的这篇稿子,为大家介绍一下我的thesis topic。 已经在蚂蚁实习了一年了,一年时光匆匆而过,而在蚂蚁金服度过的这段时光带给了我很多研究以及生活中的体验,这一年里学到的经验也将伴随着我之后的研究之路。 我本科四年是在数院度过,在研究生阶段决定转换方向到计算机系。博士的前两年一直在跌跌撞撞地寻找自己的研究方向,尝试过很多方向均以失败告终。终于在第三年的时候,误打误撞开始研究起机器学习的隐私保护问题并找到了很多灵感,开始沉淀了一些基本的研究工作。有一天我从一个朋友那里听到了她关于金服这边隐私保护机器学习的团队介绍,当时我就决定要到业界的前沿去看一看隐私保护的真实业界需求。在此之前,我已经在谷歌,IBM等公司有过多段实习的经历,但是在蚂蚁这一次实习经历,是与我自己研究方向最接近,也是时间最长的一次。借着这次约稿的机会,以此文简单总结一下自己过去两年在这一方向的研究。 隐私保护与共享学习 目前随着各种机器学习算法在集团的业务落地,许多隐私泄露与数据滥用的风险相继而来。 尤其是在蚂蚁金服这样一个拥有很多支付数据的企业,数据安全以及隐私保护的重要性更是不言而喻。站在商业合作的角度,如何实现不同公司或者部门之间的数据共享学习也是我所在的团队现在攻坚的一个问题。在这样一个研究背景下,我来到了蚂蚁金服的共享智能团队,开始和师兄师姐们从不同的维度对上述问题展开了深入的研究。 共享学习这样一个概念听起来很美好,但是实际落地起来却困难重重,需要考虑到上层软件算法的设计以及底层系统和硬件的优化,才有可能真正在实际的业务中兼顾效率和隐私保护强度。共享智能团队在这一方向上有着得天独厚的优势。一是领先的业务场景,在国际同行好多还停留在学术研究阶段时,我们团队已经和国内多家银行有了合作。另一个则是技术沉淀的领先。因为金服自身业务的特殊性,我们团队很早就开始了隐私保护机器学习和共享学习的布局,包括很多原始的技术沉淀,强大的工程团队以及学术预研团队。这些积累也使得我们能够很快地摸清最新的一些研究成果并能将其吸入到我们自己的系统当中。 我自己关于隐私保护机器学习的研究主要是围绕着三个层面展开,分别是理论,算法设计,以及系统和硬件优化。在理论层面,我主要针对现有的各种机器学习算法,建立相应的隐私泄露分析框架,比如我们在之前的工作中,针对一种常用的贝叶斯学习的算法根据雷尼差分隐私建立了隐私泄露的定量分析框架,我们进一步使用我们的框架和已有的一些泛化误差上界做了联系,从而能从多个角度去解释该算法的隐私泄露原因。在算法设计层面,我们针对各种已有的新兴算法以及场景,比如图神经网络,推荐系统建立了相应的共享学习算法,并利用我们的理论框架,对这些算法的隐私保护强度做了定量的评估。除开上层的理论和算法设计,底层的系统和硬件的优化同样是非常重要的一环。 在我们团队,我们主打基于硬件可信执行环境 (TEE)的机器学习serving系统,我针对我们当前这套服务系统,结合神经网络计算的一些特点,定制了该系统的一系列优化措施大大提升了整个系统的吞吐量。我也将其中一些措施注册了专利,并在前几天得到了内部的专利授权。除开上述介绍的学术研究方面的成果,我也参与了IEEE共享学习标准的制定会议,这也使得我从标准制定者的角度去更深地思考如何使用技术在未来社会中实现隐私与效率的兼顾。 总之,我自己很感谢能成为共享智能团队的一员,我在这里学到的最宝贵的经验就是详细地从上到下了解了这样一个大团队的合作与分工,学习他们是如何一步步从最初的需求分析,算法设计,到最后真正的业务落地。也很高兴和各位共享智能的同事度过自己博士生涯中很重要的一年。也非常感谢我的博士导师对我研究的无条件支持。回看博士这一路的艰辛,也是感慨万千。有点像自己之前高原骑行的经历,经历了爬到坡顶的缺氧与无力,终在转角处遇见了骑行途中最美的雪山风光。

游客bnlxddh3fwntw 2020-05-19 16:05:51 0 浏览量 回答数 0

问题

【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

mr_wid 2019-12-01 21:10:06 20092 浏览量 回答数 6

回答

阿里云ECS在已有的系统事件的基础上,通过云监控新发布了状态变化类事件和抢占型实例的中断通知事件。每当ECS实例的状态发生变化的时候,都会触发一条ECS实例状态变化事件。这种变化包括您在控制台/OpenAPI/SDK操作导致的变化,也包括弹性伸缩或欠费等原因而自动触发的变化,还包括因为系统异常而触发的变化。 云监控以前发布的系统事件,主要针对告警后人工介入的场景,而这次新发布的事件属于正常类的信息通知,适合自动化的审计运维等场景。为了自动化处理ECS状态变化事件,云监控提供了两种主要途径:一种是通过函数计算,另一种是通过MNS消息队列。本文将为您介绍利用MNS消息队列自动化处理ECS事件的三种最佳实践。 自动化处理ECS状态变化事件的准备工作 创建消息队列 登录MNS控制台。 在队列列表页面,选择地域,单击右上角的创建队列,进入新建队列页面。 输入队列的名称(例如“ecs-cms-event”)等信息,单击确认即可完成创建消息队列。 创建事件报警规则 登录云监控控制台。 单击左侧导航栏中的事件监控,进入事件查询页面 单击报警规则页签,然后单击右上角的创建事件报警,弹出创建/修改事件报警对话框。 在基本信息区域,填写报警规则名称,例如如“ecs-test-rule”。 设置事件报警规则:选择事件类型为系统事件。 产品类型、事件等级、事件名称:产品类型选择云服务器ECS,事件类型选择StatusNotification,其余按照实际情况填写。 资源范围:选择全部资源时,任何资源发生相关事件,都会按照配置发送通知;选择应用分组时,只有指定分组内的资源发生相关事件时,才会发送通知。 在报警方式中,选择消息队列,然后选择地域和队列(例如ecs-cms-event)。 完成以上设置后,单击确定按钮即可完成创建事件报警规则。 安装Python依赖 本文所有的代码均使用Python 3.6测试通过,您也可以使用Java等其他编程语言。 请使用Pypi安装以下Python依赖: aliyun-python-sdk-core-v3>=2.12.1 aliyun-python-sdk-ecs>=4.16.0 aliyun-mns>=1.1.5 自动化处理ECS状态变化事件的实施步骤 云监控会把云服务器ECS所有的状态变化事件都投递到MNS里面,接下来我们需要通过编写代码从MNS获取消息并进行消息处理。 实践一:对所有ECS的创建和释放事件进行记录 目前ECS控制台无法查询已经释放的实例。如果您有查询需求,可以通过ECS状态变化事件把所有ECS的生命周期记录在自己的数据库或者日志里。每当创建ECS时,会首先发送一个Pending事件,每当释放ECS时,会最后发送一个Deleted事件。我们需要对这两种事件进行记录。 编辑一个Conf文件。需包含mns的endpoint(可以登录MNS的控制台,在队列列表页,单击获取Endpoint得到)、阿里云的access key和secrect、region id(例如cn-beijing)以及mns queue的名字。 class Conf: endpoint = 'http://<id>.mns.<region>.aliyuncs.com/' access_key = '<access_key>' access_key_secret = '<access_key_secrect>' region_id = 'cn-beijing' queue_name = 'test' vsever_group_id = '<your_vserver_group_id>' 使用MNS的SDK编写一个MNS Client用来获取MNS消息。 # -*- coding: utf-8 -*- import json from mns.mns_exception import MNSExceptionBase import logging from mns.account import Account from . import Conf class MNSClient(object): def __init__(self): self.account = Account(Conf.endpoint, Conf.access_key, Conf.access_key_secret) self.queue_name = Conf.queue_name self.listeners = dict() def regist_listener(self, listener, eventname='Instance:StateChange'): if eventname in self.listeners.keys(): self.listeners.get(eventname).append(listener) else: self.listeners[eventname] = [listener] def run(self): queue = self.account.get_queue(self.queue_name) while True: try: message = queue.receive_message(wait_seconds=5) event = json.loads(message.message_body) if event['name'] in self.listeners: for listener in self.listeners.get(event['name']): listener.process(event) queue.delete_message(receipt_handle=message.receipt_handle) except MNSExceptionBase as e: if e.type == 'QueueNotExist': logging.error('Queue %s not exist, please create queue before receive message.', self.queue_name) else: logging.error('No Message, continue waiting') class BasicListener(object): def process(self, event): pass 上述代码只是对MNS消息进行拉取,调用Listener消费消息之后删除消息,后面的实践也会用到。 注册一个Listener进消费指定事件。这个简单的Listener判断收到Pending和Deleted事件时,打印一行日志。 # -*- coding: utf-8 -*- import logging from .mns_client import BasicListener class ListenerLog(BasicListener): def process(self, event): state = event['content']['state'] resource_id = event['content']['resourceId'] if state == 'Panding': logging.info(f'The instance {resource_id} state is {state}') elif state == 'Deleted': logging.info(f'The instance {resource_id} state is {state}') Main函数可以这么写: mns_client = MNSClient() mns_client.regist_listener(ListenerLog()) mns_client.run() 实际生产环境下,可能需要把事件存储在数据库里,或者利用SLS日志服务,方便后期的搜索和审计。 实践二:ECS的关机自动重启 在某些场景下,ECS会非预期的关机,您可能需要自动重启已经关机的ECS。 为了实现这一目的,我们复用实践一里面的MNS Client,添加一个新的Listener。当收到Stopped事件的时候,对该ECS执行一个Start命令。 -- coding: utf-8 -- import logging from aliyunsdkecs.request.v20140526 import StartInstanceRequest from aliyunsdkcore.client import AcsClient from .mns_client import BasicListener from .config import Conf class ECSClient(object): def init(self, acs_client): self.client = acs_client # 启动ECS实例 def start_instance(self, instance_id): logging.info(f'Start instance {instance_id} ...') request = StartInstanceRequest.StartInstanceRequest() request.set_accept_format('json') request.set_InstanceId(instance_id) self.client.do_action_with_exception(request) class ListenerStart(BasicListener): def init(self): acs_client = AcsClient(Conf.access_key, Conf.access_key_secret, Conf.region_id) self.ecs_client = ECSClient(acs_client) def process(self, event): detail = event['content'] instance_id = detail['resourceId'] if detail['state'] == 'Stopped': self.ecs_client.start_instance(instance_id) 在实际生产环境下,执行完Start命令后,可能还需要继续接收后续的Starting/Running/Stopped等事件,再配合计时器和计数器,进行Start成功或失败之后的处理。 实践三:抢占型实例释放前,自动从SLB移除 抢占型实例在释放之前五分钟左右,会发出释放告警事件,您可以利用这短暂的时间运行一些业务不中断的逻辑。例如,主动从SLB的后端服务器中去掉这台即将被释放的抢占型实例,而不是被动等待实例释放后SLB的自动处理。 我们还是复用实践一的MNS Client,添加一个新的Listener,当收到抢占型实例的释放告警时,调用SLB的SDK。 -- coding: utf-8 -- from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest from .mns_client import BasicListener from .config import Conf class SLBClient(object): def init(self): self.client = AcsClient(Conf.access_key, Conf.access_key_secret, Conf.region_id) self.request = CommonRequest() self.request.set_method('POST') self.request.set_accept_format('json') self.request.set_version('2014-05-15') self.request.set_domain('slb.aliyuncs.com') self.request.add_query_param('RegionId', Conf.region_id) def remove_vserver_group_backend_servers(self, vserver_group_id, instance_id): self.request.set_action_name('RemoveVServerGroupBackendServers') self.request.add_query_param('VServerGroupId', vserver_group_id) self.request.add_query_param('BackendServers', "[{'ServerId':'" + instance_id + "','Port':'80','Weight':'100'}]") response = self.client.do_action_with_exception(self.request) return str(response, encoding='utf-8') class ListenerSLB(BasicListener): def init(self, vsever_group_id): self.slb_caller = SLBClient() self.vsever_group_id = Conf.vsever_group_id def process(self, event): detail = event['content'] instance_id = detail['instanceId'] if detail['action'] == 'delete': self.slb_caller.remove_vserver_group_backend_servers(self.vsever_group_id, instance_id)

景凌凯 2020-03-25 22:23:53 0 浏览量 回答数 0

问题

【精品问答】130+大数据面试汇总

问问小秘 2019-12-01 21:52:42 1644 浏览量 回答数 2
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 企业建站模板