看5名技术人员是如何支撑起整个系统的:Instagram网站的图片存储架构
2020-12-31 09:10:57 阅读(148) 评论(0)
Instagram是Facebook以10亿美元收购的著名手机照片共享应用程序,最近引起了无数人的关注。Instagram联合创始人MikeKrieger表示,他们花了8周时间建造了最初的Instagram,但现在的系统肯定已经不是以前的样子了。Instagram技术团队发表了一篇文章,介绍了Instagram背后的技术。最近,MikeKrieger在名为ScalingInstagram的演讲中介绍了更多细节,让人们知道五名技术人员是如何支持整个系统的。上传一张照片的过程如下:1。同步写入媒体数据库;2.如果照片上有地理位置标签,则异步将照片提交给Solr索引;3.将照片的ID添加到每个关注者的列表中,并将其保存在Redis中;4.显示Feed时,选择一小部分照片ID,在Memcached中查询;5.设计系统时,Instagram的设计理念简单,优化和监控所有内容,减轻运维负担;其核心原则是保持简单,不重复发明轮子,尽可能使用验证、稳定、可靠的技术。由于只有5名技术人员(其中只有2.5名后端工程师)精力有限,选择Amazon的云服务是个不错的选择。由于只有5名技术人员(其中只有2.5名后端工程师)精力有限,选择Amazon云服务是一个不错的选择。目前,他们使用了100多个EC2实例来提供各种服务。操作系统为Ubuntu11.04,以前的一些版本在高流量时表现不稳定。在负载平衡方面,他们使用Amazon的ElasticloadBalancer来实现负载平衡,后端运行了三个Nginx实例,SSL只在ELB上,减少了Nginx上的CPU负载。DNS和CDN分别由Amazon的Route53和CloudFront提供,所有照片都存储在S3上,目前有几个TB规模。AmazonHighigh操作用于处理请求的应用服务器-CPUExtra-在Largeinstance之上,因为他们的要求更多的是CPU密集型,所以这可以更好地平衡CPU和内存。开发框架为Django,WSGI服务器为Gunicorn,通过Fabric在所有机器上并行部署,一次只需几秒钟。PostgreSQL中存储用户信息、图片元数据、标签等大部分数据。在实践中,发现Amazon的网络磁盘系统在单位时间内找道能力不好,因此有必要将数据尽可能放入内存中。为了提高IO能力,创建了软RAID,使用MDADM工具进行RAID管理。vmtouch是管理内存中数据的小工具,值得推荐。PostgresQL设置为Master-Replica模式,流复制模式。使用EBS快照备份数据库。为了充分配合快照服务,使用XFS文件系统。PostgreSQL复制管理器采用repmgr这个小工具。Pgbouncer用于连接池管理。ChristophePetus的文章包含了很多PostgreSQL数据库的信息。Pgbouncer在连接数据库时建立应用程序连接池。目前,Instagram的数据根据用户ID进行分割,有些分割可能超过物理节点的容量上限,因此将数据分成多个逻辑分割,映射到少数物理节点;当一个节点被填充时,一些逻辑分割可以移动到其他节点,以减轻节点的压力。随着数据量的增加,他们将在未来进行垂直分区,DjangoDBRouter可以让一切轻松得多。Instagram还使用Redis存储复杂的对象(对象的大小有一定的限制),用于主Feed、活动Feed、会话系统等相关系统。因为Redis的所有数据都应该放在内存中,High也应该用在这里-MemoryQuadrupleExtra-LargeInstance,并对数据进行了分片。当Redis实例的要求达到4000/秒时,它逐渐成为瓶颈,因此Redis也从复制开始,复制的数据经常导出到磁盘上,并通过EBS快照备份。除了Redis,他们还使用Memcached作为缓存,目前运行了6个例子,应用服务器通过pylibmc和libmemcached连接。Amazon虽然提供Elasticcache服务,但服务价格并不便宜。相比之下,运行自己的Memcached实例更划算。Gearman用于异步任务队列。目前,处理各种任务的工作流程约为200个,如与Twitter和Facebook分享照片、通知用户新照片等。Pyapns已经处理了10亿推送通知,非常稳定。他们还开发了自己的基于Node的推送通知.jsnode2dm,用于向Android设备发送推送通知。在监控方面,Instagram使用Munin以图形化的方式呈现整个系统的运行状态,并通过Python-Munin定制一些插件来显示业务数据;Stated可以实时收集和总结网络保护过程;Dogslow将监控过程。一旦发现过程运行时间过长,将保存过程快照进行后续分析,例如,响应时间超过1.5秒的请求通常卡在Memcachedset()和get_many()方法。只要登上Sentry,Python的错误就可以实时获取错误信息。Highscalability还根据Instagram团队软件工程师MikeKrieger的演讲,整理了一些值得借鉴的经验,比如:1。找到你熟悉的技术和工具,在简单的使用场景中做一些尝试。2.不要用两个工具来处理同样的任务。3.提前准备降级方案,必要时减轻负荷。4.不要过度优化。或者希望事先知道网站应该扩展。对于一个初创的社交网站来说,没有扩展问题是无法解决的。5.如果一个方法不好,请尽快更换另一个方法
推荐阅读
- 好用的销售管理软件有哪些?
做销售肯定是需要用软件去管理客户的,因为,销售最多的就是客户,每天要联系很多客户,要是没客户的话是赚不到钱的,所以,客户是非常重要的,那么,关销售系统软件都有什么呢? 1、金信CRMapp 是一款优质高效的手机端销售业绩管理…查看详情
- 核电站的工作原理
核电站是利用核反应来产生电能的电站,它利用核能进行高效能的能量转换,产生电力供应民用或工业使用。 核电站的工作原理是通过核裂变或核聚变的方式,将锅炉内的热能转化为蒸汽,再将蒸汽驱动涡轮机转动,从而带动发电机产生电能。以下是核电站的工作…查看详情
- 国内主流ERP公司有哪些
不少企业在成长阶段,都面临着是否需要把ERP软件升级到更完善、更全面的决策。一方面,随着企业规模的不断扩大,原本的ERP软件已经不能满足企业发展的需求;另一方面,市面上的ERP软件众多,让人眼花缭乱不知道怎么选择。其实,选择ERP软件也是在…查看详情
- 这些棘手问题,B2C跨境电商亟待解决
虽然跨境业务发展日益成熟,但仍然存在很多棘手问题需要解决。主要表现在三个方面: 1、通关成本:实体货物在不同关境流通时会产生一定的手续费和时间成本,同时各国海关对不同货物在规定上的理解和执行不一致,会出现很多问题,严重时甚至会造成货物滞留或…查看详情
- 好玩的网络游戏有哪些 大型网络游戏排行榜
对于网络游戏,很多人也都熟悉网络游戏所包含的游戏也是特别多的,这种游戏需要你下载下来之后才可以玩耍它占用的内存空间非常大,毕竟它属于网络游戏,而且里面的各种各样的情景也是在内存的,那么大型网络游戏排行榜有什么呢?大型网络游戏排行榜 …查看详情
- 怎么查注册商标能不能用
怎么查注册商标能不能用?现在越来越多的企业或个人都会注册代表自己产品的商标,这样可以提升自己的品牌知名度。所以商标在提升我们品牌影响力中是不可或缺的一部分,商标在在企业发展中扮演这么重要的角色,那么企业商标注册后怎么查询是否已注册成功?…查看详情
- 免费的酒吧收银软件 酒吧收银管理系统
科技在发展,酒吧管理也发展到了智能的时代,许多酒吧管理者和经营者都开始借助酒吧管理系统来管理门店、员工等,市面上的酒吧管理软件千千万,如何选择一套适合门店的呢,今天万商云集小编就来总结一下合适的收银系统具备哪些特质。 排在第一位的是系…查看详情
- 经典永不过时的网页设计三种布局
企业在进行网站设计的时候应该有注重网页的设计风格,因为现在网页设计风格有很多,应该要根据自己的行业发展以及实际需求来选择,这样才能够打造出更好的网站效果。其实网站在进行设计的时候也有三种布局,是经典永不过时的。那么经典永不过时的…查看详情
- ascii码是几位码
一个字符的标准ascii码是多少字节?一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。 奇校验规定:正确的代码一个字…查看详情
- 十四五开局之年,中小企业机遇何在?
2021年的夏天即将到来,国内经济也持续向暖,“十四五”大幕亦缓缓拉开,中小企业的机遇将在何处展开?又如何紧扣时代脉搏,与时俱进?让客户生意更容易,是万商云集的使命,了解政策,把握趋势,造就更成功的企业;5月8日19:00,万商云集携手良泽…查看详情
- 上市公司减税降费的作用是什么?
减税降费对企业的意义,用高中政治经济生活的知识怎么回答?意义: 1.对企业实施税收减免,可以为企业转型升级添加动力。 对于企业,尤其是处于经营难关的企业而言,意义非常大,它既可以降低小微企业的生产经营成本,也可以让小微企业有更多的资金投…查看详情
- 2023年如何注销公司?
注销公司流程主要有哪些步骤? 注销公司流程主要有下列步骤: 1、成立清算组; 2、通知并公告债权人; 3、清理公司财产; 4、制定清算方案,报股东会或者人民法院确认; 5、清偿债务,按照股东的出资比例分配剩余价值; 6、依…查看详情
- 专利权入股后能不能撤股?
对作为出资的非货币财产应当评估作价,核实财产,不得高估或者低估作价。下面万商云集小编带大家来了解下专利权入股后能不能撤股的相关内容。 一、专利权入股后能不能撤股 依据我国相关法律的规定,股东权专利权出资入股的,是不能抽逃出资的,但股东可…查看详情
- mysql使用入门教程
MySQL该怎么学好啊?有没有好的入门级的学习资料啊?我建议直接学习mysql,因为虽然sql语句大多都是通用的,但是还是有差别的,直接学习mysql可以有很好的针对性,目的性更强,学好之后再进行扩展:再进阶到oracel,sqlserve…查看详情
- 抠图软件怎么选呢?这几款值得试一试
通过使用抠图软件,可以让本来存在瑕疵的照片变得更加的完美,目前市场中所存在的抠图软件功能有差异,同时也会有良秀不齐的问题,在选择的时候还是要慎重的,那么抠图软件怎么选呢?下面这几个款大家不妨试一试吧。 1、光影魔术手 光…查看详情
猜你喜欢
最新文章

扫码二维码
立即领取《千元实战营销秘籍》
还可免费试用营销管理系统
*如有疑问,请随时拨打免费咨询热线:400-0033-166
服务时间:8:30-18:00
软件企业
认定号:川RQ-2018-0216
高新技术企业
认定号:GR201951001121

关注微信公众号
和10万中小企业共同成长

扫码下载APP
享全方位服务一触即达
Copyright © 2004-2022 万商云集(成都)科技股份有限公司 版权所有
蜀ICP备12001963号-2
川公网安备 51010402000322号

快速找产品
找一找哪款产品适合您?
咨询热线:400-0033-166
-


-
电话沟通
在线咨询
获取方案
下载APP
官方微信
扫码下载APP
全方位服务一触即达
关注万商云集
和10万中小企共成长
TOP

企业首选的数字选用平台






