当前位置: 北京软件外包公司 » 资讯中心 » 新闻动态 » 北京软件外包Twitter如何做到每秒钟处理3000张图片上传

北京软件外包Twitter如何做到每秒钟处理3000张图片上传

发表于:2016-05-31 13:54 来源:北京软件开发公司宜天信达 点击:

  北京软件外包Twitter如何做到每秒钟处理3000张图片上传,今天的Twitter每秒钟能够创建并保存3000张(200GB)图片。甚至早在2015年,Twitter就通过改进媒体存储策略节约了6百万美元。以前并不是这样的。Twitter在2012年主要以提供文字信息为主,当时的用户也很少发布各种炫酷的动态图片。到现在2016年,Twitter开始提供富媒体功能。这样的转变是通过Twitter自行开发的全新媒体平台(Media Platform)实现的,这个平台可以支持照片预览、多张照片发送、动态Gif图片、Vine视频,以及内嵌视频等功能。Twitter软件开发工程师Henna Kermani在Mobile @Scale London活动中,通过一场名为每秒3000张图片的有趣演讲介绍了Twitter的媒体平台。演讲主要侧重于图像处理方面,但她讲的大部分细节也同样适用于其他形式的媒体。演讲中一些比较有趣的重点包括:因陋就简的处理方法注定将会失败。在原本不支持的情况下,不假思索通过简单的手段支持上传带图片的推文,这样的做法会造成某种形式的“套牢”。并且这种方式缺乏缩放能力,尤其是在网络状况不佳的时候,这使得Twitter很难增加新的功能。

  去耦合。通过将推文与所包含的媒体去耦合,Twitter可以分别针对每个途径进行优化,在运营方面获得更大程度的灵活性。

  移动句柄,而非存储块。不要在您的系统内部移动过大的数据块。这种做法将消耗大量带宽,会导致所有需要访问这些数据的服务遭遇性能问题。更好的方法是单独存储数据,并通过句柄的方式进行引用。

  使用分块可续传方式上传可大幅降低媒体文件的上传失败率。

  持续的实验和研究。Twitter研究发现,对于图片的不同变体(例如缩略图、小图、大图等),20天的存活时间(Time to live, TTL)是最佳甜区,这个值可以在存储和计算之间实现良好的平衡。图片内容发布20天之后的访问概率会大幅降低,因此可以删除图片的各种变体,这样的做法每天可以帮助Twitter节约4TB数据存储空间,并将需要的计算服务器数量减少几乎一半,同时每年可节约数百万美元。

  按需。老图片的不同变体可以放心删除,并在需要时重建,而无须预先创建好。这种按需执行服务的做法可改善灵活性,让您更清楚任务的执行方式,并对其进行集中的控制。

  渐显式JPEG(Progressive JPEG)作为一种标准图片格式无疑是真正的赢家。这种格式在前端和后端都有良好的支持,在速度不快的网络中也能提供不错的表现。

  Twitter开发富媒体功能的过程中还发生了一些很棒的故事,一起来学学他们是如何做到的...旧途 - 2012年的Twitter写入路径用户在某个应用中撰写了一条推文,并可能在推文中附加了一张图片。客户端将该推文发送至一个单体端点(Monolithic endpoint)。图片会作为附带内容与推文的所有其他元数据一起上传,并传递至这一过程涉及到的每个服务。

  在原本的设计下,这个端点是造成很多问题的根源。