Instagram揭秘:牛逼的图片服务都在用哪些装备和技术?

2024-02-27 13:58

本文主要是介绍Instagram揭秘:牛逼的图片服务都在用哪些装备和技术?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相信很多喜欢拍照的iOS用户早就对Instagram爱不释手了,而Instagram也是在昨天发布了Android版本,和一些拥有更多特效、边框、灯光效果的应用相比,Instagram具有更丰富的社交性、更强的用户粘度以及更快的图片处理速度。每天Instagram都要接受大量来自iOS、Android客户端的各种请求、请求、请求……很多同行十分好奇Instagram是用什么方式以及工具来应对每天大量数据的。Instagram通过技术博客向外界揭示了这个世界一流图片服务商所使用的装备和技术,供开发者进行参考。

图片来源:Instagram

Instagram团队称,他们选择系统的首要原则有三条:

  1. 保持简单
  2. 利用现成工具,不用从新开始
  3. 使用已经被普遍认可的稳定的技术

底层

主机选择Amazon EC2,操作系统选用Ubuntu Natty,原因是Instagram团队发现相比之前版本,Natty在高流量环境下相对更加稳定;load balancing设备使用Amazon’s Elastic Load Balancer,DNS选择Amazon’s Route53;以Amazon High-CPU Extra-Large设备作为应用服务器,运行Django来处理应用的请求;使用Gunicorn作为WSGI server,因为发现Gunicorn配置起来更容易;使用Fabric来部署代码。

图片来源:Ubuntu

数据库

采用PostgreSQL数据库,因为Amazon's network disk system (EBS)无法提供足够的每秒磁盘寻道,所以他们软件磁盘阵列(RAID)中通过mdadm设置EBS驱动器。存储器中的数据处理使用vmtouch,PostgreSQL实例全部通过Streaming Replication来设置,使用的工具是repmgr;用EBS snapshotting来定期备份系统,使用的工具是ec2-consistent-snapshot;数据库的文件系统使用XFS,使用快照的时候可以冻结/解冻RAID数组;用Pgbouncer将连接汇总到PostgreSQL;图片数据库采用Amazon S3,CDN选用Amazon CloudFront;采用Redis来作为基于内存亦可持久化的日志型、Key-Value数据库。

图片来源:codingthewheel

推送与监视

任务请求使用Gearman,而推送通知则使用pyapns;用Munin图形显示整个系统各种指标;用Pingdom作为外部监督服务;用PagerDuty处理通知和意外;用Sentry进行Python error报告。

总结起来就是:用已被普遍认可的技术来降低维护成本,将精力尽量花费在自己的核心业务上,所谓“好钢用在刀刃上”。


本文为CSDN原创文章,未经允许不得转载。如需转载请联系market@csdn.net。

这篇关于Instagram揭秘:牛逼的图片服务都在用哪些装备和技术?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/752632

相关文章

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

使用Python实现图片和base64转换工具

《使用Python实现图片和base64转换工具》这篇文章主要为大家详细介绍了如何使用Python中的base64模块编写一个工具,可以实现图片和Base64编码之间的转换,感兴趣的小伙伴可以了解下... 简介使用python的base64模块来实现图片和Base64编码之间的转换。可以将图片转换为Bas

css实现图片旋转功能

《css实现图片旋转功能》:本文主要介绍了四种CSS变换效果:图片旋转90度、水平翻转、垂直翻转,并附带了相应的代码示例,详细内容请阅读本文,希望能对你有所帮助... 一 css实现图片旋转90度.icon{ -moz-transform:rotate(-90deg); -webkit-transfo

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

Java中使用Java Mail实现邮件服务功能示例

《Java中使用JavaMail实现邮件服务功能示例》:本文主要介绍Java中使用JavaMail实现邮件服务功能的相关资料,文章还提供了一个发送邮件的示例代码,包括创建参数类、邮件类和执行结... 目录前言一、历史背景二编程、pom依赖三、API说明(一)Session (会话)(二)Message编程客

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更