揭秘企業(yè)微信是如何支持超大規(guī)模IM組織架構的——技術解讀四維關系鏈

本文由序員先生分享,原題“技術解讀企業(yè)微信之四維關系鏈”,本文有修訂和改動。
1、引言
3年疫情后的中國社會,最大的永久性變化之一,就是大多數的企業(yè)、教育機構或者政務機構,都用上了綜合性的SaaS在線辦公系統(tǒng)。而這其中,企業(yè)微信的覆蓋率非常高,而且其占比還在不斷增長。
越來越多的人因此好奇,開始想要更深度的了解企業(yè)微信,自然也就有越來越多的人開始解讀企業(yè)微信。而解讀的角度,五花八門。
作為企業(yè)微信的研發(fā)人員,我從技術角度來看,企業(yè)微信的成長,確實有其內在的價值與優(yōu)勢。從技術角度去講企業(yè)微信,不是一件容易的事,因為涉及面太廣。企業(yè)微信是一套包含了IM、辦公協(xié)作、OA流程、CRM管理、第三方開放 等等多個維度的復雜性的超級SaaS辦公系統(tǒng)。底層擁有著數千萬行的客戶端代碼 以及 遍布世界的服務器系統(tǒng)。
本文將摘取企業(yè)微信的其中一個技術分支——IM體系之下的“關系鏈”內核要素,為你揭秘企業(yè)微信是如何支持超大規(guī)模IM組織架構的。

?
技術交流:
- 移動端IM開發(fā)入門文章:《新手入門一篇就夠:從零開發(fā)移動端IM》
- 開源IM框架源碼:https://github.com/JackJiang2011/MobileIMSDK(備用地址點此)
(本文已同步發(fā)布于:http://www.52im.net/thread-4471-1-1.html)
2、相關文章
《企業(yè)微信的IM架構設計揭秘:消息模型、萬人群、已讀回執(zhí)、消息撤回等》
《企業(yè)微信針對百萬級組織架構的客戶端性能優(yōu)化實踐》
《企業(yè)微信客戶端中組織架構數據的同步更新方案優(yōu)化實戰(zhàn)》
3、什么是四維關系鏈
本文內容相對簡要,但是能夠幫助想要了解企業(yè)微信的客戶們讀懂,企業(yè)微信有著怎樣宏大的目標與深遠的發(fā)展空間。
企業(yè)微信發(fā)展至今,其通訊錄關系鏈結構經過了多輪演化,形成了一套非常復雜的結構,并在關系鏈領域擁有著絕佳的優(yōu)勢。
為了方便理解,我把企業(yè)微信的關系鏈結構定義為四維關系鏈系統(tǒng)。這里的四維不是空間的維度,而是關系鏈拓展連接能力抽象的層級。
4、一維關系鏈:鏈式結構
一維關系鏈的基礎結構,是鏈式結構,由節(jié)點與節(jié)點的連接組成。
這種結構的典型代表有還手機通訊錄、QQ、微信。這個很容易理解。每個人都是一個節(jié)點,人與人的單向或雙向的關系,則為節(jié)點之間的連接。
每個人和自己的通訊錄成員的關系鏈如下:

?當進入到云端,因為每一個代表人的原點,都是獨立存在而不重復的,每個人的關系鏈就是可以互相鏈接起來的,結合更多人的通訊錄成員關系,就會形成一張巨大的網狀結構。
美國某位心理學家StanleyMilgram 提出的六度人脈就是基于網狀的拓撲關系,推算我們每個人和世界上的任何一個陌生人之間間隔的鏈接個數不會超過6層。
當然,這個推算只是一個理論上的關系抽象,截止目前,世界上還并沒有出現真的鏈接了全世界人口的App系統(tǒng)。目前鏈接最多活躍人口的whatsapp的記錄是20億的量級。
?

5、二維關系鏈:組織結構
二維關系鏈,在一維關系鏈的基礎之上,額外增加了組織的關系。
?

?同一個節(jié)點可以歸屬于不同的多個組織。用以形成常規(guī)的樹狀組織架構關系。
?

?企業(yè)級IM,就是將全部成員納入同一個組織,是該結構最基礎的抽象。
該結構下:相同組織的成員互相可見,互相可通信。
其實:用一維關系鏈也是可以模仿該結構,就是把全企業(yè)的人默認全部互為好友,也會擁有類似效果,但這樣做無疑就太復雜了一些,不如用抽象的組織關系來替代者個關聯(lián)關系。
實際上:真實的企業(yè)類組織的關系都是多層結構,就像我們電腦上的文件目錄結構,層層包含。沒有“組織”的抽象,是很難完成企業(yè)IM的基礎搭建的。

6、三維關系鏈:屬性抽象
一維和二維都非常簡單直白,到了三維,會稍微復雜一點。
三維關系鏈,在二維的基礎之上,我們在關系鏈系統(tǒng)中引入“屬性” 與 “操作權限” 的概念。
我們也可以把二維關系中的“組織”也看做屬性的一種,但是“屬性”維度明顯能涵蓋得更多。能夠進行按屬性為單位的抽象管理,是一個新維度的拔升。
這個維度的提升,讓復雜組織的管理變得容易管理與拓展。也是企業(yè)微信在大型企業(yè)的使用中足夠靈活好用的關鍵之一。
這些靈活的運用:
1)體現在企業(yè)組織管理的精細化能力;
2)實現多個緊密合作企業(yè)之間的互聯(lián)關系;
3)實現擁有多層上下級結構的集團關系網;
4)實現聯(lián)合行業(yè)級大批量企業(yè)關聯(lián)互通的上下游架構
… …

