前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每秒处理10万张图片 imgix用了哪些技术?

每秒处理10万张图片 imgix用了哪些技术?

作者头像
dys
发布2018-04-03 17:23:01
1.5K0
发布2018-04-03 17:23:01
举报
文章被收录于专栏:性能与架构性能与架构

imgix 提供了实时的图片处理和传输服务

典型需求示例

一个图片在不同设备中需要有不同的显示尺寸,如果网站自己处理会很麻烦,交给 imgix 则非常简单

通过一个 URL API,imgix就知道要对哪张图片做什么处理,实时的把处理后的图片输出出来

例如

https://xx.imgix.net/desk.jpg?w=600&exp=1

就是处理 desk.jpg 这张图片,把宽度缩放到600,曝光度的值设为1

所以,在不同场景需要不同的图片效果时,只需要设置相应的 URL 参数即可

技术挑战

imgix 的图片处理能力非常强,如缩放、裁剪、旋转、调整光泽度、色度二次抽样率、色彩量化 ......

所有效果都是通过 URL参数来设置,现在已经有80多个参数,通过组合,可以实现非常复杂的效果

图片处理高复杂度,和高速增长的访问量,对 imgix 的计算能力和快速响应能力提出了很大挑战

imgix 架构

基础设施

刚开始 imgx 构建在 Amazon 的弹性云计算 Ec2 之上,后来随着用户的增加,性能问题突显,如果基于云服务进行系统扩展,imgx 认为以后会更加痛苦,所以决定构建自己的处理中心

图片处理是 imgix 的根本,经过调研,最后采用了苹果的 Core Graphics 框架作为基础

Core Graphics 基于高级的绘制引擎,提供了轻量级的底层渲染能力,可以处理基于路径的绘制、图片转换、色彩管理、幕后渲染、图片数据管理 等等复杂的操作

苹果是图像处理的专家,技术采用了苹果的,那么硬件自然还是苹果的最适合,当时订购了大批 Mac Mini 作为图片处理服务器,在苹果开发了 Mac Pros(专业级图形工作站) 之后,imgix 又购买了 Mac Pros 作为新的图片处理节点

对于非图片处理的需求,使用Linux服务器

服务结构

imgix 的核心架构是由很多服务组成的,例如

图片源获取服务、图片源缓存服务、图片处理服务、负载均衡和分发服务、内容传输服务 ……

图片源获取和缓存服务是基于 MogileFS/Nginx/HAProxy,加上大量自定义开发实现的

负载均衡和分发服务是性能的关键,使用 C + LuaJIT框架(Just-In-Time Compiler for Lua) 开发,单机可以每秒处理4万请求,以前不是使用 LuaJIT,使用的是 Python,转到 LuaJIT 后,发现性能提升了20倍

图片处理服务是 imgix 打磨最多的服务,硬件使用苹果机器,技术使用 C/Objective-c/Core Graphics,最大程度的使用 GPU 来处理图片,性能优化的重点就是如何更高效的使用GPU buffer

图片处理服务的质量保证极度重要,所有相关的修改,都必须经过一整套的回归测试,保证没有引入任何问题

内容传输是最后一公里,使用 Varnish缓存服务器,和实时CDN服务Fastly,对于第一次获取的图片,没有经过缓存时,整个响应时间可以在700ms以下,并且是在高峰期

日志管理

日志是必须的,所有服务的接口必须集成日志服务,imgix 建造了一套全面的日志通道

使用 Heka 处理日志数据的聚合,然后转入 Riemann、Hosted Graphite、Google BigQuery 进行数据的分析统计

系统管理

Ansible 处理系统的配置管理

Consul 管理服务发现

Prometheus 用来监控

使用 StatusPage.io 向客户汇报当前系统状态

前端服务

前端服务为用户提供配置和管理功能,与系统的核心服务完全隔离,在 Docker 容器中进行开发、测试、部署

根据不同的任务需求,使用 Angular、Ember、Tornado 实现

CircleCI 用作内部服务的持续集成和部署

TravisCI 用作开源项目的集成和部署

imgix 还在努力提升系统的处理能力,现在每秒可以处理10万图片,接下来的目标是每秒100万

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-05-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档