网易首页 > 网易号 > 正文 申请入驻

图解系统设计之Instagram

0
分享至

点击下方“JavaEdge”,选择“设为星标”

第一时间关注技术干货!


免责声明~ 任何文章不要过度深思! 万事万物都经不起审视,因为世上没有同样的成长环境,也没有同样的认知水平,更「没有适用于所有人的解决方案」; 不要急着评判文章列出的观点,只需代入其中,适度审视一番自己即可,能「跳脱出来从外人的角度看看现在的自己处在什么样的阶段」才不为俗人。 怎么想、怎么做,全在乎自己「不断实践中寻找适合自己的大道」

0 简介

Instagram,分享带有字幕的照片和视频的免费社交应用。帖子可使用标签和地理标签进行组织,使其可搜索。若标记,帖子对粉丝和公众可见。用户可将配置文件设置为私人以限制对粉丝的访问。

1 需求 1.1 功能性

  • 发布照片和视频:用户可发布照片和视频

  • 关注/取关用户:用户可关注/取关其他用户

  • 点赞或点踩帖子:用户可以对他们关注的帐户的帖子进行点赞或不喜欢

  • 搜索照片和视频:用户可根据字幕和位置搜索照片和视频

  • 生成新闻馈送:用户可查看新闻馈送。包含他们关注的所有用户的照片和视频(按时间顺序)。用户还可以在其新闻馈送中查看建议的和推广的照片

1.2 非功能性
  • 可扩展性:该系统在计算资源和存储方面应具有扩展性,以处理数百万用户

  • 延迟:生成新闻馈送的延迟应该很低

  • 可用性:系统应高度可用

  • 持久性:任何上传的内容(照片和视频)都不能丢

  • 一致性:可在一致性稍微妥协。若内容(照片或视频)需一段时间才能在远程区域的关注者信息流中显示,也可接受

  • 可靠性:系统须能容忍硬件、软件故障

2 存储模式 2.1 实体
  • 用户:存储所有与用户相关的数据,如ID、姓名、电子邮件、简介、位置、帐户创建日期、上次登录时间等。

  • 关注者:存储用户关系。Instagram有个单向关系,如若用户 A 接受用户 B 的关注请求,则用户 B 可查看用户 A 的帖子,但反之不成立

  • 照片:存储所有与照片相关的信息,如ID、位置、字幕、创建时间等。还需保留用户 ID 以确定哪张照片属于哪个用户。用户 ID 是来自用户表的外键

  • 视频:存储所有与视频相关的信息,如ID、位置、字幕、创建时间等。还需保留用户 ID 以确定哪个视频属于哪个用户。用户 ID 来自用户表的外键

2.2 Instagram的数据模型2.3 SQL or NoSQL?

我们的数据本质是关系型,并且我们需要数据的顺序(帖子应按时间顺序出现)和即使在故障的情况下也不会丢失数据(数据持久性)。此外,我们的例子中,我们将从关系查询中受益,如根据用户 ID 获取关注者或图像。因此,基于 SQL 的数据库满足这些要求。

因此,选择关系数据库,并在该数据库存储相关数据。