7、三維關系鏈應用舉例
7.1組織管理的精細化
首先,我們可以給關系鏈上每個節(jié)點賦予員工類型屬性、管理等級屬性、職位類別屬性… …
然后設置不同屬性節(jié)點之間不同的“操作權限”,例如:
1)管理員屬性員工 才可以刪除 員工;
2)臨時員工屬性 不可 查看正式員工的profile;
3)普通類別員工 不可向 保密型員工發(fā)送信息;
等等。

7.2互聯(lián)企業(yè)
當多家具有緊密的關聯(lián)關系的企業(yè),希望在范圍可控的前提下實現互聯(lián)互通的時候,如果僅靠一維關系鏈的方式,讓企業(yè)員工去互相加好友的方式就顯得不太夠用了。
因為好友關系是個人關系,而非屬性關系。
例如:A企業(yè)希望和B企業(yè),C企業(yè) 三家之間的銷售類員工實現充分的互聯(lián)互通,而又不希望其他類型的員工暴露給對方企業(yè)。那么讓這么多家企業(yè)的員工去互加好友的方式就明顯太過麻煩了,即便這樣做了,由于員工的流動性,不斷有入職和離職,這個工作量就更大了。更麻煩的是,當某員工從銷售崗位變成了售后或者采購等其他不希望互聯(lián)互通的崗位,又怎樣去除這些關系?所以必須依賴屬性的維度來完成這些工作。
企業(yè)微信創(chuàng)建了一個圈子的概念:在同一個圈子中的員工,擁有相同的屬性,例如互相可見,互相可通信,用以實現互聯(lián)企業(yè)。
就如下圖:圈子創(chuàng)建后,各家企業(yè)可以把希望進入到互通范圍的員工類型納入到對應的圈子,而圈子又可以面對多家企業(yè)去選擇性的開放,從而實現對多種互聯(lián)企業(yè)的靈活訴求。

在互聯(lián)企業(yè)的靈活使用下,我們可以把企業(yè)內不愿意對外暴露的員工保護在企業(yè)內部,但同時需要和外界密切接觸的員工納入各類不同類型的企業(yè)圈子中,去參與市場之間的各類交集,以獲取更多商機,或者參與到某些企業(yè)間的管理協(xié)作中去。
7.3集團架構
上面的互聯(lián)企業(yè)架構,適用于多家相對關系平等的企業(yè)之間。而一些具有從屬關系的大型集團,或者類似于教育局與學校關系的局校關系,則不適用了。
其實這里我們只需要適當變更屬性的用法,會發(fā)現該架構一樣可以實現。
在上述圈子概念的基礎之上:我們增加定義等級屬性,然后再對操作權限進行單向控制,就實現了從屬關系。
例如:高等級單位可以見下級單位,下級單位不可見高級單位。下圖示例(箭頭表示可見方向屬性),那么市教育局和縣教育局互相可見,教育局可見自己所屬的學校,但學校之間互相不可見,也不可見上級單位。

