导读:最近在 Yahoo 官方的工程博客上,透露了最新的图片及视频底层平台 Tripod,雅虎如何在如此大的规模上对多媒体数据进行处理,存储和检索,对很多类似服务都有借鉴意义。Tripod的设计和实现也基于微服务这一流行架构理念,本文也对微服务系统常见的问题做了阐述。本文由高可用架构翻译。 Flickr 传统的架构 高可用小编根据早些年的资料,整理其架构大致如下。 技术平台
Flickr 的传统架构用现在的眼光看起来可能有些老旧,但在社交网络出来之前可是学习互联网架构的经典,高可用小编当年也是拿着其架构图参阅领会,更多传统的 Flickr 架构可以参阅 [4]。 然而到了社交网络时代,已经很长时间没有看到 Flickr 的架构更新说明了,上周 Yahoo 的工程博客上发表了其新的 Flickr 架构,我们来看看满足当前时代需要的新的图片及多媒体架构究竟是如何重新设计的。 Flickr 新的 Tripod 架构 今天,雅虎邮件引入了一个功能,允许自动同步手机照片到雅虎邮件,以便当您从写电子邮件的时候照片随时可用。这一功能背后的关键技术是新的图片和视频平台称为“Tripod”,这是出自 Flickr 团队的创新和能力。 Tripod 三大服务顾名思义,Tripod 提供三大服务:
这三种服务的组合使得 Tripod 成为新一代图片服务平台。还有一个管理控制台,用于配置应用程序与Tripod的集成,以及身份服务,用于身份验证和授权。 The Pixel ServiceFlickr 已经具有高可扩展性的照片上传和转码的流水线。在大规模处理海量照片和视频的情况下,Flickr 的移动和API团队调优相关技术(如断点上传和防重机制)以创建高品质的照片上传体验。Flickr 解决了优化存储而不影响照片质量的挑战,并添加了动态调整大小以支持更多样化的客户端照片布局的功能。
The Enrichment Service在 2013 年,Flickr 取得了令人兴奋的飞跃。雅虎收购了两家计算机视觉技术公司 IQ Engines 和 LookFlow,并将这些团队转到 Flickr。使用他们的图像识别算法,我们增强了 Flickr 搜索和 Flickr Magic View。 The Aggregation ServiceAggregation 服务允许应用程序(如Yahoo Mail)根据任何条件查找媒体。例如,它可以返回属于特定应用中的特定人的所有照片(例如,2015年3月1日之前的旧金山) APIs and SDKs每个服务表示为一组 API。我们升级了 API 技术栈,从 PHP 切换到 Spring MVC,并利用最新的 Spring 特性,例如 Spring Data,Spring Boot 和 Spring Security 以及 OAuth 2.0。使用 Swagger (http://swagger.io/) 定义和记录 Tripod 的 API。每个服务都是从独立的 Git 存储库独立地开发和部署的,具有独立的构建生命周期和微服务容器。 Swagger Editor 可以根据 Yahoo 开发人员的需要,轻松自动生成各种语言的 SDK。iOS 和 Android SDK 是移动开发最常用的,JS SDK 是 Web 常用的,通过 SDK 可以实现移动及 Web 端轻松与 Tripod 集成。 Buckets and API KeysTripod 数据模型与 Flickr 数据模型不尽相同。Tripod 应用程序,存储桶和 API 加入了多租户的概念,具有强大的访问控制能力。应用程序是 Tripod 服务的使用方,如 Yahoo Mail;存储桶是应用程序存储的逻辑容器,应用程序中的媒体(media)受到存储桶设置(例如压缩率,容量,TTL 生存时间以及其他选项)的影响。 除了 Tripod 的通用属性,存储桶还可以由应用程序开发人员自定义组织属性。由 API key 控制对存储桶的读取/写入权限,生成的 OAuth 令牌对存储桶进行用户认证访问。 开发人员使用 Tripod 控制台:
与 Flickr API 的另一个不同的是 Tripod 可以处理非用户生成的内容(UGC)的媒体。这是许多 Yahoo 应用程序所要求的。 架构和实现从单一架构到微服务架构面临很大挑战。特别是我们需要在服务之间找到合适的通信方式,其核心是我们的 Pulsar [1] 事件总线,我们通过总线发送 Avro 消息。这让每个 Tripod 团队迅速开发,而不会引入不兼容的更改。 Q |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|