图解 Twitter 架构图

news2024/11/24 9:50:39

写在前面

两年前,马老板收购了twitter,并且做了一系列的大动作。那么今天我们来看一下这个全球最火的软件之一的架构。
在这里插入图片描述
在这里插入图片描述

Twitter解析

开始之前,我先提前说明一下,我之前不是做搜推广的,所以对这些了解不是很深,如果有搜推广大佬看到有错的地方,欢迎指出来,感谢!

大体框架

在这里插入图片描述

各个部分拆解来看

1. 前端请求部分

在这里插入图片描述

这部分是 twitter 的前端页面请求,twitter 通过来源判断请求后端服务的方式。

  • 如果是安卓设备就使用 TLS-API 请求后端
  • 如果是苹果设备或者web端就直接基于GraphQL发送请求给后端

TLS 是 Twitter 的经典(传输层安全)APl。 我不是很懂为啥需要区别两个设备,一个走TLS-API、另一个走GraphQL。难道是历史遗留原因?有懂的小伙伴可以评论区讲解一下。

而 GraphQL 是一个 Facebook 开发的用于 API 查询语言和服务端运行时的开源数据查询语言,有灵活、高效的数据查询和交互方式。但这里应该还有一层gateway,前端与 Twitter 所有微服务之间的网关。 可能原图中省略了。

2. 总体模块

我们先来聊一下这两个模块

在这里插入图片描述
左边的for you 应该就是基于 following 而多加了点内容,而之所以放入following的内容,我猜测是为了留存率,因为For You 很明显大部分都是推荐的内容,万一推荐的内容不喜欢,导致这部分内容点击率低,而使得留存率低,所以会放一些following的内容,保住留存率,并且慢慢根据算法去推送可能感兴趣的内容

而右边的 following 大部分推文都是关注的人。

在这里插入图片描述

3. 时间轴模块

时间轴模块是twitter的核心模块。
在这里插入图片描述

这里被叫做mixer是有道理的,内容为主的app,都会涉及搜推广工作, Twitter 时间线是由一堆不同的内容源组成源,并根据百分比排列在时间轴上,通过算法微调用户的体验,也就是千人千面

例如,时间轴上 60% 的推文来自关注的人,推荐的内容占20%,广告占 20%,然后再基于此进行调高或调低。

  • people discovery service:关注的人所发的推文。
  • ad mixer:需要召回的广告,并且是该用户可能感兴趣的广告
  • onboarding service:基于所关注的人去推荐新内容来扩充内容版本,也就是引流。
  • timeline scorer:对召回的推文、广告、新内容做打分、进行排序,来决定展示在用户面前的顺序。

多个微服务之间用的是 thrift RPC 做rpc调用。这个rpc框架还是很火的。好像是apache社区的。

这和大部分的推荐系统一样,都是相似的架构。

4. home页面

在这里插入图片描述

那么这部分其实和timeline是类似的,只是召回的比例不一样,这部分重点更多的是推荐。

接下来介绍一下存储介质
在这里插入图片描述

  • manhattan :Twitter 的分布式数据库,官网有详细介绍:https://blog.x.com/engineering/en_us/a/2014/manhattan-our-real-time-multi-tenant-distributed-database-for-twitter-scale
    在这里插入图片描述

  • Gizmoduck:Twitter 的缓存库。

  • social graph:猜测是一个存储社交的图数据库,存储用户和用户之间的联系。

  • tweetyPie:应该就是处理所有与推文相关的服务。

在这里插入图片描述

5. 推荐模块

在这里插入图片描述

Fetch:尽可能的召回数据

  • CF mixer:应该是将所有的用户特征进行召回,包括用户画像,倒排索引,向量数据等等
  • EarlyBird:基于Lucene的实时倒排索引,实时搜索性能比MySQL高出一个数量级,内存效率提高了一倍,并能灵活地添加相关性过滤功能。
  • Uteg:猜测是用户画像特征
  • spaces:Twitter的视频流数据,一般会做为embedding向量化操作。
  • communicates:Twitter的社区数据。

