Jack Jiang

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

          1、前言

          微信——騰訊戰(zhàn)略級產(chǎn)品,創(chuàng)造移動互聯(lián)網(wǎng)增速記錄,10個月5000萬手機用戶,433天之內(nèi)完成用戶數(shù)從零到一億的增長過程,千萬級用戶同時在線,搖一搖每天次數(shù)過億...

          在技術(shù)架構(gòu)上,微信是如何做到的?日前,在騰訊大講堂在中山大學(xué)校園宣講活動上,騰訊廣研助理總經(jīng)理、微信技術(shù)總監(jiān)周顥在兩小時的演講中揭開了微信背后的秘密。

          周顥把微信的成功歸結(jié)于騰訊式的“三位一體”策略:即產(chǎn)品精準(zhǔn)、項目敏捷、技術(shù)支撐。微信的成功是在三個方面的結(jié)合比較好,能夠超出絕大多數(shù)同行或?qū)κ郑沟梦⑿抛叩奖容^前的位置。所謂產(chǎn)品精準(zhǔn),通俗的講就是在恰當(dāng)?shù)臅r機做了恰當(dāng)?shù)氖拢瞥隽酥亓考壒δ埽诤线m的時間以最符合大家需求的方式推出去。他認(rèn)為在整個微信的成功中,產(chǎn)品精準(zhǔn)占了很大一部分權(quán)重。

          技術(shù)交流:

          2、相關(guān)鏈接

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

          如何解讀:如何解讀《微信技術(shù)總監(jiān)談架構(gòu):微信之道——大道至簡》

          3、前于周顥

          周顥

          2001 年畢業(yè)于華南理工大學(xué),計算機專業(yè)碩士。

          2005 年加入騰訊廣州研發(fā)部,歷任 QQ 郵箱架構(gòu)師,

          廣研技術(shù)總監(jiān),T4 技術(shù)專家,微信中心助理總經(jīng)理。

          4、微信的歷程

          5、敏捷是一種態(tài)度:勇于試錯

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

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

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

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

          在海量系統(tǒng)上應(yīng)對項目開發(fā)會有很嚴(yán)謹(jǐn)?shù)囊?guī)范,都說要盡可能少的變化,因為90%-95%的錯誤都是在變更中產(chǎn)生的,如果系統(tǒng)一直不變更會獲得非常高的穩(wěn)定度,但是微信就是要在懸崖邊跳舞。微信的研發(fā)團隊要做一些事情,讓敏捷開發(fā)變得更簡單。

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

          7、大系統(tǒng)小做

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

          大系統(tǒng)小做,混搭模式:

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

          8、一切皆可擴展

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

          擴展的關(guān)鍵點有兩塊:

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

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

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

          大致包括:

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

          9、灰度、灰度、再灰度

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

          騰訊內(nèi)部的上線系統(tǒng):

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

          10、兵法云:古之所謂善戰(zhàn)者,勝于易勝者也

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

          在周顥看來,微信架構(gòu)的技術(shù)復(fù)雜點在四個要點:協(xié)議、容災(zāi)、輕重、監(jiān)控。

          微信架構(gòu):

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

          在協(xié)議設(shè)計上,移動互聯(lián)網(wǎng)和常規(guī)互聯(lián)網(wǎng)有很大的區(qū)別。首先有CMWAP和CMNET的不同,在中國現(xiàn)在有相當(dāng)多的手機用戶使用WMWAP連接,還有就是在線和離線的概念,當(dāng)QQ下線的時候叫離線,當(dāng)你登錄的時候叫在線。但是在移動互聯(lián)網(wǎng)這兩個概念比較模糊。從微信的設(shè)計中,不管在線還是離線系統(tǒng)表現(xiàn)都應(yīng)該是一致的。

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

          此外就是資費敏感的問題,因為移動互聯(lián)網(wǎng)是按照流量計費的,這個計費會使得在協(xié)議設(shè)計中如何最小化傳輸?shù)膯栴}。

          最后就是高延遲的問題。

          對此,業(yè)界標(biāo)準(zhǔn)的解決方案:Messaging And Presence Protocol:1)XMPP;2)SIP/SIMPLE。它的優(yōu)點是簡單,大量開源實現(xiàn)。而缺點同樣明顯:1)流量大:狀態(tài)初始化;2)消息不可靠。

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

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

          11、追求完美設(shè)計的團隊不能勝任海量服務(wù)

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

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

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

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

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

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

          SET模型+雙寫:

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

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

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

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

          接入優(yōu)化:從GSLB到IP重定向

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

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

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

          13、分而治之:把監(jiān)控嵌入基礎(chǔ)框架

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

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

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

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

          14、未來的技術(shù)挑戰(zhàn)

          在談到微信未來的技術(shù)挑戰(zhàn)時,周顥首先希望能夠讓微信成為可用性99.99%的系統(tǒng);設(shè)計出面向現(xiàn)在10倍容量的系統(tǒng)以及完全的IDC容災(zāi)。

          15、寫在后面

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

          附錄1:QQ、微信團隊原創(chuàng)技術(shù)文章匯總

          微信朋友圈千億訪問量背后的技術(shù)挑戰(zhàn)和實踐總結(jié)

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

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

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

          騰訊技術(shù)分享:Android版手機QQ的緩存監(jiān)控與優(yōu)化實踐

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

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

          騰訊技術(shù)分享:Android手Q的線程死鎖監(jiān)控系統(tǒng)技術(shù)實踐

          微信團隊原創(chuàng)分享:iOS版微信的內(nèi)存監(jiān)控系統(tǒng)技術(shù)實踐

          讓互聯(lián)網(wǎng)更快:新一代QUIC協(xié)議在騰訊的技術(shù)實踐分享

          iOS后臺喚醒實戰(zhàn):微信收款到賬語音提醒技術(shù)總結(jié)

          騰訊技術(shù)分享:社交網(wǎng)絡(luò)圖片的帶寬壓縮技術(shù)演進之路

          微信團隊分享:視頻圖像的超分辨率技術(shù)原理和應(yīng)用場景

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

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

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

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

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

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

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

          企業(yè)微信客戶端中組織架構(gòu)數(shù)據(jù)的同步更新方案優(yōu)化實戰(zhàn)

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

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

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

          以手機QQ為例探討移動端IM中的“輕應(yīng)用”

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

          微信客戶端團隊負(fù)責(zé)人技術(shù)訪談:如何著手客戶端性能監(jiān)控和優(yōu)化

          微信后臺基于時間序的海量數(shù)據(jù)冷熱分級架構(gòu)設(shè)計實踐

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

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

          微信團隊原創(chuàng)分享:微信客戶端SQLite數(shù)據(jù)庫損壞修復(fù)實踐

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

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

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

          微信Mars:微信內(nèi)部正在使用的網(wǎng)絡(luò)層封裝庫,即將開源

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

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

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

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

          微信團隊原創(chuàng)分享:Android版微信后臺保活實戰(zhàn)分享(網(wǎng)絡(luò)保活篇)

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

          微信團隊原創(chuàng)分享:Android版微信從300KB到30MB的技術(shù)演進

          微信技術(shù)總監(jiān)談架構(gòu):微信之道——大道至簡(演講全文)

          微信技術(shù)總監(jiān)談架構(gòu):微信之道——大道至簡(PPT講稿) [附件下載]

          如何解讀《微信技術(shù)總監(jiān)談架構(gòu):微信之道——大道至簡》

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

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

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

          微信對網(wǎng)絡(luò)影響的技術(shù)試驗及分析(論文全文)

          一份微信后臺技術(shù)架構(gòu)的總結(jié)性筆記

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

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

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

          微信團隊原創(chuàng)分享:Android內(nèi)存泄漏監(jiān)控和優(yōu)化技巧總結(jié)

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

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

          微信團隊原創(chuàng)Android資源混淆工具:AndResGuard [有源碼]

          Android版微信安裝包“減肥”實戰(zhàn)記錄

          iOS版微信安裝包“減肥”實戰(zhàn)記錄

          移動端IM實踐:iOS版微信界面卡頓監(jiān)測方案

          微信“紅包照片”背后的技術(shù)難題

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

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

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

          移動端IM實踐:實現(xiàn)Android版微信的智能心跳機制

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

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

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

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

          騰訊信鴿技術(shù)分享:百億級實時消息推送的實戰(zhàn)經(jīng)驗

          IPv6技術(shù)詳解:基本概念、應(yīng)用現(xiàn)狀、技術(shù)實踐(上篇)

          IPv6技術(shù)詳解:基本概念、應(yīng)用現(xiàn)狀、技術(shù)實踐(下篇)

          騰訊TEG團隊原創(chuàng):基于MySQL的分布式數(shù)據(jù)庫TDSQL十年鍛造經(jīng)驗分享

          微信多媒體團隊訪談:音視頻開發(fā)的學(xué)習(xí)、微信的音視頻技術(shù)和挑戰(zhàn)等

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

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

          騰訊資深架構(gòu)師干貨總結(jié):一文讀懂大型分布式系統(tǒng)設(shè)計的方方面面

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

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

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

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

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

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

          騰訊技術(shù)分享:GIF動圖技術(shù)詳解及手機QQ動態(tài)表情壓縮技術(shù)實踐

          微信團隊分享:Kotlin漸被認(rèn)可,Android版微信的技術(shù)嘗鮮之旅

          社交軟件紅包技術(shù)解密(一):全面解密QQ紅包技術(shù)方案——架構(gòu)、技術(shù)實現(xiàn)等

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

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

          社交軟件紅包技術(shù)解密(四):微信紅包系統(tǒng)是如何應(yīng)對高并發(fā)的

          社交軟件紅包技術(shù)解密(五):微信紅包系統(tǒng)是如何實現(xiàn)高可用性的

          社交軟件紅包技術(shù)解密(六):微信紅包系統(tǒng)的存儲層架構(gòu)演進實踐

          社交軟件紅包技術(shù)解密(九):談?wù)勈諵紅包的功能邏輯、容災(zāi)、運維、架構(gòu)等

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

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

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

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

          微信團隊分享:極致優(yōu)化,iOS版微信編譯速度3倍提升的實踐總結(jié)

          IM“掃一掃”功能很好做?看看微信“掃一掃識物”的完整技術(shù)實現(xiàn)

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

          IM開發(fā)寶典:史上最全,微信各種功能參數(shù)和邏輯規(guī)則資料匯總

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

          企業(yè)微信的IM架構(gòu)設(shè)計揭秘:消息模型、萬人群、已讀回執(zhí)、消息撤回等

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

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

          微信Windows端IM消息數(shù)據(jù)庫的優(yōu)化實踐:查詢慢、體積大、文件損壞等

          微信技術(shù)分享:揭秘微信后臺安全特征數(shù)據(jù)倉庫的架構(gòu)設(shè)計

          IM跨平臺技術(shù)學(xué)習(xí)(九):全面解密新QQ桌面版的Electron內(nèi)存優(yōu)化實踐

          企業(yè)微信針對百萬級組織架構(gòu)的客戶端性能優(yōu)化實踐

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

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

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

          大型IM工程重構(gòu)實踐:企業(yè)微信Android端的重構(gòu)之路

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

          微信團隊分享:來看看微信十年前的IM消息收發(fā)架構(gòu),你做到了嗎

          長連接網(wǎng)關(guān)技術(shù)專題(十一):揭秘騰訊公網(wǎng)TGW網(wǎng)關(guān)系統(tǒng)的技術(shù)架構(gòu)演進

          總是被低估,從未被超越,揭秘QQ極致絲滑背后的硬核IM技術(shù)優(yōu)化

          首次公開,最新手機QQ客戶端架構(gòu)的技術(shù)演進實踐

          大型IM穩(wěn)定性監(jiān)測實踐:手Q客戶端性能防劣化系統(tǒng)的建設(shè)之路

          附錄2:QQ、微信的技術(shù)故事

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

          QQ和微信兇猛成長的背后:騰訊網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的這些年

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

          2017微信數(shù)據(jù)報告:日活躍用戶達9億、日發(fā)消息380億條

          騰訊開發(fā)微信花了多少錢?技術(shù)難度真這么大?難在哪?

          技術(shù)往事:創(chuàng)業(yè)初期的騰訊——16年前的冬天,誰動了馬化騰的代碼

          技術(shù)往事:史上最全QQ圖標(biāo)變遷過程,追尋IM巨人的演進歷史

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

          開發(fā)往事:深度講述2010到2015,微信一路風(fēng)雨的背后

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

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

          一個微信實習(xí)生自述:我眼中的微信開發(fā)團隊

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

          為什么說即時通訊社交APP創(chuàng)業(yè)就是一個坑?

          微信七年回顧:歷經(jīng)多少質(zhì)疑和差評,才配擁有今天的強大

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

          即時通訊創(chuàng)業(yè)必讀:解密微信的產(chǎn)品定位、創(chuàng)新思維、設(shè)計法則等

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

          QQ現(xiàn)狀深度剖析:你還認(rèn)為QQ已經(jīng)被微信打敗了嗎?

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

          QQ和微信止步不前,意味著即時通訊社交應(yīng)用創(chuàng)業(yè)的第2春已來?

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

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

          同為IM社交產(chǎn)品中的王者,QQ與微信到底有什么區(qū)別

          還原真實的騰訊:從最不被看好,到即時通訊巨頭的草根創(chuàng)業(yè)史

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

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

          專訪馬化騰:首次開談個人經(jīng)歷、管理心得、技術(shù)創(chuàng)新、微信的誕生等

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


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



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


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


          網(wǎng)站導(dǎo)航:
           
          Jack Jiang的 Mail: jb2011@163.com, 聯(lián)系QQ: 413980957, 微信: hellojackjiang
          主站蜘蛛池模板: 汪清县| 安阳市| 阿坝县| 久治县| 中牟县| 乌兰县| 静安区| 宝丰县| 周口市| 耿马| 界首市| 特克斯县| 仙居县| 通海县| 武陟县| 丰原市| 石台县| 铜山县| 江源县| 周宁县| 台山市| 平顶山市| 嘉鱼县| 马龙县| 彝良县| 寿光市| 塔河县| 家居| 元朗区| 乐都县| 库伦旗| 怀柔区| 叙永县| 鹤峰县| 二连浩特市| 登封市| 青川县| 临潭县| 安达市| 喜德县| 中西区|