在這套架構的運用下,可以匯聚最高可到上千家企業(yè)或者學校到同一個系統(tǒng),可見范圍可根據管理的上下級的管理需求進行一定程度的自定義。目前已經運用到大量的市縣教育局系統(tǒng) 或者 某些大型集團公司的管理。
7.4上下游架構
這是使用范圍更廣的一種拓展,適用于行業(yè)級的產業(yè)鏈協(xié)同。協(xié)同的企業(yè)量級可以達到上萬家。
例如汽車行業(yè)涉及數百項供應商企業(yè),要如何實現線上的管理協(xié)同,通過數字化把線下凌亂的流程自動化的管理起來?因為這一切工作的前提都是人的操作,因此前提就是必須先實現整條產業(yè)鏈的通訊錄打通。

技術基礎決定業(yè)務上限!再美好的大樓外觀設計,在沒有足夠支撐的框架結構的情況下,也無法完成,硬上的結果只能是崩塌。因為各類豐富架構的支撐,我們實現了大企業(yè)領域的 顯著優(yōu)勢。
8、四維關系鏈:跨領域
上面3個維度都是基于同一套軟件系統(tǒng) 也即“企業(yè)微信” 來實現。企業(yè)微信不僅僅運用在企業(yè),也可以運用在一切具有組織關系的團體之上。
因此:我們有大量的政務、學校 或者 一些非企業(yè)非盈利的組織 在使用。 但,如果僅僅停留在上面3個維度,哪怕成長到whatsapp這樣的20億級別以上的關系鏈網,依然無法連接全部人口。這個世界上存在著多套關系鏈系統(tǒng),而且不同的關系鏈系統(tǒng)具有的維度層級和抽象能力不大相同。我們能否真正的實現連接一起的能力? 這是第4個維度需要關心的事情。
因此,在第四維,我們抽象了一套id對應系統(tǒng),用于實現連接一切。
微信是距離企業(yè)微信最近的全民 IM 系統(tǒng),通過 IMUnion,能夠實現企業(yè)微信(WWChat)與微信(WeChat)用戶關系鏈 ID 系統(tǒng)的映射,通過生成通用的公共 openid 關聯(lián)彼此。

上圖是跨系統(tǒng)連接的示意圖,當然實際上比這個要復雜得多。
僅僅連接不同系統(tǒng)下的 ID 還不足以產生實用效果,還需要通過打通的 ID 系統(tǒng)去構建會話系統(tǒng),通知體系。企業(yè)微信作為復雜的 B 端系統(tǒng),光是會話內的消息類型就多達上百種,微信也有數十種之多。
這些還需要依賴更多的通用 card 類型設計來實現。當然,這里起到連接的只是一些類似數學維度的 ID 關聯(lián),ID 的背后可以是人,自然也可以是其他同事。因此,除了連接微信之外,企業(yè)微信還能夠連接硬件系統(tǒng)。

企業(yè)微信支持豐富的硬件體系,包括各類型的打卡考勤機、打印復印機、音視頻設備...
一切設備都可以通過內置企業(yè)微信的 ID 映射邏輯 SDK 來實現與企業(yè)微信系統(tǒng)的連接。實現連接一切的能力。
《人類簡史》這本書有提到過原始社會沒有語言這種連接工具之前,只可能是小的部落群體,就和猴子猩猩的族群大小沒有區(qū)別。當語言這個連接工具的誕生,族群的規(guī)模開始快速擴大,因為大家可以低損耗的傳達信息了。而更高級的抽象能力誕生,又是更強的連接能力,可以形成共通的目標、意義、宗教崇拜,人類社會開始具備擴大到國家乃至世界的能力,才有了快速的人力發(fā)展歷程。
今天的企業(yè)微信,也再做著類似的事情,我們通過創(chuàng)造新的連接方式,這樣一套四維的,全方位的連接能力,連接全部的人,甚至跨越到智慧硬件領域。會逐漸衍生豐富的 B 端生態(tài)系統(tǒng)。企業(yè)微信的使命,是成為每一家企業(yè)自己的微信,當大部分的企業(yè)可以達成的時候,新的生產銷售關系會發(fā)展到前所未有的高度。
在最近一次的企業(yè)微信的大范圍連接一切的嘗試,是在 2020年的全國人口第七次普查中,企業(yè)微信的第四維關系鏈,就起到了關鍵性的作用。通過全國的省、市、縣、街道的顆粒度,配置線下網格員,700萬網格員全部在企業(yè)微信上,通過集團架構的模式層層關聯(lián),統(tǒng)一調度。然后再通過著700萬普查員 與 14億微信用戶信息的鏈接實現了中央統(tǒng)一調度的效果。