负载均衡器:平衡来自终端用户的请求负载

  • 应用服务器:向终端用户托管我们的服务

  • 关系数据库:存储我们的数据

  • Blob 存储:存储用户上传的照片和视频

  • 4 详细设计 4.1 上传、查看和搜索照片

    客户端请求上传照片,负载均衡器将请求传递给任何一个应用服务器,后者向数据库添加一个条目。向用户发送已成功存储照片的更新。若遇到错误,也会通知用户。

    查看照片的过程与上述流程类似。客户端请求查看一张照片,从数据库中获取与请求匹配的合适的照片,并显示给用户。客户端还可以提供关键字来搜索特定图像。

    读请求多于写请求,并将内容上传到系统中需要时间。若分离读(上传)写服务,效率会更高。由许多服务器操作的多个服务处理相关请求。读服 务执行为用户获取所需内容的任务,而写服务有助于将内容上传到系统。

    还需缓存数据来处理数百万次读取。它通过使获取过程快速来改善用户体验。我们还将选择延迟加载,这可以最大限度地减少客户端的等待时间。它允许我们在用户滚动时加载内容,从而节省带宽,并专注于加载用户当前正在查看的内容。这改善了在 Instagram 上查看或搜索特定照片或视频的延迟。

    照片上的读/写操作:

    当用户打开他们的 Instagram 时,我们发送timeline生成的请求:

    • 先获取用户关注的人列表

    • 获取他们最近发布的照片

    • 将其存储在队列中并显示给用户

    但这种方法响应***较慢***,因为每次用户打开 Instagram 时我们都会生成timeline

    可通过离线生成timeline,大大减少用户感知到的延迟。如在用户打开 Instagram 前,我们定义一个服务,该服务会提前为用户获取相关数据,当该人打开 Instagram 时,它会显示timeline。这减少了显示timeline的延迟率。

    ② 推送方法

    推送方法中,每个用户都负责将他们发布的内容推送给关注他们的人的timeline。在之前的方法中,从每个关注者那里拉取帖子,但在当前方法中,我们将帖子推送给每个关注者。

    现在只需获取推送到该特定用户的的数据来生成timeline。

    基于推送的方法:

    混合方法 —让我们将我们的用户分为两类:

    • 基于推送的用户:关注者数量为数百或数千的用户。

    • 基于拉取的用户:关注者数量为数十万或数百万的名人用户。

    时间轴服务从基于拉取的关注者那里拉取数据并将其添加到用户的时间轴中。基于推送的用户将他们的帖子推送到他们关注者的时间轴服务,以便时间轴服务可以将其添加到用户的时间轴中。

    4.3 在哪存储时间轴?

    我们针对userID将用户的时间表存储在键值存储中。在请求时,我们从键值存储中获取数据并显示给用户。键是userID,而值是时间轴内容(指向照片和视频的链接)。因为值的存储大小通常限制在几兆字节内,所以当我们接近大小限制时,我们可以将时间轴数据存储在 blob 中,并将指向 blob 的链接放在键的值中。

    4.4 Instagram 故事

    可向我们的 Instagram 添加一个名为故事的新功能。在故事功能中,用户可以添加一张照片,该照片仅可供他人在 24 小时内查看。我们可以通过在表中维护一个选项来实现这一点,我们可以在其中存储故事的持续时间。我们可以将其设置为 24 小时,任务计划程序删除超过 24 小时限制的条目。

    5 最终设计

    Instagram 的最终设计:

    可扩展性:我们可以向应用服务层添加更多服务器以使可扩展性更好并处理来自客户端的大量请求。我们还可以增加数据库的数量以存储不断增长的用户数据。

  • 延迟:使用缓存和CDN已减少了获取内容的时间。

  • 可用性:通过使用跨全球复制的存储和数据库使系统可用于用户。

  • 持久性:拥有持久化存储,可维护数据的备份,因此任何上传的内容(照片和视频)都不会丢失。

  • 一致性:使用了 blob 存储和数据库等存储来保持数据的全局一致性。

  • 可靠性:数据库处理复制和冗余,因此我们的系统保持可靠,数据不会丢失。负载平衡层会路由绕过失败服务器的请求


  • 参考:

    • 编程严选网


    编程严选网(www.javaedge.cn),程序员的终身学习网站已上线! 点击阅读原文,即可访问网站!

    欢迎长按图片加好友,我会第一时间和你分享软件行业趋势面试资源学习途径等等。

    添加好友备注【技术群交流】拉你进群,更多教程资源应有尽有

    关注公众号后,在后台私信:

    • 微信【ssshflz】私信【副业】,进副业交流群


    特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

    Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

    相关推荐
    热点推荐
    你怎么看星聚会KTV的“擦边球”服务

    你怎么看星聚会KTV的“擦边球”服务

    阿芒娱乐说
    2026-02-16 07:45:00
    超级杯还没开打 海港遭重创!伤病潮+人员变动 京沪首冠悬念拉满

    超级杯还没开打 海港遭重创!伤病潮+人员变动 京沪首冠悬念拉满

    刀锋体育
    2026-02-20 10:01:04
    绝地反击:本菲卡向欧足联投诉皇家马德里巨星拳击事件

    绝地反击:本菲卡向欧足联投诉皇家马德里巨星拳击事件

    本泽体育
    2026-02-20 07:55:33
    海口至上海机票11560元,网友破防:打工人的钱是大风刮来的吗?

    海口至上海机票11560元,网友破防:打工人的钱是大风刮来的吗?

    眼光很亮
    2026-02-20 04:20:06
    影片《夜王》票房破1000万

    影片《夜王》票房破1000万

    界面新闻
    2026-02-20 14:03:12
    6场比赛,5场硬仗!打东部第1,还要打西部第1,骑士面临严峻考验

    6场比赛,5场硬仗!打东部第1,还要打西部第1,骑士面临严峻考验

    一登侃球
    2026-02-19 16:20:59
    刘青山处决前夕被吓傻,当听清楚行刑前的措施后,感动地嚎啕大哭

    刘青山处决前夕被吓傻,当听清楚行刑前的措施后,感动地嚎啕大哭

    史之铭
    2026-01-20 03:27:11
    女人最爱听的4句“骚话”,你明白吗?

    女人最爱听的4句“骚话”,你明白吗?

    思絮
    2026-02-20 14:53:25
    港股大模型概念股涨幅扩大,智谱大涨近33%

    港股大模型概念股涨幅扩大,智谱大涨近33%

    每日经济新闻
    2026-02-20 14:41:21
    争议!俄罗斯选手在冬奥会上未收到1万元的三星手机 疑遭区别对待

    争议!俄罗斯选手在冬奥会上未收到1万元的三星手机 疑遭区别对待

    风过乡
    2026-02-19 22:51:02
    300元的燃气灶和3000元的有什么区别?看完邻居家的厨房,我懂了

    300元的燃气灶和3000元的有什么区别?看完邻居家的厨房,我懂了

    装修秀
    2026-02-18 11:45:03
    堂弟一家搬来我家长住,我月薪7000爸爸却说一家8口开支没问题

    堂弟一家搬来我家长住,我月薪7000爸爸却说一家8口开支没问题

    小秋情感说
    2026-02-20 12:55:03
    北大突然官宣!中国6G全球首创突破,速率超5G十倍,8K视频随便传

    北大突然官宣!中国6G全球首创突破,速率超5G十倍,8K视频随便传

    Thurman在昆明
    2026-02-20 04:57:00
    女子故意扮丑去相亲,男子一眼看中,女子吃惊:他是不是太饿了

    女子故意扮丑去相亲,男子一眼看中,女子吃惊:他是不是太饿了

    丫头舫
    2026-02-10 22:18:05
    广东梅州1天内连发5起山火!均为燃放烟花爆竹所致,未造成人员伤亡,多人被依法调查

    广东梅州1天内连发5起山火!均为燃放烟花爆竹所致,未造成人员伤亡,多人被依法调查

    台州交通广播
    2026-02-20 14:35:41
    法国1万人村庄连续10年自费过春节,负责人:曾在少林寺学习功夫,还来过山东

    法国1万人村庄连续10年自费过春节,负责人:曾在少林寺学习功夫,还来过山东

    齐鲁壹点
    2026-02-19 14:58:22
    匈牙利要变天了!美国给欧尔班背书他的支持率却降低了,败局已定

    匈牙利要变天了!美国给欧尔班背书他的支持率却降低了,败局已定

    透视到底
    2026-02-19 20:15:30
    台湾前深绿媒体人主持旧金山大陆侨胞湾区春晚,让岛内绿媒破防了

    台湾前深绿媒体人主持旧金山大陆侨胞湾区春晚,让岛内绿媒破防了

    总在茶余后
    2026-02-19 21:38:44
    中国可能痛击日本

    中国可能痛击日本

    杨兴文
    2026-02-19 16:21:00
    男子逃亡16年,赃款娶四妻生十二娃,被捕时家产数亿

    男子逃亡16年,赃款娶四妻生十二娃,被捕时家产数亿

    星星没有你亮
    2026-02-20 08:31:25
    2026-02-20 15:39:00
    JavaEdge incentive-icons
    JavaEdge
    Java 技术
    472文章数 457关注度
    往期回顾 全部

    科技要闻

    莫迪举手欢呼 两大AI掌门人却握拳尴尬对峙

    头条要闻

    一家三口春节返乡途中患病儿子离世 服务区帮送饭捐款

    头条要闻

    一家三口春节返乡途中患病儿子离世 服务区帮送饭捐款

    体育要闻

    战胜冠军赢得冠军 宁忠岩终于翻过了那座山

    娱乐要闻

    苏翊鸣夺金朱易示爱,两人默契引热议

    财经要闻

    太疯狂!“顾客不问价直接出手”

    汽车要闻

    量产甲醇插混 吉利银河星耀6甲醇插混版申报图

    态度原创

    游戏
    教育
    健康
    旅游
    军事航空

    讲谈社《Wabisabi》《TrailRail》试玩上线 确认参展Next Fest

    教育要闻

    2026年高考十大热门专业前瞻分析(下):五大经典专业深度解读

    转头就晕的耳石症,能开车上班吗?

    旅游要闻

    云龟山万亩樱花烂漫迎客来

    军事要闻

    消息人士透露:美军赴黄海活动 解放军有效应对处置

    无障碍浏览 进入关怀版