微信朋友圈设计原理

news/2024/10/17 22:17:36/

转自:http://www.woshipm.com/pd/2701264.html

当你一秒钟拍了张自拍,一个小时修了下图,然后打开朋友圈,点击发送的那一刻,后台到底有多少工作在进行着?

我们太习以为常,没有意识到这背后还会有多复杂的逻辑。为什么每天几十亿量级的朋友圈发布量,都没有让微信崩溃过?

我看了朋友圈负责人陈明的演讲,他分享了微信的架构,数据结构设计等。演讲很好看,很实在,但有的时候程序员讲话需要努力下才能理解,本文我将从一个产品的角度,尽量平民化的阐述整个逻辑,写下的自己的思考和理解,希望大家可以有所收获。

一、发朋友圈

1. CDN

当我们把精心修好的图,朋友圈点击发送。是不是有一种秒发零延迟的感觉?

那是因为,我们在发朋友圈时,第一步动作是把你发布的图片传到腾讯就近的CDN节点,这时是不经过微信后台服务器的,所以会很快很快。

(CDN这里就不展开了,可以想象下淘宝的菜鸟仓配网络一样,先把货发到仓配点,然后再配送给你。)

2. 发布表

当图片成功传到CDN后,这时微信客户端才会通知朋友圈CDN,说这里有个人发了个自拍耶。

你发朋友圈时,很可能会屏蔽掉你EX或领导老板之类的对吧。

所以呢,微信朋友圈的后台会把你发的图片、这个图片的URL地址、然后谁能看到这图片(很关键)等等信息写到发布表里。

3. 相册表

当发布表写完后,会把你这自拍索引到你的相册表里,相册表实际上很小,因为它就存了个索引指针而已。

也就是说,当你打开自己的相册列表看到你过去发的成百上千的照片时,都是根据索引去发布表里取的数据。

4. 时间线

当相册表写好了,就会到一个很关键的步骤了,会触发一个批处理动作。

就是会有个跑腿的,跑过去通知你所有的通讯录好友,说你发了个自拍,然后就会把你发的这个自拍插入到你好友的时间线里。

当你好友刷新时,就会看到你的自拍了!Oh Yeah!

当然这前提是,你的好友没有删除你、拉黑你、屏蔽你、不看你。扎心,我们后面会讲这些过滤的权限问题是怎么处理的。

二、刷朋友圈

好了。假设小王是你的微信好友,工作了五分钟累的不行了,休息休息刷下朋友圈。

当小王点开朋友圈时,会拉他自己的时间线,这时他的时间线会得知有个你的新发布,小王的微信客户端会根据你的发布的元数据去CDN找这个图片的URL,拉到本地,然后小王就能看到你发的自拍了。

三、删除、拉黑、标签、不让他看、三天可见该怎么办

1. 谁可以看

当我们发朋友圈的时候,会有个谁可以看的选项,默认是公开,也就是你所有的好友(非删除、黑名单状态)都会看到。

除此,还有部分可见和不给谁看的选项,这里就是第一步的权限控制。

但这里控制的是,你发的这个照片,要加到哪些好友的时间线里;也就是说,假设你选择了不给“领导”标签下的人看,那领导标签下的所有人的时间线都不会加上你的这条新朋友圈。

2. 标签这里要多说一句

标签实际上是帮助你更方便选择可见好友范围的一个东西,只有这一个作用。

举个例子:比如说你发了自拍,选择“男神”标签发了出去,此时“男神”标签下有吴彦祖和古天乐两个人,那么吴彦祖和古天乐都能刷到你的自拍。

这时呢,你又把刘德华加到“男神”标签下,刘德华是不会刷到你发的这张自拍的!

同理,你渐渐厌倦了古天乐,把古天乐从“男神”标签里移了出去,古天乐依然可以看到你发的这个自拍哦。

明白了吧,你通过标签选择的可见范围,都是具体到标签下的人的。在你发布的那一瞬间,发布加到了谁的时间线里,就都定下来了。所以无论后面怎么调整标签下的人,都不会影响这条已经发出去的自拍了。

那你说,我就是不想让古天乐看我的这张自拍怎么办?好办,你可以选择删除他、拉黑他、不让他看、自拍设置成仅自己可见。

3. 这就是第二步的权限控制了

当小王刷朋友圈时,上面提到会更新他的时间线。

这个时候,小王的客户端还会做一个事情:就是查一遍权限。

也就是说,查一下时间线上的发布,有没有是属于不给小王看的。包括:删除、拉黑、不给他看、三天可见,这些都是可以随时变更设置的,因此小王每一次刷新朋友圈,时间线都会被筛选一下。

