Jack Jiang

          我的最新工程MobileIMSDK:http://git.oschina.net/jackjiang/MobileIMSDK
          posts - 499, comments - 13, trackbacks - 0, articles - 1

          1、前言

          微信——騰訊戰略級產品,創造移動互聯網增速記錄,10個月5000萬手機用戶,433天之內完成用戶數從零到一億的增長過程,千萬級用戶同時在線,搖一搖每天次數過億...

          在技術架構上,微信是如何做到的?日前,在騰訊大講堂在中山大學校園宣講活動上,騰訊廣研助理總經理、微信技術總監周顥在兩小時的演講中揭開了微信背后的秘密。

          周顥把微信的成功歸結于騰訊式的“三位一體”策略:即產品精準、項目敏捷、技術支撐。微信的成功是在三個方面的結合比較好,能夠超出絕大多數同行或對手,使得微信走到比較前的位置。所謂產品精準,通俗的講就是在恰當的時機做了恰當的事,推出了重量級功能,在合適的時間以最符合大家需求的方式推出去。他認為在整個微信的成功中,產品精準占了很大一部分權重。

          技術交流:

          2、相關鏈接

          講稿下載:http://www.52im.net/thread-199-1-1.html(演講PPT)

          如何解讀:如何解讀《微信技術總監談架構:微信之道——大道至簡》

          3、前于周顥

          周顥

          2001 年畢業于華南理工大學,計算機專業碩士。

          2005 年加入騰訊廣州研發部,歷任 QQ 郵箱架構師,

          廣研技術總監,T4 技術專家,微信中心助理總經理。

          4、微信的歷程

          5、敏捷是一種態度:勇于試錯

          微信研發團隊里鼓勵一種試錯的信仰:他們堅信,在互聯網開發里,如果能夠有一個團隊在更短的時間內嘗試了更多機會(并能改進過來),就能有(更多的)機會勝出。

          敏捷是一種態度,在軟件開發過程中,項目管理者都會非常忌諱“變更”這個詞,但是在微信的項目運作中是不可以的。因為微信必須要容忍說哪怕在發布前的十分鐘,也要允許他變更。這是非常大的挑戰,因為打破了所有傳統項目開發的常識。所有人都說不可能做到的,但微信做到了。研發團隊所做的一切都是要給產品決策者有最大的自由度,而這個決策正是微信能夠勝出的關鍵。

          6、懸崖邊的跳舞:海量系統上的敏捷不同以往

          敏捷有很多困境,如果做一個單機版程序,是可以做到很敏捷的,但是騰訊正在運作的是一個海量系統,有千萬級用戶同時在線,在一個單獨的功能上每天有百億級的訪問,同時還要保證99.95%的可用性。

          在海量系統上應對項目開發會有很嚴謹的規范,都說要盡可能少的變化,因為90%-95%的錯誤都是在變更中產生的,如果系統一直不變更會獲得非常高的穩定度,但是微信就是要在懸崖邊跳舞。微信的研發團隊要做一些事情,讓敏捷開發變得更簡單。

          如何做到這一切?周顥認為,首先,必須建立起一種狂熱的技術信念,就是一定是可以做到的。然后,需要用一些穩固的技術(理念)來支撐,例如大系統小做、讓一切可擴展、必須有基礎組件、輕松上線(灰度、灰度、再灰度;精細監控;迅速響應)... 等等來支撐。

          7、大系統小做

          當設計龐大系統的時候,應該盡量分割成更小的顆粒,使得項目之間的影響是最小的。僅僅把模塊變得更為清晰,這在海量系統設計開發中是不夠的,還需要在物理環境上進行分離部署,出現問題的時候可以快速發現,并且在最快的情況下解決掉。

          大系統小做,混搭模式:

          將不同的應用邏輯物理分割獨立出來,用戶注冊登錄、LBS邏輯、搖一搖邏輯、漂流瓶邏輯、消息邏輯獨立開來。把關鍵的邏輯混搭在一起,當所有的邏輯部署在同一個服務器上,確實也會帶來很大敏捷上的好處,因為不需要額外的考慮部署和監控的問題。在整個微信的邏輯中,可能現在已經有上百種不同的邏輯,因為會在邏輯的分割上拆分成8-10種做分離部署。

          8、一切皆可擴展

          在高穩定度、高性能的系統中間,為了穩定性能把它設計成不變化的系統,但為了支持敏捷需要讓一切的東西都要變得可以擴展。

          擴展的關鍵點有兩塊:

          1)一個是網絡協議需要擴展,當要升級一個新功能的時候,會有一些比較大的困難,所以所有協議設計都比較向前兼容,但是向前兼容還是不夠的,因為網絡協議設計本身有非常多的功能也會有比較大的字段,相關的代碼可能會有數千行,這一塊不能通過手寫方式完成。可以通過XML描述,再通過工具自動生成所有的代碼,這是微信獲得快速開發的一個重要的點。

          2)另外一塊就是在數據存儲方面是必須可擴展的。在2005年絕大多數海量系統的設計都是采用固定字段的存儲,但是在現代系統中會意識到這個問題,會采用KV或者TLV的方式,微信也做了不同的設計。

          把復雜邏輯都固化下來,成為基礎軟件。在微信后臺會有幾種不同的基礎組件。

          大致包括:

          • 1)Svrkit:Client/Server自動代碼生成框架:10分鐘搭建內部服務器
          • 2)LogicServer:邏輯容器:隨時添加新邏輯
          • 3)OssAgent:監控/統計框架:所見即所得的監控報表
          • 4)存儲組件:屏蔽容災/擴容等復雜問題

          9、灰度、灰度、再灰度

          在變更后的部署方式上,微信在一些規則會限定不能一次把所有的邏輯變更上去,每一次變更一小點觀察到每一個環節沒有問題的時候,才能布局到全網上去。微信后臺每一天可以支撐超過20個后臺變更,在業界來說,通常做到5個已經是比較快了,但是微信可以做到快4倍。

          騰訊內部的上線系統:

          而所謂灰度發布,是指在黑與白之間,能夠平滑過渡的一種發布方式。AB test就是一種灰度發布方式,讓一部用戶繼續用A,一部分用戶開始用B,如果用戶對B沒有什么反對意見,那么逐步擴大范圍,把所有用戶都遷移到B上面 來。灰度發布可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響度。(在騰訊,灰度發布是最常采用的發布方式之一)

          10、兵法云:古之所謂善戰者,勝于易勝者也

          常識上,解決一個復雜問題的時候,會用高明的技巧解決復雜的問題,這個不是微信團隊的目標,他們追求的要做到讓所有問題很自然和簡單的方式解決掉。

          在周顥看來,微信架構的技術復雜點在四個要點:協議、容災、輕重、監控。

          微信架構:

          • 1)協議:手機終端跟后臺服務器之間的交互協議,這個協議的設計是整個系統的骨架,在這一點做好設計可以使得系統的復雜度大大降低。
          • 2)容災:當系統出現了若干服務器或若干支架(宕機的時候),仍然需要讓系統盡可能的提供正常的服務。
          • 3)輕重:如何在系統架構中分布功能,在哪一個點實現哪一個功能,代表系統中間的功能配置。
          • 4)監控:為系統提供一個智能儀表盤。

          在協議設計上,移動互聯網和常規互聯網有很大的區別。首先有CMWAP和CMNET的不同,在中國現在有相當多的手機用戶使用WMWAP連接,還有就是在線和離線的概念,當QQ下線的時候叫離線,當你登錄的時候叫在線。但是在移動互聯網這兩個概念比較模糊。從微信的設計中,不管在線還是離線系統表現都應該是一致的。

          還有一個是連接不穩定的問題,由于手機信號強弱的變化,當時信號很好,5秒鐘走到信號不好的地區,連接就必須斷掉。這個中間帶來不穩定的因素為協議設計帶來較大困難。

          此外就是資費敏感的問題,因為移動互聯網是按照流量計費的,這個計費會使得在協議設計中如何最小化傳輸的問題。

          最后就是高延遲的問題。

          對此,業界標準的解決方案:Messaging And Presence Protocol:1)XMPP;2)SIP/SIMPLE。它的優點是簡單,大量開源實現。而缺點同樣明顯:1)流量大:狀態初始化;2)消息不可靠。

          微信在系統中做了特殊設計,叫SYNC協議,是參考Activesyec來實現的。特點首先是基于狀態同步的協議,假定說收發消息本身是狀態同步的過程,假定終端和服務器狀態已經被遲了,在服務器端收到最新的消息,當客戶端、終端向服務器對接的時候,收取消息的過程實際上可以簡單的歸納為狀態同步的過程,收消息以及收取你好友狀態更新都是相同的。在這樣的模式之下,我們會也許會把交互的模式統一化,只需要推送一個消息到達的通知就可以了,終端收到這個通知就來做消息的同步。在這樣的簡化模式之下,安卓和塞班都可以得到統一。這樣的系統本身的實現是更為復雜的,但是獲得很多額外的好處。

          讓剩下系統實現的部分更加簡單,簡化了交互模式,狀態同步可以通過狀態同步的差值獲得最小的數據變更,通過增量的傳輸得到最小的數據傳輸量。通過這樣的協議設計,微信可以確保消息是穩定到達的,而且是按序到達。引用一句俗話:比它炫的沒它簡單,比它簡單的沒它快,沒誰比他更快,哪怕在GPRS下,微信也能把進度條輕易推到底。

          11、追求完美設計的團隊不能勝任海量服務

          在容災之前面向最壞的思考,如果系統真的掛了,需要做一些事情,首先是防止雪崩,避免蝴蝶效應。

          如果關注春節訂火車票就知道了,用戶的請求量會因為系統服務不了而不斷的重試,意味著發生雪崩的時候,系統可能會承載原先3-10倍的流量,使得所有的事情更加惡化。所以微信有很多“放雪”功能的設計。

          第二個詞是柔性可用,在任何的系統中不要追求完美設計,追求完美設計的是團隊是不能勝任海量服務的。如果在一個系統出現問題的時候,這個系統就掛了,那么這是一個不好的設計,最好的做法是提供0-1中間的選擇。

          舉一個例子:當一個用戶向另外一個用戶發消息的時候,可能會通過一個垃圾信息過濾的檢測,如果垃圾信息過濾這個模塊突然掛掉了,這個消息難道就不能達到了嗎?在這樣的情況下,要忽略掉這個錯誤,使得消息正常達到對方。要精確定位出哪一個環節是最為重要的,把不是重要的錯誤盡可能的忽略掉。當不能做到完美的時候,盡可能為用戶提供服務。另外一個重要方面叫做“保護點前置”,最前的一個點就是終端,在手機終端上蘊埋更多的保護點,這樣會為用戶系統贏得更大的處理空間。如果終端具備這樣的能力,會獲得更大的反應空間。

          周顥介紹了在微信上具體容災設計的做法。在所有的容災中存儲層的容災是最難的,一個系統的設計分為三層:接入層、邏輯層、存儲層。接入層和邏輯層的容災都有比較成熟的方案。邏輯層的容災相對來說比較簡單,盡量不要有狀態的設計,比如說當你做上一個請求的時候,會保持一些狀態,要使得下一個請求發到下一個服務器。如果任何一個請求之間互相不關聯的話,這個就是無狀態的設計,只要做到這一點邏輯層的容災可以隨意的切換。在回到存儲層本身的容災設計上,相對來說困難一些,但是微信研發團隊采用了一些技巧,叫分而治之,分離業務場景,尋求簡單的設計,并不會尋求大而同一的解決方案,因為這樣會使得系統的復雜度大幅度上升,而微信會盡可能把產品拆細,尋求簡化的設計。

          首先是主備容災,這是最常見的方案。在有一些業務場景中是可以容忍最終一致性的,比如賬號系統的設計,每天寫入賬號系統的請求是非常少的,但是訪問的請求非常多,這個差異可能會達到數萬倍的規模,在這樣的場景下,微信會在賬號系統中采用簡化的方案,也可以獲得比較大的穩定度。

          SET模型+雙寫:

          第二種容災的模式叫雙寫,兩臺Master的機器,當一臺機故障的時候,另外一臺機還是可以接收到寫請求,當兩臺機交錯啟動的時候,會得到數據的丟失。但是有一些場景是可以容忍輕度數據丟失的,比如說會有一個存儲專門記錄用戶終端的類型,比如說安卓還是塞班以及他們使用終端的微信版本是什么,這樣的數據是可以容忍輕度數據丟失的,因為偶爾有一些丟失的話,下一次訪問會把這些數據帶上來,會盡快的修復所有的數據。雙寫也是非常簡單的模式。

          微信的研發團隊做了一個叫Simple Quorum的機制,在微信的后臺中,同步協議有一個很重要的基石叫序列發生器,這樣的一個序列發生器需要有極高的穩定度。首先可以看到序列號有一個特點永遠是遞增的,用遞增方式往前推進的時候,最大的序列號就是最新的系列號。有一個畢業才加入廣研的畢業生想到一個絕佳的方案,按SET分布,從2G減到200K。

          12、前輕后重:功能點后移

          周顥還談到了輕重的概念。這個概念的提出主要是從終端本身的一些困境所帶來的。首先在終端上需要表現最多的一個產品的邏輯,邏輯非常復雜,變更的成本也非常高,當需要修復的時候必須發布一個新版本,這個新版必須由自己下載才能完成,下載的成本非常高。在這樣的前提下,如果手機終端產生了任何變化的時候,如果這個變化有非常大的問題就會有極大的困境,所以需要在每一個發布之前做一些充分的數據,確保不會發生致命問題。如果一旦出現致命問題難以修復,需要把關鍵的點從終端移到后臺實現,把功能點后移,來充分發揮后臺快速變更的能力。

          接入優化:從GSLB到IP重定向

          在接入層的優化,速度很重要的因素,是不是能夠就近接入一個最優的節點,比如說移動用戶最好接入移動的節點,海外的用戶可能需要尋找更佳的路由,有的時候可能無法自動做到這一點,一點是在終端上做測速,微信會通過在后臺IP逆向的能力,通過后臺指揮微信終端聯網的能力,尋找最優的接入點。上圖就是每分鐘收到同一項指令曲線的報表。

          如何解決“偷流量”的問題——當國內類微信類產品發布的時候出現一個大的問題就是“偷流量”,當用戶在某一些邏輯下進行一個死循環,不斷訪問某一些數據,這樣的死循環是非常可怕的,如果在用戶不知覺的情況之下,可能會在一個小時之內偷到數10兆甚至數百兆的流量。有非常多業內的同行都需要花大量的精力解決這個問題,微信研發團隊用了非常強大的方式解決它。通過在后臺建立起嚴厲的監控系統,對每一個用戶的行為做一個監控,當發現異常的時候,后臺會給終端發出指令,使得微信終端在一段時間無法聯網,但是可以保證用戶流量不會白白的使用掉。

          功能適配的例子——第一期微信版本發布的時候,當時沒有群聊的功能,第二版發布的時候做了這個功能。當時有兩個選擇,對于早期版本的用戶,因為不支持群聊,就無法享用到這個功能,但是微信希望提供更好的選擇,想讓早期不支持群聊的版本,也可以被拉到一個群里面收消息、發消息,通過后臺功能的適配也能做到這個事情。

          13、分而治之:把監控嵌入基礎框架

          對于一個海量系統來說,一個精密的儀表盤非常重要。監控是非常痛苦的,對于這樣一個系統來說,每小時會產生數百G的監控日志。微信希望在1分鐘之內監控的數據就能夠顯示在報表上,因為只有這樣的精準和實時度才能夠贏得處理故障的時間。微信會做關聯統計,通過搖一搖加了好友,他們活躍度如何,過了一段時間他們的活躍度變化情況又是如何。這種需求是需要通過大量日志的關聯統計來獲得的。研發團隊也花了一段時間來理解這個問題,發現了中間一個重要的經驗叫做“魚和熊掌不能兼得”。

          為了讓監控數值更敏感,需要把監控細化再細化,上面數據表示每一欄子系統的數據,下面這個是按微信版本號來劃分的,這里的數據項是非常多。

          微信還需要采集一些異常的點,如果有異常的話會發布緊急的版本,盡可能快的替換它。對收發消息延時做的監控,比如說0—1秒端到端的速度,會對不同的區段做一些統計,當某一個環節出現異常的時候,通常會在中間的延時上體現出來。有一個很重要的點叫自動報警,現在有數千項的數據,不可能每一項都靠人工去看的,必須要跟自動報警相關聯,微信有一些智能的算法,是不是在正常的范圍內,跟歷史的數值進行對比,如果有異常的話,會通過短信、郵件還有微信本身來發出報警信息。

          微信會把監控嵌入到基礎框架里面去,因為并不是每一個人都會意識到在需要的地方嵌入一個監控點,所以在基礎框架本身內置很重要的監控點,比如說這個表上的欄目,非常多的欄目大概會有數百項的欄目,都不需要程序員自己去寫,當用基礎組件搭建一個系統的時候,就可以直接觀測系統數據。

          14、未來的技術挑戰

          在談到微信未來的技術挑戰時,周顥首先希望能夠讓微信成為可用性99.99%的系統;設計出面向現在10倍容量的系統以及完全的IDC容災。

          15、寫在后面

          網上盛傳的凌晨兩點,騰訊大廈那多層大片大片的燈光和樓下那長長的出租車隊伍說明了一切。引用一句話做結尾:“可怕的不是微信,真正可怕的是,比你領先比你更有天賦的團隊比你更努力”。

          附錄1:QQ、微信團隊原創技術文章匯總

          微信朋友圈千億訪問量背后的技術挑戰和實踐總結

          騰訊技術分享:騰訊是如何大幅降低帶寬和網絡流量的(圖片壓縮篇)

          騰訊技術分享:騰訊是如何大幅降低帶寬和網絡流量的(音視頻技術篇)

          IM全文檢索技術專題(二):微信移動端的全文檢索多音字問題解決方案

          騰訊技術分享:Android版手機QQ的緩存監控與優化實踐

          微信團隊分享:iOS版微信的高性能通用key-value組件技術實踐

          微信團隊分享:iOS版微信是如何防止特殊字符導致的炸群、APP崩潰的?

          騰訊技術分享:Android手Q的線程死鎖監控系統技術實踐

          微信團隊原創分享:iOS版微信的內存監控系統技術實踐

          讓互聯網更快:新一代QUIC協議在騰訊的技術實踐分享

          iOS后臺喚醒實戰:微信收款到賬語音提醒技術總結

          騰訊技術分享:社交網絡圖片的帶寬壓縮技術演進之路

          微信團隊分享:視頻圖像的超分辨率技術原理和應用場景

          微信團隊分享:微信每日億次實時音視頻聊天背后的技術解密

          QQ音樂團隊分享:Android中的圖片壓縮技術詳解(上篇)

          QQ音樂團隊分享:Android中的圖片壓縮技術詳解(下篇)

          騰訊團隊分享:手機QQ中的人臉識別酷炫動畫效果實現詳解

          騰訊團隊分享 :一次手Q聊天界面中圖片顯示bug的追蹤過程分享

          微信團隊分享:微信Android版小視頻編碼填過的那些坑

          IM全文檢索技術專題(一):微信移動端的全文檢索優化之路

          企業微信客戶端中組織架構數據的同步更新方案優化實戰

          微信團隊披露:微信界面卡死超級bug“15。。。。”的來龍去脈

          QQ 18年:解密8億月活的QQ后臺服務接口隔離技術

          月活8.89億的超級IM微信是如何進行Android端兼容測試的

          以手機QQ為例探討移動端IM中的“輕應用”

          一篇文章get微信開源移動端數據庫組件WCDB的一切!

          微信客戶端團隊負責人技術訪談:如何著手客戶端性能監控和優化

          微信后臺基于時間序的海量數據冷熱分級架構設計實踐

          微信團隊原創分享:Android版微信的臃腫之困與模塊化實踐之路

          微信后臺團隊:微信后臺異步消息隊列的優化升級實踐分享

          微信團隊原創分享:微信客戶端SQLite數據庫損壞修復實踐

          騰訊原創分享(一):如何大幅提升移動網絡下手機QQ的圖片傳輸速度和成功率

          騰訊原創分享(二):如何大幅壓縮移動網絡下APP的流量消耗(下篇)

          騰訊原創分享(三):如何大幅壓縮移動網絡下APP的流量消耗(上篇)

          微信Mars:微信內部正在使用的網絡層封裝庫,即將開源

          如約而至:微信自用的移動端IM網絡層跨平臺組件庫Mars已正式開源

          開源libco庫:單機千萬連接、支撐微信8億用戶的后臺框架基石 [源碼下載]

          微信新一代通信安全解決方案:基于TLS1.3的MMTLS詳解

          微信團隊原創分享:Android版微信后臺保活實戰分享(進程保活篇)

          微信團隊原創分享:Android版微信后臺保活實戰分享(網絡保活篇)

          Android版微信從300KB到30MB的技術演進(PPT講稿) [附件下載]

          微信團隊原創分享:Android版微信從300KB到30MB的技術演進

          微信技術總監談架構:微信之道——大道至簡(演講全文)

          微信技術總監談架構:微信之道——大道至簡(PPT講稿) [附件下載]

          如何解讀《微信技術總監談架構:微信之道——大道至簡》

          微信海量用戶背后的后臺系統存儲架構(視頻+PPT) [附件下載]

          微信異步化改造實踐:8億月活、單機千萬連接背后的后臺解決方案

          微信朋友圈海量技術之道PPT [附件下載]

          微信對網絡影響的技術試驗及分析(論文全文)

          一份微信后臺技術架構的總結性筆記

          架構之道:3個程序員成就微信朋友圈日均10億發布量[有視頻]

          快速裂變:見證微信強大后臺架構從0到1的演進歷程(一)

          快速裂變:見證微信強大后臺架構從0到1的演進歷程(二)

          微信團隊原創分享:Android內存泄漏監控和優化技巧總結

          全面總結iOS版微信升級iOS9遇到的各種“坑”

          微信團隊原創資源混淆工具:讓你的APK立減1M

          微信團隊原創Android資源混淆工具:AndResGuard [有源碼]

          Android版微信安裝包“減肥”實戰記錄

          iOS版微信安裝包“減肥”實戰記錄

          移動端IM實踐:iOS版微信界面卡頓監測方案

          微信“紅包照片”背后的技術難題

          移動端IM實踐:iOS版微信小視頻功能技術方案實錄

          移動端IM實踐:Android版微信如何大幅提升交互性能(一)

          移動端IM實踐:Android版微信如何大幅提升交互性能(二)

          移動端IM實踐:實現Android版微信的智能心跳機制

          移動端IM實踐:WhatsApp、Line、微信的心跳策略分析

          移動端IM實踐:谷歌消息推送服務(GCM)研究(來自微信)

          移動端IM實踐:iOS版微信的多設備字體適配方案探討

          信鴿團隊原創:一起走過 iOS10 上消息推送(APNS)的坑

          騰訊信鴿技術分享:百億級實時消息推送的實戰經驗

          IPv6技術詳解:基本概念、應用現狀、技術實踐(上篇)

          IPv6技術詳解:基本概念、應用現狀、技術實踐(下篇)

          騰訊TEG團隊原創:基于MySQL的分布式數據庫TDSQL十年鍛造經驗分享

          微信多媒體團隊訪談:音視頻開發的學習、微信的音視頻技術和挑戰等

          了解iOS消息推送一文就夠:史上最全iOS Push技術詳解

          騰訊技術分享:微信小程序音視頻技術背后的故事

          騰訊資深架構師干貨總結:一文讀懂大型分布式系統設計的方方面面

          微信多媒體團隊梁俊斌訪談:聊一聊我所了解的音視頻技術

          騰訊音視頻實驗室:使用AI黑科技實現超低碼率的高清實時視頻聊天

          騰訊技術分享:微信小程序音視頻與WebRTC互通的技術思路和實踐

          手把手教你讀取Android版微信和手Q的聊天記錄(僅作技術研究學習)

          微信技術分享:微信的海量IM聊天消息序列號生成實踐(算法原理篇)

          微信技術分享:微信的海量IM聊天消息序列號生成實踐(容災方案篇)

          騰訊技術分享:GIF動圖技術詳解及手機QQ動態表情壓縮技術實踐

          微信團隊分享:Kotlin漸被認可,Android版微信的技術嘗鮮之旅

          社交軟件紅包技術解密(一):全面解密QQ紅包技術方案——架構、技術實現等

          社交軟件紅包技術解密(二):解密微信搖一搖紅包從0到1的技術演進

          社交軟件紅包技術解密(三):微信搖一搖紅包雨背后的技術細節

          社交軟件紅包技術解密(四):微信紅包系統是如何應對高并發的

          社交軟件紅包技術解密(五):微信紅包系統是如何實現高可用性的

          社交軟件紅包技術解密(六):微信紅包系統的存儲層架構演進實踐

          社交軟件紅包技術解密(九):談談手Q紅包的功能邏輯、容災、運維、架構等

          社交軟件紅包技術解密(十):手Q客戶端針對2020年春節紅包的技術實踐

          社交軟件紅包技術解密(十一):解密微信紅包隨機算法(含代碼實現)

          社交軟件紅包技術解密(十三):微信團隊首次揭秘微信紅包算法,為何你搶到的是0.01元

          QQ設計團隊分享:新版 QQ 8.0 語音消息改版背后的功能設計思路

          微信團隊分享:極致優化,iOS版微信編譯速度3倍提升的實踐總結

          IM“掃一掃”功能很好做?看看微信“掃一掃識物”的完整技術實現

          微信團隊分享:微信支付代碼重構帶來的移動端軟件架構上的思考

          IM開發寶典:史上最全,微信各種功能參數和邏輯規則資料匯總

          微信團隊分享:微信直播聊天室單房間1500萬在線的消息架構演進之路

          企業微信的IM架構設計揭秘:消息模型、萬人群、已讀回執、消息撤回等

          IM全文檢索技術專題(四):微信iOS端的最新全文檢索技術優化實踐

          微信團隊分享:微信后臺在海量并發請求下是如何做到不崩潰的

          微信Windows端IM消息數據庫的優化實踐:查詢慢、體積大、文件損壞等

          微信技術分享:揭秘微信后臺安全特征數據倉庫的架構設計

          IM跨平臺技術學習(九):全面解密新QQ桌面版的Electron內存優化實踐

          企業微信針對百萬級組織架構的客戶端性能優化實踐

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

          微信團隊分享:詳解iOS版微信視頻號直播中因幀率異常導致的功耗問題

          微信團隊分享:微信后端海量數據查詢從1000ms降到100ms的技術實踐

          大型IM工程重構實踐:企業微信Android端的重構之路

          IM技術干貨:假如你來設計微信的群聊,你該怎么設計?

          微信團隊分享:來看看微信十年前的IM消息收發架構,你做到了嗎

          長連接網關技術專題(十一):揭秘騰訊公網TGW網關系統的技術架構演進

          總是被低估,從未被超越,揭秘QQ極致絲滑背后的硬核IM技術優化

          首次公開,最新手機QQ客戶端架構的技術演進實踐

          大型IM穩定性監測實踐:手Q客戶端性能防劣化系統的建設之路

          附錄2:QQ、微信的技術故事

          技術往事:微信估值已超5千億,雷軍曾有機會收編張小龍及其Foxmail

          QQ和微信兇猛成長的背后:騰訊網絡基礎架構的這些年

          閑話即時通訊:騰訊的成長史本質就是一部QQ成長史

          2017微信數據報告:日活躍用戶達9億、日發消息380億條

          騰訊開發微信花了多少錢?技術難度真這么大?難在哪?

          技術往事:創業初期的騰訊——16年前的冬天,誰動了馬化騰的代碼

          技術往事:史上最全QQ圖標變遷過程,追尋IM巨人的演進歷史

          技術往事:“QQ群”和“微信紅包”是怎么來的?

          開發往事:深度講述2010到2015,微信一路風雨的背后

          開發往事:微信千年不變的那張閃屏圖片的由來

          開發往事:記錄微信3.0版背后的故事(距微信1.0發布9個月時)

          一個微信實習生自述:我眼中的微信開發團隊

          首次揭秘:QQ實時視頻聊天背后的神秘組織

          為什么說即時通訊社交APP創業就是一個坑?

          微信七年回顧:歷經多少質疑和差評,才配擁有今天的強大

          前創始團隊成員分享:盤點微信的前世今生——微信成功的必然和偶然

          即時通訊創業必讀:解密微信的產品定位、創新思維、設計法則等

          QQ的成功,遠沒有你想象的那么順利和輕松

          QQ現狀深度剖析:你還認為QQ已經被微信打敗了嗎?

          [技術腦洞] 如果把14億中國人拉到一個微信群里技術上能實現嗎?

          QQ和微信止步不前,意味著即時通訊社交應用創業的第2春已來?

          那些年微信開發過的雞肋功能,及其帶給我們的思考

          讀懂微信:從1.0到7.0版本,一個主流IM社交工具的進化史

          同為IM社交產品中的王者,QQ與微信到底有什么區別

          還原真實的騰訊:從最不被看好,到即時通訊巨頭的草根創業史

          QQ設計團隊分享:新版 QQ 8.0 語音消息改版背后的功能設計思路

          社交應用教父級人物的張小龍和馬化騰的同與不同

          專訪馬化騰:首次開談個人經歷、管理心得、技術創新、微信的誕生等

          一文讀懂微信之父張小龍:失敗天才、顛覆者、獨裁者、人性操控師


          (本文已同步發布于:http://www.52im.net/thread-200-1-1.html



          作者:Jack Jiang (點擊作者姓名進入Github)
          出處:http://www.52im.net/space-uid-1.html
          交流:歡迎加入即時通訊開發交流群 215891622
          討論:http://www.52im.net/
          Jack Jiang同時是【原創Java Swing外觀工程BeautyEye】【輕量級移動端即時通訊框架MobileIMSDK】的作者,可前往下載交流。
          本博文 歡迎轉載,轉載請注明出處(也可前往 我的52im.net 找到我)。


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          Jack Jiang的 Mail: jb2011@163.com, 聯系QQ: 413980957, 微信: hellojackjiang
          主站蜘蛛池模板: 平利县| 元阳县| 黑山县| 澳门| 昌宁县| 南华县| 邹平县| 麻城市| 紫金县| 册亨县| 三亚市| 华容县| 吉木乃县| 含山县| 天水市| 大宁县| 九龙城区| 咸宁市| 广元市| 区。| 繁昌县| 扶余县| 聂荣县| 临邑县| 渭南市| 微博| 栖霞市| 江山市| 行唐县| 山丹县| 长岛县| 杭锦旗| 岳西县| 普安县| 方山县| 邯郸市| 新宾| 潜江市| 新津县| 六盘水市| 鹤壁市|