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

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Python实现PDF按页分割的技术指南

《Python实现PDF按页分割的技术指南》PDF文件处理是日常工作中的常见需求,特别是当我们需要将大型PDF文档拆分为多个部分时,下面我们就来看看如何使用Python创建一个灵活的PDF分割工具吧... 目录需求分析技术方案工具选择安装依赖完整代码实现使用说明基本用法示例命令输出示例技术亮点实际应用场景扩

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议