Feature:尽可能的提取特征,做特征工程

  • Candidate Sources:输出的特征是后续推荐系统的输入,也就是推荐系统会推出具备这些特征的内容,而这些内容,是符合用户特征的,尽可能的留住用户。

Score:对特征进行排序

  • Prediction Service:对用户特征进行预测,预测出可能也对哪些特征感兴趣。比如喜欢NBA的人,可能会喜欢耐克。

在这里插入图片描述

Feature Hydration:根据文档介绍,hydration就是获取具备上述所错的feature特征的所有的推文的详细信息。

Alex Xu 大佬的图片

原twitter地址:https://x.com/alexxubyte/status/1594008281340530688
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 本周可能就会淘汰 TLS,因为只有当 Android 应用程序使用时间 ≥1 年时,才需要使用 TLS(这部分我不理解)
  • Home mixer 的计算速度比 Timeline 快 10 倍
  • 广告混合器可以大大提高相关性,并且用更少的曝光获取更多的点击,广告对于你来说越有趣,你看它的时间就越长。(是这样翻译吧?)

最后

当然 reddit 上面也有很多讨论,我把链接放这里,大家有兴趣也可以看看 https://www.reddit.com/r/ProgrammerHumor/comments/yz8zas/elons_10_pm_whiteboard_twitter_for_dummies/
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1829555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatglm4本地部署详解

下载地址 模型下载地址:GitHub - THUDM/GLM-4: GLM-4 series: Open Multilingual Multimodal Chat LMs | 开源多语言多模态对话模型 已经训练好的数据下载地址: https://huggingface.co/THUDM/glm-4-9b-chat-1m/tree/main 测试主机配置 cpu:E…

超拟人大模型:AI心理健康服务的未来

摘要: 周末听了一场聆心智能关于情感LLM的分享,总结了相关内容如下。在人工智能技术的浪潮中,超拟人大模型技术为心理健康服务领域带来了革命性的变化。本文将分析超拟人大模型的进展、CharacterGLM模型的特点、Emohaa模型的应用以及心理健康…

解放双手 免费AI编程工具---Fitten Code

前言 相信大家在2023年后听说了不少的关于人工智能的话题,对于这种全新的科技又好奇又恐惧,今天我们来见识下一个在VS中的AI代码工具吧。 配置环境 安装 首先我们找到管理扩展,然后再搜索Fitten Code下载安装。 我这里已经下好过了&#xff…

《C语言》文件操作

文章目录 一、认识文件1、文件的概念2、程序文件3、数据文件4、文件名 三、二进制文件和文本文件四、文件的打开和关闭1、流2、标准流3、文件指针4、文件的关闭和打开 四、文件的顺序读写文件的随机读写1、fseek2、ftell3、rewind4.int origin 一、认识文件 主要讨论数据文件 1…

Python 潮流周刊#56:NumPy 2.0 里更快速的字符串函数

△△请给“Python猫”加星标 ,以免错过文章推送 本周刊由 Python猫 出品,精心筛选国内外的 250 信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进 Python 技术&am…

【GO-OpenCV】go-cv快速配置

最近对golang实现目标检测心血来潮,尝试在没有sudo权限的平台配置go-cv,有所发现,索性多个平台都做尝试 安装Go语言(Golang) 通过包管理器安装(适用于Debian/Ubuntu)(有点慢) 更新包列表: sud…

贷款投资决策和常用财务函数

前段时间上了一门excel操作的课,本文结合其中介绍财务函数以及投资决策分析相关的部分,对贷款中的现金流计算进行深入的分析。 以等额本息产品为例进行实操计算,假设某产品本金12000元,期限12,IRR利率24%。每期还款113…

关于volatile与System.out的“冲突”导致的内存屏障失效问题

起因:今天在写一个volatile相关的Demo,本来想的是一个线程根据这个IS_STOP去一直进行循环,直到另一个线程改变为true就中断。内存屏障的问题会导致虽然其他线程修改了值,但是原线程是不知道的,会继续循环,所…

