精华内容
下载资源
问答
  • 第一个:在弱网传输的情况下,是怎么做到节约流量的? 由于Android接触的确实不多,这个问题自然没有很愉快的答上来。 我这样回答的:将一些数据进行压缩,例如传一个字符串,先将字符串转换成字符数组的形

    马上毕业了,在毕业之际,我辞掉了以前的实习工作,主要是工作内容不太感兴趣。最近在找工作,主要是找Java和Android方面的工作。自以为学得不错,但是面试屡屡受挫。先提一下问到的一些问题吧。

    第一个:在弱网传输的情况下,是怎么做到节约流量的?

    由于Android接触的确实不多,这个问题自然没有很愉快的答上来。

    我这样回答的:将一些数据进行压缩,例如传一个字符串,先将字符串转换成字符数组的形式,然后对这个字符数组进行压缩。然后就是对很多传输对象(一般都是JSON,XML这种方式太笨重了),提取公共的部分,然后只将不同的部分传输过去(我在想,怎么知道是相同的呢...)

    自认为回答的不太好,面试官也没有多说。

    面完试,在网上搜资料,加上自己的理解,整理了下。

    首先来说一下Android与服务器的数据交互方式吧。

    1、  Socket(TCP/UDP)

    2、  NIO,还有衍生的NIO框架例如Netty

    3、  WebService(特指Soap协议下用XML传输数据)

    4、  JSON(特质http协议下用基于Rest风格的传输方式)

    这里呢,说到数据压缩,我觉得应该是指将JSON进行先压缩再传输吧。

    解决数据过大的问题,最直观的方法就是压缩数据。服务器将需要传递的数据先进行压缩,再发送给Android客户端,Android客户端接收到压缩的数据,对其解压,得到压缩前的数据。

    下面这个图应该能说明具体情况。


    引用http://www.cnblogs.com/lykbk/archive/2013/08/15/3259045.html


    那么无非就是一些压缩算法的问题了。那怎么选择压缩算法咧?这里有一个压缩算法。

    引用 http://www.cnblogs.com/answer1991/archive/2012/05/07/2487052.html

    packagecom.chenjun.utils.compress;
     
    importjava.io.ByteArrayInputStream;
    importjava.io.ByteArrayOutputStream;
    importjava.io.InputStream;
    importjava.io.OutputStream;
    importjava.util.zip.GZIPInputStream;
    importjava.util.zip.GZIPOutputStream;
     
    publicclass Compress {
        private static final int BUFFER_LENGTH =400;
       
       
        //压缩字节最小长度,小于这个长度的字节数组不适合压缩,压缩完会更大
        public static final int BYTE_MIN_LENGTH =50;
       
       
        //字节数组是否压缩标志位
        public static final byteFLAG_GBK_STRING_UNCOMPRESSED_BYTEARRAY = 0;
        public static final byteFLAG_GBK_STRING_COMPRESSED_BYTEARRAY = 1;
        public static final byteFLAG_UTF8_STRING_COMPRESSED_BYTEARRAY = 2;
        public static final byteFLAG_NO_UPDATE_INFO = 3;
       
        /** 
         * 数据压缩 
         *  
         * @param is 
         * @param os 
         * @throws Exception 
         */ 
        public static void compress(InputStream is,OutputStream os)  
                throws Exception {  
     
            GZIPOutputStream gos = newGZIPOutputStream(os);  
     
            int count;  
            byte data[] = newbyte[BUFFER_LENGTH];  
            while ((count = is.read(data, 0,BUFFER_LENGTH)) != -1) {  
                gos.write(data, 0, count);  
            }  
     
            gos.finish();  
     
            gos.flush();  
            gos.close();  
        }  
       
       
        /** 
         * 数据解压缩 
         *  
         * @param is 
         * @param os 
         * @throws Exception 
         */ 
        public static void decompress(InputStreamis, OutputStream os)  
                throws Exception {  
     
            GZIPInputStream gis = newGZIPInputStream(is);  
     
            int count;  
            byte data[] = newbyte[BUFFER_LENGTH];  
            while ((count = gis.read(data, 0,BUFFER_LENGTH)) != -1) {  
                os.write(data, 0, count);  
            }  
     
            gis.close();  
        }
       
        /**
         * 数据压缩
         * 
         * @param data
         * @return
         * @throws Exception
         */ 
        public static byte[] byteCompress(byte[]data) throws Exception { 
            ByteArrayInputStream bais = newByteArrayInputStream(data); 
            ByteArrayOutputStream baos = newByteArrayOutputStream(); 
     
            // 压缩 
            compress(bais, baos); 
     
            byte[] output =baos.toByteArray(); 
     
            baos.flush(); 
            baos.close(); 
     
            bais.close(); 
     
            return output; 
        }
       
       
        /**
         * 数据解压缩
         * 
         * @param data
         * @return
         * @throws Exception
         */ 
        public static byte[] byteDecompress(byte[]data) throws Exception { 
            ByteArrayInputStream bais = newByteArrayInputStream(data); 
            ByteArrayOutputStream baos = newByteArrayOutputStream(); 
     
            // 解压缩 
     
            decompress(bais, baos); 
     
            data = baos.toByteArray(); 
     
            baos.flush(); 
            baos.close(); 
     
            bais.close(); 
     
            return data; 
        } 
    }
    
    笔者目前在找工作。邮箱myhirra@126.com。本广告长期有效.....玩笑话。

    展开全文
  • 不仅可以做到业务持续演进及全球化快速部署,在温冷数据存储资源,以及超额冗余计算资源成本节约方面也表现突出。 基于以上优势,虎牙大数据团队开始尝试使用弹性的云端资源来解决任务。经过多方对于产品性能以及...

     

    虎牙是中国第一家上市的游戏直播公司,旗下产品包括知名游戏直播平台虎牙直播、风靡东南亚和南美的游戏直播平台NimoTV等,产品覆盖PC、Web、移动三端。其中,游戏直播平台虎牙直播月活达1.5亿。

     

    如何借助于海量业务数据将全平台的优质内容与终端用户更智能、高效地连接起来,为公司运营和业务发展提供更为有效的数据能力支撑,是虎牙大数据团队(下面简称虎牙)过去和未来一直需要深入思考和探索的重要使命。为了达成以上愿景,虎牙选择与腾讯云EMR团队合作,接入大数据云端解决方案。

     

    本文将通过案例解读,带大家深入了解虎牙云端大数据实践。

     

    一、虎牙直播大数据分析场景

     

    1. 背景介绍

     

    虎牙是中国第一家上市的游戏直播公司,旗下产品包括知名游戏直播平台虎牙直播、风靡东南亚和南美的游戏直播平台NimoTV等,产品覆盖PC、Web、移动三端。其中,游戏直播平台虎牙直播月活达1.5亿

     

    2. 大数据场景介绍

     

    意识到数据对于业务的重要价值,虎牙很早就成立了近百人的专业大数据团队,这个团队拥有业内卓越的数据技术能力和业务理解力,以应对海量数据的高效存储计算、算法构建、业务价值洞察等领域化工作。

     

    经过多年的建设,该团队围绕数据在各个领域都取得了极为显著的进展,真正让数据成为优质内容与终端用户连接的催化剂。

     

     

    虎牙大数据团队基于开放Hadoop技术栈快速构建了稳健的全平台大数据平台,以支撑近百P规模的离线、实时流式数据的高效存储计算及数据科学探索;同时也在数据领域价值应用上进行精准内容推荐、经营分析、用户体验改善等数据应用价值探索。

     

    借助于全平台大数据平台,虎牙全公司各业务线可以快速、低成本地接入业务线数据,并可借助于该平台进行持续的技术演进。

     

    终端客户可以及时获取到与自身兴趣强相关的个性化优质内容(电竞、主机游戏、手机游戏、美食、二次元等),获取沉浸式的体验。

     

    作为内容供应方的主播也可以通过对自己直播数据的分析,调整演播风格及内容吸引更多用户关注。

     

    二、大数据分析的挑战

     

    基于大规模的数据增长以及业务的更高诉求,人们对数据工具提出了更为实用的要求。随着时间的流逝,传统的IDC自建大数据分析平台逐渐显现出两个问题:响应不够及时,成本高。

    1. 响应及时性挑战

     

    第一个挑战在突发任务响应的及时性上。例行任务按照时间维度可以分为月、周、天、小时、分钟,这些任务被均匀地分配到了大数据分析平台中,平台的负载也长期维持在合理(相对饱和)的范围内,很好地利用了昂贵的IDC硬件资源。

     

    但是随着大数据分析在业务价值挖掘上的作用愈加重要,突发及新增的分析任务变多了起来,此时,趋于饱和使用率的硬件资源便会成为瓶颈,从提交预算申领设备到新设备加入分析集群通常需要在两周才能完成,但这也往往导致结果延期交付。

     

    另一个随之而来的的问题是:预留更多的硬件设施也意味着性价比的降低。

     

    2. 成本挑战

     

    第二个挑战在冷数据的存储成本上。随着时间推移,越来越多的数据变成历史数据,占用硬件资源不变而使用率却在下降,如何降低冷数据的存储成本,同时在需要的时候又能快速分析,这也是一个比较有挑战的课题。

     

    三、云端大数据解决方案

     

    为应对以上大数据分析领域的挑战与瓶颈,虎牙大数据团队不断探索着更加贴合业务实际需求的解决方案。经过多年发展,沉淀出了直播领域丰富的大数据分析经验,虎牙大数据团队在逐步上云享受云平台所提供的灵活、开放、丰富的产品及服务的同时,也正与腾讯云大数据团队筹划共同推出面向行业的通用开源解决方案,实现了云厂商和互联网企业的大数据技术协同,共同推进大数据技术及行业方案的演进。

     

    云端大数据解决方案

     

    近期虎牙大数据团队接到的一个突发任务成为其与腾讯云大数据团队合作的契机。这个任务需要针对2019年全年数据进行分析,并要在周末两天内得到分析结果。

     

    按以往处理经验,在不影响原例行任务运行的前提下,需要对IDC集群进行扩容来满足突发任务的运行,很明显对此次时间紧的任务并不是最好的方案(申请新设备耗时久并且也造成长期成本浪费)。

     

    云端大数据解决方案具有灵活高效,成本节约的显著特点。不仅可以做到业务持续演进及全球化快速部署,在温冷数据存储资源,以及超额冗余计算资源成本节约方面也表现突出。

     

    基于以上优势,虎牙大数据团队开始尝试使用弹性的云端资源来解决任务。经过多方对于产品性能以及成本的考察,在与腾讯云大数据团队进行交流后,共同敲定了云端大数据解决方案:

     

    首先利用虎牙IDC环境与腾讯云的专线,将温冷数据导入到腾讯云COS中(优先导入了本次分析用到的2019年数据);然后通过腾讯云弹性MapReduce(EMR)产品创建的Hadoop集群分析已导入到COS中数据。

     

    分析任务最终顺利按时输出结果:20分钟内便利用EMR创建了上百个节点的分析集群,2小时内部署完成分析任务, 1天半后提前得出分析结果。

     

    分析任务结束后,便对EMR中的临时分析任务集群进行了销毁不再产生费用,COS作为温冷数据统一存储介质继续保留支持后续新的紧急任务(只需随时新建云端EMR Hadoop集群基于COS中数据进行分析)。

     

    四、大数据云端化带来的核心价值

     

     

    此次虎牙直播大数据解决方案的成功尝试,最直接体现了大数据分析云端化的两点价值:灵活高效以及成本节约。

     

    1. 灵活高效:分钟级集群创建

     

    得益于腾讯云EMR产品的存储与计算分离的特性,数据统一存放于COS中,EMR分析集群在任务需要时随时创建、在任务执行完毕后销毁集群,这就是云端的灵活能力;而在EMR集群创建过程中,上百节点规模集群的创建时间也仅需要10多分钟,这就是云端的高效能力。

     

    2. 成本节约:60%柔性成本节约

     

    云端大数据方案提供两层的成本节约:

     

    (1)将腾讯云对象存储COS作为温冷数据的统一存储媒介,替换掉昂贵的IDC设备,这是第一层直接的成本节约。

     

    (2)第二层的成本节约来源于EMR灵活架构的使用,EMR分析集群能直接分析COS中的数据,使得我们能够按需创建及销毁集群,不用长期维持冗余设备,非常契合突发任务的场景。

     

    结合EMR产品以往客户经验来看,会带来高达60%的柔性成本节约。

     

    五、云端数据架构的优势

     

    云厂商在云端提供了丰富的大数据产品和服务,涵盖从大数据基础设施、全链路数据工具链、领域数据价值应用在内的各个环节。

     

    基于云端的开放大数据技术和产品,企业用户可以快速构建迁移企业数据架构,甚至把已有大数据架构无缝整合到云端。

     

     

    得益于云端的海量存储/计算设施及云厂商在大数据开放技术领域的大规模投入,云端大数据产品和服务呈现出以下几个特点:

     

     

    云端大数据基础设施产品以其技术开放性、全链路覆盖、灵活性获得了互联网企业数据IT团队的一致认可,越来越多的企业也逐步意识到云厂商雄厚技术保障所带来的隐性价值认同。借助于云端大数据基础设施进行以数据驱动的业务创新、运营创新已成为新一代互联网企业的业界共识和主流趋势。

     

    虎牙与腾讯云EMR产品的合作很好地诠释了这一趋势,互利共赢,释放多元数据价值。腾讯云大数据团队将不断打磨产品,探索惠及更多行业场景的云端实践之路。

     

     

     关注“腾讯云大数据”公众号,技术交流、最新活动、服务专享一站Get~

    展开全文
  •  勤俭节约倡议书范文一 中心全体工作人员: 根据省、市文明办关于开展勤俭节约活动的有关精神,市行政服务中心决定在中心广泛开展勤俭节约活动,提倡勤俭办事,倡导勤俭节约风尚。特提出如下倡议: 行政服务中心...
  • 关于建设节约型校园的倡议书 节约型校园就是在高校的建设和发展过程中,...节约用水用电,做到用水不大开、不长流,用电不浪费、不过度,养成勤俭节约的生活习惯。 三、爱护公物,维护校园环境。文明使用公物,用心?..
  • 视频网站节约流量的小妙招

    千次阅读 2020-07-30 10:56:15
    只需要在后台合理设定码率适配限速的限速因子,就可以在保证用户体验的前提下,做到节省流量成本,防止不必要的带宽支出。 开启方式:【功能配置】-【成本控制】-【码率适配限速】,点击【管理】,添加规则 在配置...

    现在社会大家不是在看视频就是在准备去看视频的路上,那些花样百出的视频播放、关闭时你有注意过下方那个小小的进度条么?在进度条里其实隐藏着大大的密码,你知道是什么么?

    2020 年初,一场突如其来的疫情打破了我们以往正常的生活,也阻挡了大家出行的脚步。抗击疫情,最重要的防护措施就是减少外出,做好隔离,大家每天待在家里,活动范围仅限“卧室 - 客厅 - 卫生间”,因为无所事事出现了许多“宅家趣事”。

    比如某“土豪”网友在家里钓鱼,不知道远道而来的热带鱼会不会“愿者上钩” … …

    也有某网友很有“商业头脑”的自制套圈游戏,放在现在一定很适合摆摊 … …

    俗话说有耐心的人一定能成就一番大事,这不就有网友把整袋果干数了一遍,揭开了哪种干果最便宜了的秘密……

    广大网友集思广益创造了很多宅家趣事的同时,一定也有很多的小伙伴一朝得空疯狂“追剧、看视频”补齐剧情和娱乐进度。特别最近,各大综艺纷纷官宣首播时间,各视频平台也上线了新剧,仿佛后宫三千佳丽静待垂怜,让人乐不思蜀。

    时间有限,而选择却越来越多。为了用户能够在有限时间内看更多的内容,各视频平台推出了各种“花样节约时间成本”的功能,比如倍速、只看 TA 等等。对于一些剧情拖沓的电视,或者想快进又舍不得的人,这些功能简直好用到爆。

    那大家在用这些好用的功能疯狂追剧的同时有没有注意到,有时我们观看的网络视频,它的进度条不是一次性全部载入,而是一段一段的加载?同时肯定也有小伙伴困惑为什么看视频我们能快进,下载文件的时候就不可以?下面我们就来一一解密。

    视频缓冲技术

    在播放视频的时候,我们一般不需要等待全部加载完成后再开始观看,而是在我们打开视频的时候就可以点击观看,同时视频加载的进度条是随着播放持续加载。这里运用的就是视频缓冲技术。

    缓冲是指将数据预加载到内存保留区(或称为缓冲区)的过程。在流式传输视频或音频的情况下,缓冲可以让客户端(或浏览器)在开始播放视频或音乐之前,先下载一定数量的数据。这样当流媒体的下一部分在后台加载时,您可以观看存储在缓冲区中的数据。这种预加载过程可以确保视频在网络稳定的情况下不收干扰的保持流畅播放。

    使用这项技术后观看视频就可以免去等待时间,不用全部下载完才能观看,大大提高了观看体验。

    视频分段加载

    目前主流的大型视频网站(例如腾讯、优酷、爱奇艺、blibli)在进行视频点播时,都使用了视频分段加载和播放的技术。比如我们打开一个视频观看时,可以发现缓冲条在缓冲一段后停止,等待播放一部分后再继续缓冲,这个就是分段加载。

    分段是将一个完整的视频切割成若干小段视频。观看视频时,会跟随着播放的时间一阶段一阶段地去加载剩下的小段视频,并不需要一下全部加载完。如果观看者看到了视频的 50%,突然不想看了,没有使用分段技术可能会加载全部的视频。;有了分段,视频可能只需要加载 55%,剩下的45%在停止观看后就不会继续加载,这样就节省了 45% 的流量。这也是分段加载最大的好处,既减少带宽和流量的浪费。

    如果你在观看网络视频时打开了浏览器的开发者模式,你会看到除了开始请求视频返回的 200 状态码,下面还会有一串 206 状态码。

    这种响应是当客户端表明自己只需要目标 URL 上的部分资源时返回的。点开任意一个 206 请求,都可以通过 Content-Range 响应头辨认出该部分内容的请求。Content-Range 响应头用于表明具体加载了资源的哪一部分。例如下图的请求就是加载的 3375104-16313201 字节的数据。

    Content-Range: bytes 3375104-16313201/16313202

    3375104-16313201 是指分段的数据

    16313202 是指总文件大

    将视频缓冲和分段技术相结合,既能使视频在客户端播放流畅,又能有效的节省带宽和流量,同时因为缓冲在本地的是小段视频,也为盗取视频增加了难度,能够更好的保护视频版权。

    又拍云 CDN 之分段缓存

    随着网络速度的不断加快,视频播放的带宽需求也越来越大。经调研,一些视频网站的带宽成本仅次于影视剧版权费用,可见视频网站在带宽上成本之高昂。

    在针对视频网站的需求上,除去又拍云 CDN 的传统缓存技术,又拍云还开发了多种功能,为视频网站提供一些“节约流量的小妙招”。

    CDN 的传统缓存技术是将完整文件作为最基本缓存单位的,因为“点播和下载”加速业务中大文件(上百 M 甚至几十 G) 随处可见。如果客户端通过 HTTP 协议中的 Range 请求获取文件的部分内容,实现并发下载和断点续传。那么按照传统缓存特性,文件要么被完整缓存,要么不缓存。

    为了避免这个问题,又拍云 CDN 服务提供了分段缓存功能配置,该功能可以使缓存的基本单位变成块,并且可以在缓存块大小以及回源请求大小上采用不同粒度进行控制,从而实现按块缓存,按需回源,在缓存加速的同时避免拉取完整文件导致的源站带宽浪费。

    开启方式:【功能配置】-【缓存控制】-【分段缓存】,开启即可

    该功能默认开启,开启后可有效降低视频及大文件回源率,提升响应速度,同时还可以提高文件在 CDN 节点的缓存命中率。

    又拍云 CDN 之码率适配限速

    分段缓存是针对所有大文件都可以开启的功能,又拍云还针对视频文件推出了一种节约流量功能:码率适配限速。

    在边下边播的视频点播场景中,观看者很多情况下不会完整地观看一个视频,而是重复打开一个视频观看一段时间后就关闭,接着看下一个视频的动作。视频网站为了用户体验,往往会事先加载部分视频内容。也就是上面所说的“缓冲”。

    视频不限速的话,一打开视频,客户端就开始疯狂地加载视频。这样固然保证了终端用户的体验,但如果一旦用户还没看完视频就切换走,预下载视频的那部分流量就会被浪费,并产生大量的额外带宽成本。

    又拍云的码率适配限速功能会根据视频的观看进度控制预载的速度,。只需要在后台合理设定码率适配限速的限速因子,就可以在保证用户体验的前提下,做到节省流量成本,防止不必要的带宽支出。

    开启方式:【功能配置】-【成本控制】-【码率适配限速】,点击【管理】,添加规则

    在配置界面,依次需要进行资源路径、限速策略、限速因子的配置。

    资源路径:也即对请求的 URI 进行匹配,匹配成功则进入限速逻辑,支持 * 通配符,例如:/*.mp4

    限速策略:表示从某个时刻(下载时间,不是播放时间)开始执行限速策略,支持秒和分钟配置,默认推荐 3 秒;

    限速因子:用来控制 mp4 文件下载限速的因子,指定下载速度为视频码率的多少倍,推荐值为 1.1

    举例:

    假如某视频码率为 1337 Kbps,则视频的下载速度为 :

    (1337/8)*1.1 = 183 KB/s
    配置完所有配置项之后,点击左下角的【保存】按钮即可。
    又拍云的分段缓存和码率适配限速都可以有效的减少带宽成本,节约流量,减轻源站压力,两者并不冲突可以同时使用。

    除了上述功能,又拍云还提供了音视频转码、窄带高清、H265 自适应等针对流媒体多方面优化功能,在节省成本的同时保证并提升用户体验。

    5G 时代已然到来,大家在享受不断增快的网络速度的同时,视频网站的带宽成本也在持续不断的上涨。又拍云一直以来都在点播、直播等视频应用方面潜心钻研,目前已经取得了不俗的成果。我们结合点播、直播、短视频等业务中的用户场景,从编码技术、网络架构等角度出发,推出了各种“省带宽,压成本”的功能。赶快来试一试吧~

    展开全文
  • Netflix是如何利用内部Spot市场来节约成本的 原文:The Eternal Cost Savings of Netflix’s Internal Spot Market 翻译:雁惊寒 摘要:本文简单介绍了Netflix公司利用其内部的spot市场节省了92%的视频编码成本...

    原文The Eternal Cost Savings of Netflix’s Internal Spot Market
    翻译:雁惊寒

    摘要:本文简单介绍了Netflix公司利用其内部的spot市场节省了92%的视频编码成本。以下是译文。


    1.jpg

    Netflix利用其内部的spot市场节省了92%的视频编码成本。戴夫·哈恩在他《Netflix工程师生活中的一天》中讲述了这是如何做到的。 Netflix在2015年发表的两篇文章中谈到他们的spot市场:创建你自己的EC2 spot市场的第一部分第二部分

    这个想法很简单:

    • Netflix使用了三个AWS region,包括数十万个EC2实例,但很多实例在一天的不同时间段里并没有得到充分的利用。

    • 视频编码占到Netflix计算需求的70%,运行在超过1000个不同的自动缩放组中的30多万个CPU上。

    • 那么为什么不把那些未充分利用的保留实例集中起来创建Spot市场来进行视频的编码处理呢?

    在回答这个问题之前,我们首先来定义一下什么是Spot市场

    Spot实例允许你使用未充分利用起来的EC2实例,从而显著降低Amazon EC2的使用成本。Spot实例的小时价格由Amazon EC2设置,并根据Spot实例的使用时间长短和需求进行调整。Spot实例在系统容量可用并且你请求的每小时最高价格超过Spot价格才能运行。

    AWS在任何时候都有很多未充分利用起来的实例,Netflix也是如此。要理解为什么建立内部Spot市场对Netflix的帮助如此之大,我们首先要了解他们是如何对视频进行编码的。

    Netflix如何对视频进行编码

    戴夫解释了视频编码的过程:


    2.jpg

    • Netflix从制作公司和工作室获取视频。Netflix首先对源文件进行验证、查找丢失的帧、数字防伪、颜色变化以及其他问题。如果在这过程中发现问题,则视频将被拒绝。

    • 视频文件超级大,有几兆兆字节的大小。处理单个TB大小的视频文件是不合理的,因此,需要将视频分解成多个块,从而可以并行操作。

    • 块通过媒体管道进行传递,在这过程中有很多编码工作要做。 Netflix支持2200个设备和多种不同的编解码器,因此,视频需要是指定的几种文件格式。

    • 块编码完成后,需要再次进行验证,以确保没有引入新的问题。然后,块被组装成一个文件,并再次验证。

    • 媒体管道中涉及超过70种不同的软件。

    Netflix认为静态编码比动态编码能产生更高质量的视频观看体验,但同时也会产生很多的文件。

    《怪奇物语(Stranger Things)》第二季以8K分辨率进行拍摄,有九集。源文件有百万兆大小。每一季需要19万CPU小时进行编码。这相当于2965个m4.16xlarge实例运行一个小时。静态编码过程会创建9570个不同的视频、音频和文本文件。

    那么,你如何对视频进行编码呢?有两种方法。

    最容易想到的方法是设置一个只为媒体编码服务的静态实例场。这种方法的优点是你总能获取到所需的资源。

    但是你想一下,编码是一个突发的重负载的工作,这意味着场在很多时候都无法得到充分的利用。


    3.jpg

    一旦你想到这一点,利用Spot市场的想法定会油然而生。

    AWS已经有一个Spot市场了,为什么不使用它呢?为什么要从自己的保留实例中构建自己的Spot市场?

    Netflix有着基准容量非常庞大的保留实例。他们每天从这个池中自动扩展和回收一万多个实例。当Netflix池自动缩小时,就出现了未使用的容量。未使用的容量是对金钱的浪费,而Spot市场则是充分利用起所有未使用容量的好方法。

    所以,Netflix做了一件非常天才的事情,他们建立了自己的内部Spot市场来处理块的编码工作。工程工具团队构建了一个API,以分钟级实时显示未使用的容量。

    使用内部Spot市场与静态编码场能节省的成本有多少呢? 92%!

    一切都跟经济有关

    跟亚马逊一样,Netflix也创建了自己的内部Spot市场。云计算经济就是为了提高机器的利用率。AWS中的预留实例可以帮助节省大量的资金,从这些实例中尽可能地获取最大价值是非常有意义的。CPU如果有一微秒不在工作就是在浪费金钱。

    在过去,在AWS成为基础设施的吞噬者之前,我跟其他许多人一样,都在拼命思索AWS的创业想法。《构建超级可伸缩系统:Blade Runner满足环境云中的自主计算》一文中描述的内容正是当初我所追求的一些想法。

    我乐衷于创建一个二级市场,以便让开发者们可以转售他们实例中未使用的容量。虚拟机的利用率仍然非常低。有很多未使用的CPU、网络和内存的实例。所以,这似乎是一个不错的主意。这是一个云中云。

    它真正的优势是安全性。谁会在一台没有安全保证的机器上保存数据和运行代码呢?虽然我已经在FreeBSD上使用过Jails,但当初容器这个概念我还从来没有听说过。

    我的想法跟lambda一样,这就是为什么在《Google App Engine的调价对Web架构的将来预示着什么》一文中我对GAE转向更高粒度的系统感到失望的原因:

    我认为GAE会将实例映像这个概念完全抛弃,而将应用程序写入倒一个巨大的任务队列容器中。

    这个设想或者说愿景的基础是GAE最具创新性和深远影响力的发展和演变,即:任务队列。这是一个非常不错的功能,它可以将应用程序分解为异步流程。任务会被放到队列中,并在稍后的某个时间点执行。与GAE最初使用的整体和同步模型不同,现在的应用程序可以是完全异步的,并能在任何一台机器上运行。

    但问题是,任务队列仍然是基于映像的。具体的操作通过URL来指定,并且在运行时实例中终止。映像包含了应用程序执行的所有代码,它是一个整体。

    当某个Web客户端的URL被调用时,它将在单个映像中执行代码。这些大型映像必须由GAE来管理,这也是为什么Google需要向你收取更多费用的原因。他们需要一定的资源对其进行管理,需要有一定的时间进行初始化,而且即使应用程序没有做任何事情,运行的时候也需要内存。

    有人会问,为什么不能在一个任务队列工作项目中终止请求呢?那是因为异步编码模型存在的问题会导致这个单一的映像可能会被丢弃。是的,GAE仍然需要以某种奇异的方式来管理和分配这些代码库,这并不是一个简单的任务。这能解决资源粒度问题的匹配工作,不过他们反过来解决了另一个方向,即以映像作为分配单位,以实例作为执行单位。接下来我们将详细讨论颗粒度问题。

    所以,随着这个超酷的任务队列框架和编程模型的出现,我认为他们已经准备好宣布单一映像将会消失,实例将会消失,并且你使用计费模型作为替代品的代价将会更高。但是,我错了,再一次错了。

    这是一个量子力学方面的问题

    程序运行在一个抽象的机器上,它使用的量化的资源与底层物理机器的是不同,这一切推动了这场剧变的发生。一台服务器上只能有一定数量的内存和CPU。即使程序处于空闲状态,只要它在运行,就会使用到内存,而Google就必须支付实例使用的机器资源。仅对程序使用的资源进行计费,而不是对用于托管程序所使用的所有资源进行计费,产生了这两种计费模式之间不可持续、无利可图的价格摩擦。

    换句话说,程序被部署在拥有很大资源的虚拟机器上,但运行的时候只占用其中很小的一部分资源。更小的任务粒度使得任务能够在空闲时间运行,这就是我为什么认为任务队列模型优秀的原因。

    现在终于看到这些想法变成实现了,真是太好了!

    PS:在本周六的数据库线上峰会上,我们邀请了来自阿里巴巴的周正中老师给大家带来《PostgreSQL流计算案例》分享,欢迎大家报名参加:http://edu.csdn.net/huiyiCourse/series_detail/74
    这里写图片描述

    展开全文
  • 节约用水,保护水资源,这个是一个利国利民、利己利人,老生常谈的话题了。下面我们来看看其他国家的节水之道,他们公民自觉地节水意识。先来看看美国吧,美国是当今世界的唯一的超级大国,科技、经济、军事这些都是...
  • 给别人节约时间是一种美德1、电子邮件务必要写清楚主题! 最痛恨的一种人是,他给你发了一个电子邮件,连主题都没有,感觉就像一封垃圾邮件。如果事情是正在进行时,也就是说,如果他通知你了,说有一个重要的电子...
  • 与服务器同步数据时如何节约流量

    千次阅读 2011-03-02 10:14:00
     High-level steps:Create a ...
  • 《进击的小怪物》是如何运用CocoStudio实现节约时间成本的?CocoStudio作者张晓龙,亲自为您解析。 消除手游《进击的小怪物》12月5日已经登陆App Store,上线不到一周的时间,凭借清新可爱的画面和新颖独特的...
  • 做到这两点,图片这块的效率可以看到明显的多了很多,OOM神马的我就不说了,写这个希望大家对大家程序优化会有一些帮助,至于这个工具类有空的时候再写吧,网上也有不少,写这篇博客就还想看看能不能弄几个C币,最近...
  • 做到节约用水,珍惜水资源。下面是关于小学生节水的倡议书范文! 小学节约用水倡议书(一) 亲爱的老师,同学们: 你们好! 水是生命之源,因为有了水,一切才更滋润,才有了上善若水的感悟。长期以来,人们普遍认为...
  • 1主要研究、实施内容1.1主要研究及实验内容在公共浴室内安装射频卡淋浴器,能打破用水"大锅饭"的现状,实现一人一卡,凭卡取用,按照实际用水量自动完成收费,从而做到节约用水,减少排放量,保护水资源,减少能源浪费,是...
  • 拟化对于耗电以及制冷的开销做到节约,同时也节约了IT员工花费在管理服务器上的时间。虚拟化技术为我们提供了更有效的使用资金,还增加了面临挑战的灵 活性。” Threadgill提醒大家,在看到虚拟化技术节约的...
  • “文明用餐”活动倡议书范本 市民朋友们: 一粥一饭当思来之不易,一丝一缕... 二、做到节约用餐。 餐饮企业,学校、机关、单位食堂显眼位置摆设好人之善文明用餐 活动告示牌,在餐桌上摆放或在餐厅内悬挂体现活...
  • Apache(httpd)是一个成熟并且古老的Web服务,而Apache的发展和演变,一直在追求做到这一点,它试图不断减少服务占据的内存,以支持更大的并发量。以Apache的工作模式的演变为视角,我们一起来看看,它们是如何优化...
  • 做到以下几点

    2014-11-05 08:56:56
    14.11.05 1 不玩游戏 2 节约省钱 3 郁闷了取上班,缓解心情 4 对wife好 5 想办法多赚钱
  • 单例模式只能够创建一个对象,所以在资源方面可以做到节约内存资源 单例模式不需要频繁的销毁和创建,所以在效率方面有所提高 单例对象在整个系统里面只有一份,可以做到避免共享资源的重复占用 ...
  • 以及三方群体收益的博弈和制衡公立医院作为医疗服务行业的主体,医用卫生材料收入在医疗收入中的占比增加较快,如何在众多医疗卫材中选择性价比最高,做到节约资源成为当前的关注点。大数据的到来,使用计算机对各类...
  • 题库管理系统

    2014-07-14 20:28:27
    (2)试题数量较多时,单个录入的话会耗费教师很多时间,在试题录入时要做到节约教师时间的同时还保证试题正确录入进数据库中。 (3)组卷的策略要有普遍性。虽然自动组卷具有快捷性但是无法取代手工选取试题更有...
  • 做到十个习惯

    千次阅读 2012-11-23 10:19:10
    1.说到做到(诚实守信)诚实守信是人的立身之本,是全部道德的基础。一个言而无信的人,是不堪为伍的;一个言而无信的民族,是自甘堕落的。2.耐心倾听(尊重别人)尊重他人是最重要的文明习惯之一,也是吸纳一切...
  • 超级表格助力销售统计,给需要进行大量的数据收集、统计、整理以及共享的销售部门职员减轻工作压力,节约时间成本。 我们很荣幸威高集团能够使用并信赖超级表格,而且能够利用超级表格极强的自由度来创造新的使用...
  • vue中用img做背景图片,并做到自适应
  • 利用GPRS实现自动气象站的资料传输

    千次阅读 2005-11-28 10:50:00
    提 要 根据预报准确率和当地Gov群众对气象信息的要求,着重介绍了利用GPRS进行气象自动站的资料...同时又如何才能做到节约资料传输的通信费用?怎样才能充分利用先进探测手段采集来的大量气象数据信息?如何才能将自动气
  • 你可以顺手做到的20件环保小事

    千次阅读 2005-06-08 17:56:00
    Reduce——资源有限,节约每一份可用资源。你一定也抱怨过城市空气越来越糟吧?但你有没有想过,它和我们每个人的生活方式息息相关?譬如:随手关灯的道理人人都懂,却都仅仅认为它是为了节约电费。其实,每节约1度...
  • 由此可看出百度网盘针对一些不活跃用户进行存储容量限制,以节约资源。  今天给大家科普下,当初百度网盘是如何可以给用户2TB容量的网盘内存的!  假如我想要为每个用户提供1G的网络存储空间。如果服务器上有一...
  • 揭秘:运动相机是如何做到高清、防抖的     当我们透过摄像机小小的取景器,去看这个世界时,镜头就是我们的眼,映入眼中的是缤纷的生活。 记得小时候拍张照片都要去照相馆排队,几天后才能拿到照片。而如今...
  • 节约收集资料和总结学习干货的时间 ,以便你可以把更多的时间用于学习与实战。 因此,本次课程主要包含四个方面: 1.默认你是个小白,课程从 基础知识 讲起,课后提供相应的基础资料、软件安装包和安装说明等资料; ...
  • 第二,控制实例的产生,以达到节约资源的目的; 第三,控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程之间实现通信。 2. 尽量避免随意使用静态变量 要知道,当某个对象被定义为stataic...
  • 页边距:普通(日常使用建议用适中或窄,节约用纸,提交的论文报告什么才用普通);  纸张方向:横向;  纸张大小:A4;  ……  接着,在「视图」中,将「导航窗格」选上,方便不同的章节跳转导航。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,731
精华内容 18,292
关键字:

如何做到节约