微信朋友圈是怎麼設計的?本文筆者梳理了朋友圈的操作流程,并向我們介紹了它背後的設計思路。
當你一秒鐘拍了張自拍,一個小時修了下圖,然後打開朋友圈,點擊發送的那一刻,後台到底有多少工作在進行着?
我們太習以為常,沒有意識到這背後還會有多複雜的邏輯。為什麼每天幾十億量級的朋友圈發布量,都沒有讓微信崩潰過?
我看了朋友圈負責人陳明的演講,他分享了微信的架構,數據結構設計等。演講很好看,很實在,但有的時候程序員講話需要努力下才能理解,本文我将從一個産品的角度,盡量平民化的闡述整個邏輯,寫下的自己的思考和理解,希望大家可以有所收獲。
一、發朋友圈
1. CDN
當我們把精心修好的圖,朋友圈點擊發送。是不是有一種秒發零延遲的感覺?
那是因為,我們在發朋友圈時,第一步動作是把你發布的圖片傳到騰訊就近的CDN節點,這時是不經過微信後台服務器的,所以會很快很快。
(CDN這裡就不展開了,可以想象下淘寶的菜鳥倉配網絡一樣,先把貨發到倉配點,然後再配送給你。)
2. 發布表
當圖片成功傳到CDN後,這時微信客戶端才會通知朋友圈CDN,說這裡有個人發了個自拍耶。
你發朋友圈時,很可能會屏蔽掉你EX或領導老闆之類的對吧。
所以呢,微信朋友圈的後台會把你發的圖片、這個圖片的URL地址、然後誰能看到這圖片(很關鍵)等等信息寫到發布表裡。
3. 相冊表
當發布表寫完後,會把你這自拍索引到你的相冊表裡,相冊表實際上很小,因為它就存了個索引指針而已。
也就是說,當你打開自己的相冊列表看到你過去發的成百上千的照片時,都是根據索引去發布表裡取的數據。
4. 時間線
當相冊表寫好了,就會到一個很關鍵的步驟了,會觸發一個批處理動作。
就是會有個跑腿的,跑過去通知你所有的通訊錄好友,說你發了個自拍,然後就會把你發的這個自拍插入到你好友的時間線裡。
當你好友刷新時,就會看到你的自拍了!Oh Yeah!
當然這前提是,你的好友沒有删除你、拉黑你、屏蔽你、不看你。紮心,我們後面會講這些過濾的權限問題是怎麼處理的。
二、刷朋友圈
好了。假設小王是你的微信好友,工作了五分鐘累的不行了,休息休息刷下朋友圈。
當小王點開朋友圈時,會拉他自己的時間線,這時他的時間線會得知有個你的新發布,小王的微信客戶端會根據你的發布的元數據去CDN找這個圖片的URL,拉到本地,然後小王就能看到你發的自拍了。
三、删除、拉黑、标簽、不讓他看、三天可見該怎麼辦
1. 誰可以看
當我們發朋友圈的時候,會有個誰可以看的選項,默認是公開,也就是你所有的好友(非删除、黑名單狀态)都會看到。
除此,還有部分可見和不給誰看的選項,這裡就是第一步的權限控制。
但這裡控制的是,你發的這個照片,要加到哪些好友的時間線裡;也就是說,假設你選擇了不給“領導”标簽下的人看,那領導标簽下的所有人的時間線都不會加上你的這條新朋友圈。
2. 标簽這裡要多說一句
标簽實際上是幫助你更方便選擇可見好友範圍的一個東西,隻有這一個作用。
舉個例子:比如說你發了自拍,選擇“男神”标簽發了出去,此時“男神”标簽下有吳彥祖和古天樂兩個人,那麼吳彥祖和古天樂都能刷到你的自拍。
這時呢,你又把劉德華加到“男神”标簽下,劉德華是不會刷到你發的這張自拍的!
同理,你漸漸厭倦了古天樂,把古天樂從“男神”标簽裡移了出去,古天樂依然可以看到你發的這個自拍哦。
明白了吧,你通過标簽選擇的可見範圍,都是具體到标簽下的人的。在你發布的那一瞬間,發布加到了誰的時間線裡,就都定下來了。所以無論後面怎麼調整标簽下的人,都不會影響這條已經發出去的自拍了。
那你說,我就是不想讓古天樂看我的這張自拍怎麼辦?好辦,你可以選擇删除他、拉黑他、不讓他看、自拍設置成僅自己可見。
3. 這就是第二步的權限控制了
當小王刷朋友圈時,上面提到會更新他的時間線。
這個時候,小王的客戶端還會做一個事情:就是查一遍權限。
也就是說,查一下時間線上的發布,有沒有是屬于不給小王看的。包括:删除、拉黑、不給他看、三天可見,這些都是可以随時變更設置的,因此小王每一次刷新朋友圈,時間線都會被篩選一下。
那就有寶寶說,會不會太麻煩了呀,每次都要查嗎?
實際上不太麻煩。因為首先在你發布時,就确定了要加到哪些好友的時間線裡,因此小王在刷朋友圈時,不用去每個好友的相冊裡去撈,這相冊還有可能存在幾百個不同的服務器裡。而隻需要讀自己的時間線這一個動作就行了,這樣的話效率就高上天了。
而删除、拉黑、不給他看、三天可見這些權限的設置,并不是說大家時時刻刻每天在改的東西,可能好久才改一次。
因此小王的微信客戶端一般會把這些權限數據緩存下來,不需要每次都去拉這個數據,隻有變動的時候才去變更一下。所以,怎麼說呢,問題不大。
四、評論和贊
理解了上面講的整個發布表、相冊表、時間線這些東西後,評論和贊就相對好理解了。
微信後台會專門有張表存儲評論和贊這些數據,假設三三是你和小王的共同好友,他刷朋友圈時,看到了你的這張自拍。那麼會同時去評論表裡拉這條發布的小王相關的評論和贊,放到這條朋友圈下面。
如果不是你和小王的共同好友,那就看不到這評論和贊。
以上,就是發朋友圈、刷朋友圈背後的一些東西。多去觀察、思考下周圍天天在用的東西,還是十分有意思的。
本文由@2B産品七七 原創發布于人人都是産品經理,未經許可,禁止轉載。
題圖來自Unspalsh, 基于CC0協議
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!