c++模板模式

文章目录 模板模式什么是模板模式为什么使用模板模式模板模式实现步骤 示例模板模式优缺点 模板模式 什么是模板模式 模板模式(Template Method Pattern)是一种行为设计模式,它定义了一个操作中的算法骨架,将某些步骤的具体实现延…

质疑标普,理解标普,加入标普

上周我在文章里提到过,标普信息科技LOF(161128)出现套利机会。每天申购卖出,到现在一个账户56*6336润。 得益于美股七巨头轮流领涨,161128依旧坚挺,每天溢价都是10%,成交量1个多亿,场内新增份额才400万份&…

Web的UI自动化基础知识

目录 1 Web自动化入门基础1.1 自动化知识以及工具1.2 主流web自动化测试工具1.3 入门案例 2 使用工具的API2.1 元素定位2.1.1 id选择器2.1.2 name2.1.3 class_name选择器2.1.4 tag_name选择器2.1.5 link_text选择器2.1.6 partial_link_text选择器2.1.7 xpath选择器2.1.8 CSS选择…

【AI实践】Dify开发应用和对接微信

自定义应用 创建应用有2种, 从应用模板创建 空白应用,也就是自定义应用 选择翻译助手 Translation assistant模板创建一个应用 自定义应用,创建一个child_accompany_bot自定的应用,用来支持家长,如何解决低龄儿童的…

马克·雷伯特访谈:机器人的未来及波士顿动力的创新之路

引言 机器人技术作为现代科技的前沿领域,始终吸引着大量的关注与研究。波士顿动力公司作为这一领域的领军者,其创始人兼前CEO马克雷伯特(Marc Raibert)近日在主持人莱克斯弗里德曼(Lex Fridman)的播客节目…

this指针如何使C++成员指针可调用

在C中,this指针是一个隐藏的指针,指向当前对象实例。它在成员函数中自动可用,用于访问该对象的成员变量和成员函数。理解this指针的工作原理有助于理解为什么指向成员的指针是可调用的。在本文中,我们将详细探讨this指针的概念&am…

计算机组成原理之定点运算器的组成

文章目录 定点运算器的组成逻辑运算ALU两级先行进位的ALU 总线单总线结构双总线结构三总线结构 定点运算器的组成 逻辑运算 总的来说,逻辑非运算就是按位取反;逻辑加运算就是按位取或运算;逻辑乘运算就是按位取和运算;逻辑异运算…

vue框架学习------框架概述

框架 在基础语言之上,对各种基础功能进行封装 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法; 另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而…

分类模型部署-ONNX

分类模型部署-ONNX 0 引入:1 模型部署实战测试:1 安装配置环境:2 Pytorch图像分类模型转ONNX-ImageNet1000类3 推理引擎ONNX Runtime部署-预测单张图像: 2 扩展阅读参考 0 引入: 在软件工程中,部署指把开发…

仅凭一图,即刻定位,AI图像定位技术

AI图像定位技术,解锁空间密码!仅凭一图,即刻定位,精准至经纬度坐标,让世界无处不晓。 试试看能否猜中这张自拍照的背景所在?可别低估了A的眼力,答案说不定会让你大吃一惊呢。 近期,…

计算机组成原理之浮点四则运算

文章目录 浮点加减运算浮点乘法运算浮点除法运算浮点运算器的流水原理习题 浮点加减运算 总的来说,分为四个步骤: (1)0操作数检查 (2)比较阶码大小并完成对阶 (3)尾数进行加或者减操…

异常向量表的设置

1、Linux Kernel中对异常向量表的填充 linux/arch/arm64/kernel/entry.S kernel_ventry 是一个定义异常向量的宏; 在该宏中,程序跳转到了b el\el\ht()\regsize()\label; 以为异常向量的第6行为例,其实就是跳转到了bl el1h_64_irq; 然后你去搜…