• [问题求助] 提交后报错,没有得到虚拟机的数量????
    提交数据的时候报错: #### ANSWER RUNTIME EXCEPTION #### [preliminariesL1usecase01]: "The format of the output file is invalid. error info: fail to get vm's num" [preliminariesL1usecase02]: "The format of the output file is invalid. error info: fail to get vm's num" [preliminariesL2usecase01]: "The format of the output file is invalid. error info: fail to get vm's num" [preliminariesL2usecase02]: "The format of the output file is invalid. error info: fail to get vm's num" 我们的本地输出: 42 flavor1 0 flavor2 1 flavor3 1 flavor4 0 flavor5 4 flavor6 2 flavor7 5 flavor8 10 flavor9 3 flavor10 0 flavor11 4 flavor12 5 flavor13 2 flavor14 1 flavor15 4 7 1 flavor15 2 2 flavor15 2 3 flavor12 4 4 flavor12 1 flavor14 1 flavor13 2 5 flavor11 4 flavor9 3 flavor8 2 6 flavor8 8 flavor6 2 flavor3 1 flavor5 4 flavor7 2 flavor2 1 7 flavor7 3 到底是哪里有问题呢?
  • [技术探讨] 关于不同规格虚拟机之间相关性
    大家怎么看不同规格虚拟机之间的相关性?(纯属交流探讨哈)
  • [问题求助] 关于预测虚拟机数量
    预测虚拟机数量时,对于不同规格虚拟机,认为它们是相互独立的吗?还是会受总数量等条件的约束?
  • 虚拟私有云,认识一下
    本帖最后由 蓝书签 于 2018-3-13 20:57 编辑虚拟私有云虚拟私有云(Virtual Private Cloud)可帮助您基于华为云轻松构建隔离的虚拟网络环境。您可以完全掌控自己的虚拟网络,包括申请弹性带宽/IP、创建子网、配置DHCP、设置安全组等。此外您也可以通过专线/VPN等连接方式将VPC与传统数据中心互联互通,灵活整合资源。 价格体系带宽 [*]计费模式:按需,包年包月 [*]计费因子:按照带宽收费:带宽大小(MB)+使用时长,带宽采取梯形定价,带宽越大收费越高 VPN [*]计费模式:按需 [*]计费因子:使用时长 申请VPC虚拟私有云服务本身不收取费用。但用户在使用带宽或VPN时需要按照收费标准购买,购买时可以选择“包年包月”和“按需付费”两种形式。点我了解详情→申请VPC服务购买VPN 点我了解详情→开通VPN服务 体验不错,如何续费呢?点我了解详情→续费服务
  • [问题求助] 数据读取
    请问一下,赛题说明有一句话说 “注意:测试用例输入的虚拟机规格通常只是历史数据的一部分,不是全部,参赛者只需要对输入的虚拟机规格进行预测即可,其他虚拟机规格无需考虑。)” 意思是预测的虚拟机规格限定在input文件中的虚拟机规格吗??
  • [问题求助] 关于虚拟机放置问题,只要要放置要预测的虚拟机还是所有的虚拟机。
    关于虚拟机放置问题:1、只需要放置要预测的虚拟机还是所有的虚拟机? 2、放置的虚拟机是整个预测时间内虚拟机的总和吗,例如预测的第一天有2个flavor1,第二天有3个flavor1,后面的天数都没有。请问输出文档里是需要放置5个flavor1吗?
  • [问题求助] 需要预测的虚拟机规格和时间段是是什么?
    看了初赛题目一遍又一遍,需要预测的虚拟机规格和时间段是是什么? 有没有大神告诉我一下{:4_87:}
  • [问题求助] 单个虚拟机的cpu(MEM)需求量会不会大于单个物理机的cpu(MEM)
    单个虚拟机的cpu(MEM)需求量,有没有可能会大于单个物理机的cpu(MEM)?
  • [问题求助] 关于物理主机内虚拟机的放置问题
    关于赛题解释的 程序输入与输出 部分的疑问 其中输入文件中 物理主机的配置是 56 128 1200 输出文件 示例:6flavor5 3flavor10 2flavor15 141 flavor5 22 flavor5 1 flavor10 13 flavor15 14 flavor10 1按照这个物理主机的配置 把所有的虚拟机分配在一个物理服务器上 资源也不会溢出,为什么要分配4个物理主机呢?求解
  • [问题求助] 训练样例的疑问
    虚拟机ID 虚拟机规格名称 创建时间之间的分隔符是什么? 虚拟机ID 虚拟机规格名称之间不是一个空格分割么?
  • [问题求助] 输入格式和输出格式的的VM是不是一样的呢
    您好,问下呢比赛程序内容:请你设计一个程序能够精确预测未来某个时间段内的虚拟机的请求情况,并寻找最佳的资源分配方案:对输入的虚拟机历史请求数据进行建模分析以及训练,确定系数给出预测模型,然后对给定预测时间段内不同规格的虚拟机数量进行预测,最后根据预测结果把虚拟机部署到物理服务器上,使得服务器的资源利用率最大化。 赛题中提到的输入文件中有5台虚拟机规格数量。但输出中有6台 也即预测的虚拟机的总数以及规格与输入文件中是不一致的。那么我想问的是那输入文件中的虚拟机的信息是拿来做什么的呢?应该是下文的“对给定预测时间段内不同规格的虚拟机数量”吧。 所以我觉得输入文件中的虚拟机规格名称应该是与输出文件的虚拟机规格名称是一致的,且虚拟机总数也要对应? 不知道原题是什么意思呢?
  • [交流吐槽] 关于赛题评测时,对非优化虚拟机的疑问
    在输入文件里,“参赛者只需要对输入的虚拟机规格进行预测即可”,但”只考虑优化单个维度资源利用率的情况,不需要考虑其他资源的碎片率,但要保证其他资源不能超分,否则得分为零”。服务器部署的时候,只考虑输入的虚拟机的规格,其他类型的虚拟机算作“其他资源的碎片率”吗?比如说Test里有70%的请求是 关于favor15的,但预测的虚拟机只有favor1、2的,然后服务器里都塞满了favor1、2类型的虚拟机,这样是否符合要求?
  • [干货分享] 【初赛赛题解读】10分钟读懂2018华为软件精英挑战赛初赛赛题
    本帖最后由 小原1号 于 2018-3-9 19:18 编辑11891 (智能预测与资源调度) ◄比赛问题定义► 背景 云平台为了满足不同租户的需求,提供了一种可随时自助获取、可弹性伸缩的云服务器,即弹性云服务器(Elastic Cloud Server,ECS)。为容纳更多的租户请求、并尽可能提高资源利用率、降低成本,自动化、智能化的资源调度管理系统非常关键。 ◄赛题基本描述►由于租户对ECS实例(虚拟机,VM)请求的行为具有一定规律,可以通过对历史ECS实例请求的分析,预测到未来一段时间的ECS实例请求,然后对预测的请求分配资源(如图1所示),这样可以找到一个接近最优的分配策略,实现资源最大化利用,同时也能参考预测的结果制定云数据中心的建设计划。 11892 ◄通用性描述► 物理服务器云数据中心通常由大规模的物理服务器集群所组成,通过虚拟化技术,可以对每个物理节点的资源(如CPU、内存、硬盘等)进行隔离,使得每台物理机上可以同时容纳多个虚拟机,这些虚拟机即共享该物理服务器上的所有资源。为了保证每台虚拟机的运行性能,通常物理资源不能“超分”,即每台物理服务器上所有虚拟机的虚拟资源总量不能超过其物理资源总量。这里假设物理服务器只有一种规格大小。 虚拟机规格云平台通常预先定义了各种类型虚拟机的规格(flavor),便于租户选择购买。例如,如果租户对计算要求低,而内存要求相对高,可以选择4个vCPU、16GB内存的配置。由于不考虑物理资源的“超分”,虚拟机的资源占用可与物理资源进行一比一的映射。当然,不同规格的虚拟机有不同的性能,价格也不一。 资源维度如上述,虚拟机正常工作需要多个维度的资源同时配合,如CPU、内存、硬盘、网络等等,每种资源都可能成为瓶颈,并且每种资源分配不合理都可能产生碎片。这里假设只需要考虑单个维度资源的使用,即尽可能最大化每台物理服务器的CPU或者内存(Mem)的利用率,但在考虑某个维度资源优化的同时,要保证其他资源不能超分。 历史请求数据租户在云平台上每申请一台虚拟机都会在后台的数据库产生一条数据,每条数据包含了虚拟机的ID、虚拟机的规格大小以及创建时间等。如果我们可以获取到云平台在过去一段时间的所有虚拟机请求数据,通过训练这些数据特征,可以预测下一个时间段可能到来的虚拟机请求分布。 预测时间段需要预测的开始时间、结束时间,如开始时间为2017-01-09 00:00:00、结束时间为2017-01-16 00:00:00,那么需要预测在该时间段内每种规格虚拟机的请求数量。 比赛程序内容请你设计一个程序能够精确预测未来某个时间段内的虚拟机的请求情况,并寻找最佳的资源分配方案:对输入的虚拟机历史请求数据进行建模分析以及训练,确定系数给出预测模型,然后对给定预测时间段内不同规格的虚拟机数量进行预测,最后根据预测结果把虚拟机部署到物理服务器上,使得服务器的资源利用率最大化。 ◄比赛胜负规则►比较参赛者程序输出的预测结果的精度以及部署的资源利用率的乘积,得分较大者胜出。如果出现得分相同的情况,则比较程序运行时间,时间短者胜出。若运行时间也相同,则根据提交时间先后来区分排名。如输出结果不满足约束条件,得分为零。(备注:资源利用率只需要考虑单个维度,如CPU或内存的利用率) ◄补充说明►1、物理服务器资源认为全部可用,不需要考虑系统占用、资源预留等问题。如一台物理服务器具有56个CPU,即认为这56个CPU可以全部分配给虚拟机使用;2、假设物理服务器数量充足,如果当前集群无法放置新的虚拟机,则可以开启新的物理服务器进行放置;3、无论预测结果好坏,预测出来的虚拟机需要全部放置,否则得分为零;4、不需要考虑虚拟机动态迁移的情况,即会根据虚拟机放置的静态结果进行资源利用率的评分;5、不考虑任何资源类型的超分情况,如果虚拟机资源总量超出物理服务器总资源,则得分为零;6、只考虑优化单个维度资源利用率的情况,不需要考虑其他资源的碎片率,但要保证其他资源不能超分,否则得分为零;7、不需要考虑虚拟机的生命周期,即不需考虑虚拟机被删除的情况;8、由于云平台通常使用网络共享存储,任何时候只需要考虑CPU和内存两种资源;9、只需要对测试用例输入文件给出的虚拟机规格进行预测并放置,未给出的虚拟机规格但在历史请求数据存在的可不作考虑;初赛要求预测的虚拟机规格数量最多为15种,分别为以下类型:flavor1 1 1024flavor2 1 2048flavor3 1 4096flavor4 2 2048flavor5 2 4096flavor6 2 8192flavor7 4 4096flavor8 4 8192flavor9 4 16384flavor10 8 8192flavor11 8 16384flavor12 8 32768flavor13 16 16384flavor14 16 32768flavor15 16 65536备注:flavor名称 CPU核数 内存大小(MB)10、需要预测的时间跨度为1~2个星期,且要预测的开始时间紧接着训练数据集的结束时间;11、节假日、双十一等特殊日期的历史数据,通常认为是异常点,这个需要参赛者自己做去噪处理,这也是一个考查的点,测试用例的训练数据集可能会出现异常点,但是测试数据集不会出现异常点;程序实现不能使用第三方库,编译环境也不支持第三方库,如有发现违规情况,直接取消比赛成绩。 ◄程序输入与输出► 输入文件格式程序输入为一个以空格分隔的文本文件,文件每行以换行符(ASCII’\n’即0x0a)为结尾。 文件格式数量虚拟机规格名称1 CPU核数 内存大小(MB)虚拟机规格名称2 CPU核数 内存大小(MB)…………(如上虚拟机规格信息若干行)(空行)需要优化的资源维度名称(CPU或内存)(空行)预测开始时间预测结束时间(时间跨度单位为:天)(文件结束)示例:56 128 1200(备注:物理服务器资源信息包含硬盘大小,实际调度可不考虑硬盘容量。CPU核数为不超过两位的整数,内存大小为不超过3位的整数,硬盘大小为不超过4位的整数。1GB=1024MB)3flavor5 2 4096flavor10 8 8192flavor2 1 2048(备注:虚拟机规格通常只包含CPU和内存两种信息,硬盘通常为可扩展存储,暂不做考虑。虚拟机规格名称最大不超过10位字符,CPU字段最大不超过2位字符,内存字段最大不超过6位字符。注意:测试用例输入的虚拟机规格通常只是历史数据的一部分,不是全部,参赛者只需要对输入的虚拟机规格进行预测即可,其他虚拟机规格无需考虑。)CPU(备注:若是MEM,则表示内存)2017-01-09 00:00:002017-01-16 00:00:00 //注:即7天的时间跨度(备注:日期与具体时间之间为空格符。需要预测的时间跨度为1~2个星期,且要预测的开始时间紧接着训练数据集的结束时间。)(文件结束) ◄训练数据集说明►用户历史请求数据为一个以制表’\t’分隔的文本文件,文件每行以换行符(ASCII’\n’即0x0a)为结尾。文件格式虚拟机ID 虚拟机规格名称 创建时间(年-月-日 时:分:秒)示例:23d7ac3a-1134-46d7-ac88-c3015e11db02 flavor8 2016-09-07 07:45:36(备注:时间中的日期与具体时间之间为空格符;虚拟机ID字段最大长度不超过36位字符,虚拟机规格名称最大不超过10位字符;另外,数据集的时间跨度会以整天为单位,参赛者只需要检测到开始时间的当天以及结束时间的当天即可。训练数据中每一条已经按照时间先后顺序排序。每个测试用例的训练数据集最大不超过10000条。) 输出文件格式程序输出为一个以空格分隔的文本文件,文件每行以换行符(ASCII’\n’即0x0a)为结尾。 文件格式预测的虚拟机总数虚拟机规格名称1 虚拟机个数虚拟机规格名称2 虚拟机个数…………(如上预测的不同规格虚拟机名称及数量若干行)(空行)所需物理服务器总数物理服务器1 虚拟机规格名称1 能放置该类型虚拟机个数 虚拟机规格名称2 能放置该类型虚拟机个数 ……物理服务器2 虚拟机规格名称1 能放置该类型虚拟机个数 虚拟机规格名称2 能放置该类型虚拟机个数 ………………(如上每台物理服务器的所能放置每种规格虚拟机数量若干行)(文件结束)(备注:物理服务器ID可用阿拉伯数字1、2、3、……表示即可)示例:6flavor5 3flavor10 2flavor15 1(备注:如果某种虚拟机规格的预测结果为零,即对应写0)41 flavor5 22 flavor5 1 flavor10 13 flavor15 14 flavor10 1(备注:每个字段之间用空格隔开即可。) ◄单个用例的评分机制► 用例的评分机制按下面流程对参赛者结果进行评分:Step1:对递交代码进行编译;Step2:运行用例,程序运行时间不得超过60s;Step3:对用例运行的输出结果进行合法性检验(详见题目描述);上述步骤有任何失败异常,则本用例得分为0;Step4:计算预测精度与资源利用率的乘积,结果越大,得分越高。 ◄最终得分和排名机制► 比赛平台会使用多个训练数据集,每个训练数据集又构造出多个测试用例判题,测试用例分为初级、中级、高级三个等级,每个等级的难度主要根据预测的时间长短以及预测的虚拟机规格数量两个指标来区分。每个等级各3个用例,共9个用例。参赛者对于每个测试用例都会得到一个百分制分数,使用加权总分(初级权重为0.2,中级权重为0.3,高级权重为0.5)作为该参赛者的最终得分。最终排名机制如下:Step1:最终得分为所有测试用例得分的加权,根据得分高低进行排名;Step2:最终得分相同的情况,比较所有测试用例的总运行时间,运行时间越短,排名越靠前;Step3: 如以上均相同的情况,则根据提交的先后顺序区分排名。 ◄特别说明► 在比赛初期(练习阶段),比赛平台只放出初级、中级的测试用例各2个,故加权后满分为100分(初级权重为0.2,中级权重为0.3,高级权重为0.5;下同);在正式比赛阶段,才会放出高级测试用例(具体发放时间会在网站公告通知),初、中、高级用例各3个,加权后满分为300分。练习阶段每支参赛队伍每天最多只能提交100次,正式比赛阶段每支参赛队伍每天最多只能提交5次。特别注意:最终成绩以最后一次提交的答案为准。请各位参赛者务必注意。 ◄运行环境► 开发语言支持:C/C++、Java 7/8、Python 2.7CPU:Intel(R) Xeon(R) CPU E5-2680 V4 @ 2.40GHz内存:2GCPU核数:单核编译器:gcc 4.8.4、java 1.8、python 2.7操作系统:Ubuntu 14.04.4 LTS 64位,内核版本 Linux version 4.4.0-31-genericSDK:为方便选手做题,分别提供c++(兼容c)、Java、Python的SDK包供参考(见DevCloud项目),详细描述信息请见SDK目录下的readme.txt。关注大赛微信公众号掌握大赛最新资讯11893 戳我报名: http://codecraft.devcloud.huaweicloud.com/ 赛题解读动画传送门: http://codecraft.devcloud.huaweicloud.com/home/detail
  • [交流吐槽] 关于输出文本和第三方库的问题
    请问一下: 1.numpy算第三方库么? 2.在我输出的文本中,是时间跨度(例如7天)中所有申请的虚拟机总和么?例如预测的第一天flavor1用了1台,第二天用了2台,后面没用,则最后输出flavor1是3台? 3.虚拟机之间应该是独立的吧?例如flavor1的申请数量不影响flavor2的申请数量?
  • [下午茶时光] 【Day 32--2018/3/8】生动解读:云计算的那些事儿(不懂技术一样看的懂)
    本帖最后由 KING 于 2018-3-8 15:16 编辑11840 【下午茶时光——业界热点陪你喝咖啡】 生动解读:云计算的那些事儿(不懂技术一样看的懂) 由于大多数人并非技术出身可能对于云计算只是知道一个大概,并不清楚,但是身在后互联网时代,对这些又不能只是一知半解,因此我用这篇文章来为大家深入浅出的讲解一下关于云计算的那些事儿。 一、云计算最初是实现资源管理的灵活性 我们首先来说云计算,云计算最初的目标是对资源的管理,管理的主要是计算资源,网络资源,存储资源三个方面。 11845 1、管数据中心就像配电脑 什么叫计算,网络,存储资源呢?就说你要买台笔记本电脑吧,你是不是要关心这台电脑什么样的CPU啊?多大的内存啊?这两个我们称为计算资源。这台电脑要能上网吧,需要有个网口可以插网线,或者有无线网卡可以连接我们家的路由器,您家也需要到运营商比如联通,移动,电信开通一个网络,比如100M的带宽,然后会有师傅弄一根网线到您家来,师傅可能会帮您将您的路由器和他们公司的网络连接配置好,这样您家的所有的电脑,手机,平板就都可以通过您的路由器上网了。这就是网络。您可能还会问硬盘多大啊?原来硬盘都很小,10G之类的,后来500G,1T,2T的硬盘也不新鲜了。(1T是1000G),这就是存储。对于一台电脑是这个样子的,对于一个数据中心也是同样的。想象你有一个非常非常大的机房,里面堆了很多的服务器,这些服务器也是有CPU,内存,硬盘的,也是通过类似路由器的设备上网的。这个时候的一个问题就是,运营数据中心的人是怎么把这些设备统一的管理起来的呢? 2、灵活就是想啥时要都有,想要多少都行 管理的目标就是要达到两个方面的灵活性。哪两个方面呢?比如有个人需要一台很小很小的电脑,只有一个CPU,1G内存,10G的硬盘,一兆的带宽,你能给他吗?像这种这么小规格的电脑,现在随便一个笔记本电脑都比这个配置强了,家里随便拉一个宽带都要100M。然而如果去一个云计算的平台上,他要想要这个资源的时候,只要一点就有了。所以说它就能达到两个方面灵活性。 第一个方面就是想什么时候要就什么时候要,比如需要的时候一点就出来了,这个叫做时间灵活性。 第二个方面就是想要多少呢就有多少,比如需要一个很小很小的电脑,可以满足,比如需要一个特别大的空间,以云盘为例,似乎云盘给每个人分配的空间动不动就就很大很大,随时上传随时有空间,永远用不完,这个叫做空间灵活性。 空间灵活性和时间灵活性,也即我们常说的云计算的弹性。为了解决这个弹性的问题,经历了漫长时间的发展。 3、物理设备不灵活 首先第一个阶段就是物理机,或者说物理设备时期。这个时期相当于客户需要一台电脑,我们就买一台放在数据中心里。物理设备当然是越来越牛,例如服务器,内存动不动就是百G内存,例如网络设备,一个端口的带宽就能有几十G甚至上百G,例如存储,在数据中心至少是PB级别的(一个P是1000个T,一个T是1000个G)。然而物理设备不能做到很好的灵活性。首先它不能够达到想什么时候要就什么时候要、比如买台服务器,哪怕买个电脑,都有采购的时间。突然用户告诉某个云厂商,说想要开台电脑,如果使用物理服务器,当时去采购啊就很难,如果说供应商啊关系一般,可能采购一个月,供应商关系好的话也需要一个星期。用户等了一个星期后,这时候电脑才到位,用户还要登录上去开始慢慢部署自己的应用,时间灵活性非常差。第二是空间灵活性也不行,例如上述的用户,要一个很小很小的电脑,现在哪还有这么小型号的电脑啊。不能为了满足用户只要一个G的内存是80G硬盘的,就去买一个这么小的机器。但是如果买一个大的呢,因为电脑大,就向用户多收钱,用户说他只用这么小的一点,如果让用户多付钱就很冤。 4、虚拟化灵活多了 有人就想办法了。第一个办法就是虚拟化。用户不是只要一个很小的电脑么?数据中心的物理设备都很强大,我可以从物理的CPU,内存,硬盘中虚拟出一小块来给客户,同时也可以虚拟出一小块来给其他客户,每个客户都只能看到自己虚的那一小块,其实每个客户用的是整个大的设备上其中的一小块。虚拟化的技术能使得不同的客户的电脑看起来是隔离的,我看着好像这块盘就是我的,你看这呢这块盘就是你的,实际情况可能我这个10G和您这个10G是落在同样一个很大很大的这个存储上的。而且如果事先物理设备都准备好,虚拟化软件虚拟出一个电脑是非常快的,基本上几分钟就能解决。所以在任何一个云上要创建一台电脑,一点几分钟就出来了,就是这个道理。这个空间灵活性和时间灵活性就基本解决了。 5、 虚拟世界的赚钱与情怀 在虚拟化阶段,最牛的公司是Vmware,是实现虚拟化技术比较早的一家公司,可以实现计算,网络,存储的虚拟化,这家公司很牛,性能也做得非常好,然后虚拟化软件卖的也非常好,赚了好多的钱,后来让EMC(世界五百强,存储厂商第一品牌)给收购了。但是这个世界上还是有很多有情怀的人的,尤其是程序员里面,有情怀的人喜欢做一件什么事情呢?开源。这个世界上很多软件都是有闭源就有开源,源就是源代码。就是说某个软件做的好,所有人都爱用,这个软件的代码呢,我封闭起来只有我公司知道,其他人不知道,如果其他人想用这个软件,就要付我钱,这就叫闭源。但是世界上总有一些大牛看不惯钱都让一家赚了去。大牛们觉得,这个技术你会我也会,你能开发出来,我也能,我开发出来就是不收钱,把代码拿出来分享给大家,全世界谁用都可以,所有的人都可以享受到好处,这个叫做开源。 比如最近蒂姆·伯纳斯·李就是个非常有情怀的人,2017年,他因“发明万维网、第一个浏览器和使万维网得以扩展的基本协议和算法”而获得2016年度的图灵奖。图灵奖就是计算机界的诺贝尔奖。然而他最令人敬佩的是,他将万维网,也就是我们常见的www的技术无偿贡献给全世界免费使用。我们现在在网上的所有行为都应该感谢他的功劳,如果他将这个技术拿来收钱,应该和比尔盖茨差不多有钱。例如在闭源的世界里有windows,大家用windows都得给微软付钱,开源的世界里面就出现了Linux。比尔盖茨靠windows,Office这些闭源的软件赚了很多钱,称为世界首富,就有大牛开发了另外一种操作系统Linux。很多人可能没有听说过Linux,很多后台的服务器上跑的程序都是Linux上的,比如大家享受双十一,支撑双十一抢购的系统,无论是淘宝,京东,考拉,都是跑在Linux上的。 再如有apple就有安卓。apple市值很高,但是苹果系统的代码我们是看不到的。于是就有大牛写了安卓手机操作系统。所以大家可以看到几乎所有的其他手机厂商,里面都装安卓系统,因为苹果系统不开源,而安卓系统大家都可以用。在虚拟化软件也一样,有了Vmware,这个软件非常非常的贵。那就有大牛写了两个开源的虚拟化软件,一个叫做Xen,一个叫做KVM,如果不做技术的,可以不用管这两个名字,但是后面还是会提到。 6、虚拟化的半自动和云计算的全自动 虚拟化软件似乎解决了灵活性问题,其实不全对。因为虚拟化软件一般创建一台虚拟的电脑,是需要人工指定这台虚拟电脑放在哪台物理机上的,可能还需要比较复杂的人工配置,所以使用Vmware的虚拟化软件,需要考一个很牛的证书,能拿到这个证书的人,薪资是相当的高,也可见复杂程度。所以仅仅凭虚拟化软件所能管理的物理机的集群规模都不是特别的大,一般在十几台,几十台,最多百台这么一个规模。这一方面会影响时间灵活性,虽然虚拟出一台电脑的时间很短,但是随着集群规模的扩大,人工配置的过程越来越复杂,越来越耗时。另一方面也影响空间灵活性,当用户数量多的时候,这点集群规模,还远达不到想要多少要多少的程度,很可能这点资源很快就用完了,还得去采购。所以随着集群的规模越来越大,基本都是千台起步,动辄上万台,甚至几十上百万台,如果去查一下BAT,包括网易,包括谷歌,亚马逊,服务器数目都大的吓人。这么多机器要靠人去选一个位置放这台虚拟化的电脑并做相应的配置,几乎是不可能的事情,还是需要机器去做这个事情。 人们发明了各种各样的算法来做这个事情,算法的名字叫做调度(Scheduler)。通俗一点的说,就是有一个调度中心,几千台机器都在一个池子里面,无论用户需要多少CPU,内存,硬盘的虚拟电脑,调度中心会自动在大池子里面找一个能够满足用户需求的地方,把虚拟电脑启动起来做好配置,用户就直接能用了。这个阶段,我们称为池化,或者云化,到了这个阶段,才可以称为云计算,在这之前都只能叫虚拟化。 7、云计算的私有与公有 云计算大致分两种,一个是私有云,一个是公有云,还有人把私有云和公有云连接起来称为混合云,我们暂且不说这个。私有云就是把虚拟化和云化的这套软件部署在别人的数据中心里面,使用私有云的用户往往很有钱,自己买地建机房,自己买服务器,然后让云厂商部署在自己这里,Vmware后来除了虚拟化,也推出了云计算的产品,并且在私有云市场赚的盆满钵满。所谓公有云就是虚拟化和云化软件部署在云厂商自己数据中心里面的,用户不需要很大的投入,只要注册一个账号,就能在一个网页上点一下创建一台虚拟电脑。亚马逊呢为什么要做公有云呢?我们知道亚马逊原来是国外比较大的一个电商,它做电商的时候也肯定会遇到类似双11的场景,在某一个时刻大家都冲上来买东西。当大家都冲上买东西的时候,就特别需要云的时间灵活性和空间灵活性。因为它不能时刻准备好所有的资源,那样太浪费了。但也不能什么都不准备,看着双十一这么多用户想买东西登不上去。所以需要双十一的时候,创建一大批虚拟电脑来支撑电商应用,过了双十一再把这些资源都释放掉去干别的。所以亚马逊是需要一个云平台的。而商用的虚拟化软件实在是太贵了,亚马逊总不能把自己在电商赚的钱全部给了虚拟化厂商吧。于是亚马逊基于开源的虚拟化技术,如上所述的Xen或者KVM,开发了一套自己的云化软件。 8、 IaaS, 资源层面的灵活性 随着OpenStack的技术越来越成熟,可以管理的规模也越来越大,并且可以有多个OpenStack集群部署多套,比如北京部署一套,杭州部署两套,广州部署一套,然后进行统一的管理。这样整个规模就更大了。在这个规模下,对于普通用户的感知来讲,基本能够做到想什么时候要就什么什么药,想要多少就要多少。还是拿云盘举例子,每个用户云盘都分配了5T甚至更大的空间,如果有1亿人,那加起来空间多大啊。其实背后的机制是这样的,分配你的空间,你可能只用了其中很少一点,比如说它分配给你了5个T,这么大的空间仅仅是你看到的,而不是真的就给你了,你其实只用了50个G,则真实给你的就是50个G,随着你文件的不断上传,分给你的空间会越来越多。当大家都上传,云平台发现快满了的时候(例如用了70%),会采购更多的服务器,扩充背后的资源,这个对用户是透明的,看不到的,从感觉上来讲,就实现了云计算的弹性。其实有点像银行,给储户的感觉是什么时候取钱都有,只要不同时挤兑,银行就不会垮。 这里做一个简单的总结,到了这个阶段,云计算基本上实现了时间灵活性和空间灵活性,实现了计算,网络,存储资源的弹性。计算,网络,存储我们常称为基础设施Infranstracture, 因而这个阶段的弹性称为资源层面的弹性,管理资源的云平台,我们称为基础设施服务,就是我们常听到的IaaS,Infranstracture As A Service。 二、 云计算不光管资源,也要管应用 11851 有了IaaS,实现了资源层面的弹性就够了吗?显然不是。还有应用层面的弹性。这里举个例子,比如说实现一个电商的应用,平时十台机器就够了,双十一需要一百台。你可能觉得很好办啊,有了IaaS,新创建九十台机器就可以了啊。但是90台机器创建出来是空的啊,电商应用并没有放上去啊,只能你公司的运维人员一台一台的弄,还是需要很长时间才能安装好的。虽然资源层面实现了弹性,但是没有应用层的弹性,依然灵活性是不够的。有没有方法解决这个问题呢?于是人们在IaaS平台之上又加了一层,用于管理资源以上的应用弹性的问题,这一层通常称为PaaS(Platform As A Service)。这一层往往比较难理解,其实大致分两部分,一部分我称为你自己的应用自动安装,一部分我称为通用的应用不用安装。 先来说第一部分,自己的应用自动安装。比如电商应用是你自己开发的,除了你自己,其他人是不知道怎么安装的,比如电商应用,安装的时候需要配置支付宝或者微信的账号,才能别人在你的电商上买东西的时候,付的钱是打到你的账户里面的,除了你,谁也不知道,所以安装的过程平台帮不了忙,但是能够帮你做的自动化,你需要做一些工作,将自己的配置信息融入到自动化的安装过程中方可。比如上面的例子,双十一新创建出来的90台机器是空的,如果能够提供一个工具,能够自动在这新的90台机器上将电商应用安装好,就能够实现应用层面的真正弹性。例如Puppet, Chef, Ansible, Cloud Foundary都可以干这件事情,最新的容器技术Docker能更好的干这件事情,不做技术的可以不用管这些词。 第二部分,通用的应用不用安装。所谓通用的应用,一般指一些复杂性比较高,但是大家都在用的,例如数据库。几乎所有的应用都会用数据库,但是数据库软件是标准的,虽然安装和维护比较复杂,但是无论谁安装都是一样。这样的应用可以变成标准的PaaS层的应用放在云平台的界面上。当用户需要一个数据库的时候,一点就出来了,用户就可以直接用了。有人问,既然谁安装都一个样,那我自己来好了,不需要花钱在云平台上买。当然不是,数据库是一个非常难的东西,光Oracle这家公司,靠数据库就能赚这么多钱。买Oracle也是要花很多很多钱的。然而大多数云平台会提供Mysql这样的开源数据库,又是开源,钱不需要花这么多了,但是维护这个数据库,却需要专门招一个很大的团队,如果这个数据库能够优化到能够支撑双十一,也不是一年两年能够搞定的。比如您是一个做单车的,当然没必要招一个非常大的数据库团队来干这件事情,成本太高了,应该交给云平台来做这件事情,专业的事情专业的人来自,云平台专门养了几百人维护这套系统,您只要专注于您的单车应用就可以了。 要么是自动部署,要么是不用部署,总的来说就是应用层你也要少操心,这就是PaaS层的重要作用。 11852 虽说脚本的方式能够解决自己的应用的部署问题,然而不同的环境千差万别,一个脚本往往在一个环境上运行正确,到另一个环境就不正确了。而容器是能更好的解决这个问题的。 11853 容器是 Container,Container另一个意思是集装箱,其实容器的思想就是要变成软件交付的集装箱。集装箱的特点,一是封装,二是标准。 11854 在没有集装箱的时代,假设将货物从 A运到 B,中间要经过三个码头、换三次船。每次都要将货物卸下船来,摆的七零八落,然后搬上船重新整齐摆好。因此在没有集装箱的时候,每次换船,船员们都要在岸上待几天才能走。 11855 有了集装箱以后,所有的货物都打包在一起了,并且集装箱的尺寸全部一致,所以每次换船的时候,一个箱子整体搬过去就行了,小时级别就能完成,船员再也不用上岸长时间耽搁了。这是集装箱“封装”、“标准”两大特点在生活中的应用。 11856 那么容器如何对应用打包呢?还是要学习集装箱,首先要有个封闭的环境,将货物封装起来,让货物之间互不干扰,互相隔离,这样装货卸货才方便。好在 Ubuntu中的LXC技术早就能做到这一点。 封闭的环境主要使用了两种技术,一种是看起来是隔离的技术,称为 Namespace,也即每个 Namespace中的应用看到的是不同的 IP地址、用户空间、程号等。另一种是用起来是隔离的技术,称为 Cgroups,也即明明整台机器有很多的 CPU、内存,而一个应用只能用其中的一部分。所谓的镜像,就是将你焊好集装箱的那一刻,将集装箱的状态保存下来,就像孙悟空说:“定”,集装箱里面就定在了那一刻,然后将这一刻的状态保存成一系列文件。这些文件的格式是标准的,谁看到这些文件都能还原当时定住的那个时刻。将镜像还原成运行时的过程(就是读取镜像文件,还原那个时刻的过程)就是容器运行的过程。 有了容器,使得 PaaS层对于用户自身应用的自动部署变得快速而优雅。 文章来自作者:web开发者mp(转载须注明)