那就有宝宝说,会不会太麻烦了呀,每次都要查吗?

实际上不太麻烦。因为首先在你发布时,就确定了要加到哪些好友的时间线里,因此小王在刷朋友圈时,不用去每个好友的相册里去捞,这相册还有可能存在几百个不同的服务器里。而只需要读自己的时间线这一个动作就行了,这样的话效率就高上天了。

而删除、拉黑、不给他看、三天可见这些权限的设置,并不是说大家时时刻刻每天在改的东西,可能好久才改一次。

因此小王的微信客户端一般会把这些权限数据缓存下来,不需要每次都去拉这个数据,只有变动的时候才去变更一下。所以,怎么说呢,问题不大。

四、评论和赞

理解了上面讲的整个发布表、相册表、时间线这些东西后,评论和赞就相对好理解了。

微信后台会专门有张表存储评论和赞这些数据,假设三三是你和小王的共同好友,他刷朋友圈时,看到了你的这张自拍。那么会同时去评论表里拉这条发布的小王相关的评论和赞,放到这条朋友圈下面。

如果不是你和小王的共同好友,那就看不到这评论和赞。

以上,就是发朋友圈、刷朋友圈背后的一些东西。多去观察、思考下周围天天在用的东西,还是十分有意思的。

 

核心表

微信朋友圈的数据有四张核心的表:

  1. 发布表:发布表记录了来自所有用户的所有feed,比如一个用户发布了几张图片,每张图片的URL,图片在CDN里的URL,它有哪些元属性,谁可以看,谁不可以看等等。
  2. 相册表:相册是每个用户独立的,记录了该用户所发布的所有内容。
  3. 评论表: 评论就是针对某个具体发布的朋友评论和点赞操作。
  4. 时间线:所谓“刷朋友圈”,就是刷时间线,就是一个用户所有的朋友的发布内容。

http://www.ppmy.cn/news/755083.html

相关文章

2019一键清空朋友圈_批量清理朋友圈说说

2019微信怎批量删除朋友圈 2019微信一键清空朋方法对于微信一键清空朋友法很多人复杂的一条条的删除,是批量也是难以全选,微信很多时候都没有那么全面,主要是害怕一些人一不小心点着什么就全部清空了,为了防止这样的第且能够很多功…

还在为微信朋友圈的大量广告而苦恼吗?一文教你如何清除微信朋友圈的广告!!!

还在为微信朋友圈的大量广告而苦恼吗?一文教你如何清除微信朋友圈的广告!!! 大家好,我叫亓官劼(q guān ji ),在CSDN中记录学习的点滴历程,时光荏苒,未来可期…

微信朋友圈删除后服务器还有吗,删了的朋友圈还可以找回来吗

演示工具: 手机型号:iphone12 系统版本:ios14 软件版本:微信7.0.20 删除的朋友圈动态不能找回来。删除是从网络服务器上面把此信息删除了,是无法找回的,而已删除掉以后,好友那边此条动态也是同步…

微信悄悄更新:朋友圈不喜欢的评论可以删除了

Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨周小白 来源丨TechWeb(TechWeb) https://mp.weixin.qq.com/s/a5rjW2x17UwQvVt_IRSDYQ 近日,有…

微信朋友圈十周年,你设置了三天可见吗?

2022年4月11日晚间,有网友发现微信悄悄上线了“农场”功能,只需几步操作就可以在状态里养鸡鸭鹅等各种小动物了。消息一出,网友们纷纷开始动手尝试,通过各种搭配打造具有自己特色的微信农场。 不到一天的时间,#微信农场…

微信朋友圈

1.微信朋友圈点赞 2.微信朋友圈 功能测试 1、朋友圈发送功能 1)只发送文本 a、考虑文本长度:1-1500字符(该数据为百度数据)、超出最大字符长度b、考虑文本类型:纯中文、纯数字、纯字母、纯字符、纯表情(微信…

记录下最近做的东西微信小程序仿微信朋友圈 支持点赞取消点赞,评论回复评论删除评,删除朋友圈 发布朋友圈查看@消息等功能

请添加图片描述 <movable-area class"w100_ h100_"><scroll-view scroll-y"true" refresher-enabled"true" bindrefresherrefresh"bindNewDataList" bindscrolltolower"bindAddDataList" refresher-triggered&q…

微信批量删除朋友圈脚本,使用auto.js编写的免root运行

说明 本文提供的代码仅供参考。不建议用于生产环境。 可能有些地方在最新版本的Auto.js上面需要做修改&#xff0c;才能运行。 Auto.js简介 Auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样&#xff0c;可以通过代码模拟一系列界面动作的辅助工作。 与“按键精灵…