在之前的幾次人口普查中,信息收集匯總工作是非常龐大且復雜的。獲得了極大的效率提升。后續(xù)超大規(guī)模的經濟普查 甚至 全社會級別的高級管理能力都會有更多的想象空間。
9、微信團隊分享的其它技術文章
《微信朋友圈千億訪問量背后的技術挑戰(zhàn)和實踐總結》
《IM全文檢索技術專題(二):微信移動端的全文檢索多音字問題解決方案》
《微信團隊分享:iOS版微信的高性能通用key-value組件技術實踐》
《微信團隊分享:iOS版微信是如何防止特殊字符導致的炸群、APP崩潰的?》
《微信團隊原創(chuàng)分享:iOS版微信的內存監(jiān)控系統(tǒng)技術實踐》
《iOS后臺喚醒實戰(zhàn):微信收款到賬語音提醒技術總結》
《微信團隊分享:視頻圖像的超分辨率技術原理和應用場景》
《微信團隊分享:微信每日億次實時音視頻聊天背后的技術解密》
《微信團隊分享:微信Android版小視頻編碼填過的那些坑》
《IM全文檢索技術專題(一):微信移動端的全文檢索優(yōu)化之路》
《企業(yè)微信客戶端中組織架構數據的同步更新方案優(yōu)化實戰(zhàn)》
《微信團隊披露:微信界面卡死超級bug“15。。。?!钡膩睚埲ッ}》
《月活8.89億的超級IM微信是如何進行Android端兼容測試的》
《一篇文章get微信開源移動端數據庫組件WCDB的一切!》
《微信客戶端團隊負責人技術訪談:如何著手客戶端性能監(jiān)控和優(yōu)化》
《微信后臺基于時間序的海量數據冷熱分級架構設計實踐》
《微信團隊原創(chuàng)分享:Android版微信的臃腫之困與模塊化實踐之路》
《微信后臺團隊:微信后臺異步消息隊列的優(yōu)化升級實踐分享》
《微信團隊原創(chuàng)分享:微信客戶端SQLite數據庫損壞修復實踐》
《微信Mars:微信內部正在使用的網絡層封裝庫,即將開源》
《如約而至:微信自用的移動端IM網絡層跨平臺組件庫Mars已正式開源》
《開源libco庫:單機千萬連接、支撐微信8億用戶的后臺框架基石 [源碼下載]》
《微信新一代通信安全解決方案:基于TLS1.3的MMTLS詳解》
《微信團隊原創(chuàng)分享:Android版微信后臺?;顚崙?zhàn)分享(進程保活篇)》
《微信團隊原創(chuàng)分享:Android版微信后臺?;顚崙?zhàn)分享(網絡保活篇)》
《Android版微信從300KB到30MB的技術演進(PPT講稿) [附件下載]》
《微信團隊原創(chuàng)分享:Android版微信從300KB到30MB的技術演進》
《微信技術總監(jiān)談架構:微信之道——大道至簡(演講全文)》
《微信技術總監(jiān)談架構:微信之道——大道至簡(PPT講稿) [附件下載]》
《如何解讀《微信技術總監(jiān)談架構:微信之道——大道至簡》》
《微信海量用戶背后的后臺系統(tǒng)存儲架構(視頻+PPT) [附件下載]》
《微信異步化改造實踐:8億月活、單機千萬連接背后的后臺解決方案》
《微信朋友圈海量技術之道PPT [附件下載]》
《微信對網絡影響的技術試驗及分析(論文全文)》
《一份微信后臺技術架構的總結性筆記》
《架構之道:3個程序員成就微信朋友圈日均10億發(fā)布量[有視頻]》
《快速裂變:見證微信強大后臺架構從0到1的演進歷程(一)》
《快速裂變:見證微信強大后臺架構從0到1的演進歷程(二)》
《微信團隊原創(chuàng)分享:Android內存泄漏監(jiān)控和優(yōu)化技巧總結》
《全面總結iOS版微信升級iOS9遇到的各種“坑”》
《微信團隊原創(chuàng)資源混淆工具:讓你的APK立減1M》
《微信團隊原創(chuàng)Android資源混淆工具:AndResGuard [有源碼]》
《Android版微信安裝包“減肥”實戰(zhàn)記錄》
《iOS版微信安裝包“減肥”實戰(zhàn)記錄》
《移動端IM實踐:iOS版微信界面卡頓監(jiān)測方案》
《微信“紅包照片”背后的技術難題》
《移動端IM實踐:iOS版微信小視頻功能技術方案實錄》
《移動端IM實踐:Android版微信如何大幅提升交互性能(一)》
《移動端IM實踐:Android版微信如何大幅提升交互性能(二)》
《移動端IM實踐:實現Android版微信的智能心跳機制》
《移動端IM實踐:WhatsApp、Line、微信的心跳策略分析》
《移動端IM實踐:谷歌消息推送服務(GCM)研究(來自微信)》
《移動端IM實踐:iOS版微信的多設備字體適配方案探討》
《IPv6技術詳解:基本概念、應用現狀、技術實踐(上篇)》
《IPv6技術詳解:基本概念、應用現狀、技術實踐(下篇)》
《微信多媒體團隊訪談:音視頻開發(fā)的學習、微信的音視頻技術和挑戰(zhàn)等》
《騰訊技術分享:微信小程序音視頻技術背后的故事》
《微信多媒體團隊梁俊斌訪談:聊一聊我所了解的音視頻技術》
《手把手教你讀取Android版微信和手Q的聊天記錄(僅作技術研究學習)》
《微信技術分享:微信的海量IM聊天消息序列號生成實踐(算法原理篇)》
《微信技術分享:微信的海量IM聊天消息序列號生成實踐(容災方案篇)》
《微信團隊分享:Kotlin漸被認可,Android版微信的技術嘗鮮之旅》
《社交軟件紅包技術解密(二):解密微信搖一搖紅包從0到1的技術演進》
《社交軟件紅包技術解密(三):微信搖一搖紅包雨背后的技術細節(jié)》
《社交軟件紅包技術解密(四):微信紅包系統(tǒng)是如何應對高并發(fā)的》
《社交軟件紅包技術解密(五):微信紅包系統(tǒng)是如何實現高可用性的》
《社交軟件紅包技術解密(六):微信紅包系統(tǒng)的存儲層架構演進實踐》
《社交軟件紅包技術解密(十一):解密微信紅包隨機算法(含代碼實現)》
《微信團隊分享:極致優(yōu)化,iOS版微信編譯速度3倍提升的實踐總結》
《IM“掃一掃”功能很好做?看看微信“掃一掃識物”的完整技術實現》
《微信團隊分享:微信支付代碼重構帶來的移動端軟件架構上的思考》
《IM開發(fā)寶典:史上最全,微信各種功能參數和邏輯規(guī)則資料匯總》
《微信團隊分享:微信直播聊天室單房間1500萬在線的消息架構演進之路》
《企業(yè)微信的IM架構設計揭秘:消息模型、萬人群、已讀回執(zhí)、消息撤回等》
《IM全文檢索技術專題(四):微信iOS端的最新全文檢索技術優(yōu)化實踐》
《微信團隊分享:微信后臺在海量并發(fā)請求下是如何做到不崩潰的》
《微信Windows端IM消息數據庫的優(yōu)化實踐:查詢慢、體積大、文件損壞等》
《微信技術分享:揭秘微信后臺安全特征數據倉庫的架構設計》
《企業(yè)微信針對百萬級組織架構的客戶端性能優(yōu)化實踐》
《揭秘企業(yè)微信是如何支持超大規(guī)模IM組織架構的——技術解讀四維關系鏈》
(本文已同步發(fā)布于:http://www.52im.net/thread-4471-1-1.html)