騰訊QQ是用什麼語言寫的?

騰訊QQ的開發分客戶端軟件和服務器端軟件兩部分。 

客戶端採用 Microsoft Visual C++開發; 
服務器端軟件採用Linux gcc開發 ; 
數據庫採用MySql 數據庫。 


騰訊QQ採用標準的TCP/IP協議爲通信協議。 

  TCP/IP協議中又分爲TCP協議和UDP協議,TCP協議是面向連接的協議,它比較安全、穩定,但是效率不高,佔用資源較多。UDP協議是無連接方式的協議,它的效率高,速度快,佔資源少,但是其傳輸機制爲不可靠傳送,必須依靠輔助的算法來完成傳輸控制。QQ採用的通信協議以UDP爲主,輔以TCP協議。由於QQ的服務器設計容量是海量級的應用,一臺服務器要同時容納十幾萬的併發連接,因此服務器端只有採用UDP協議與客戶端進行通訊才能保證這種超大規模的服務。 

  騰訊QQ客戶端之間的消息傳送也採用了UDP模式,這不同於國外的ICQ在客戶端之間採用TCP進行通訊的模式。因爲國內的網絡環境非常複雜,而且很多用戶採用的方式是通過代理服務器共享一條線路上網的方式,在這些複雜的情況下,客戶端之間能彼此建立起來TCP連接的概率較小,嚴重影響傳送信息的效率。而UDP包能夠穿透大部分的代理服務器,因此我們在開發QQ的時候選擇了UDP作爲客戶之間的主要通信協議,因此網友會覺得用QQ傳送信息要比ICQ及其它採用TCP協議的ICQ類軟件快。當然,UDP協議優點突出,缺點也很明顯:UDP包的傳送是不可靠的傳輸,它不象TCP一樣有包重傳等機制,因此採用UDP協議的信息在傳送過程中很容易丟失,這樣就需要輔助的算法實現包重傳機制以保證信息不會丟失,而QQ服務器的負荷非常重,因此在QQ 99b 0425之前我們只是在客戶端到客戶端之間傳送消息時採用了這個輔助的機制,當消息在客戶間直接傳送無法到達時就需要通過服務器來中轉,由於服務器端在老版本的時候迫於負荷過重的壓力沒有對主動發往客戶端的信息進行傳輸控制,因此在老版本的時候容易造成通過服務器中轉的信息丟失的現象。在QQ99c 0725之後我們單獨設立出了幾臺專用的服務器採用包重傳機制來中轉消息(僅限於99c之間傳遞的消息),確保通過服務器轉發的消息也能夠發送到對方的QQ。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章