編程隨記 ---- 拼包程序(四)

編程隨記 ---- 拼包程序(四)
  
    正當自我感覺很好的時候,老大讓我測試一下主幹網捕獲下來的數
據。一測之後,才發覺自己寫的程序根本無法使用。捕獲的數據少的可
憐,甚至幾乎爲零。測試使我徹底冷靜下來。原來拼包程序並不是如我
想象中的那麼簡單。其複雜度來源於拼包程序的應用環境----主幹網。
    主幹網的流量達到了G級別的量級。也就是說每秒鐘至少有幾G的流
量。而其中30%的數據是有效數據,也就是說同時存在的連接數有上百萬
個。而每個連接平均正常保存15秒的話,很顯然,自己寫的程序就無法
有效執行。因爲大多數的連接都被我丟棄了。因爲我寫的程序根本無法
同時維持這麼多的連接,根本無法保存這麼多的數據。很顯然,這個程
序根本無法應用到主幹網上。後來我測試過,只能在校園網這種量級上
運行。而在主幹網上基本無法保存一個有效的連接數據,因爲連接數太
多,前面連接還沒有實現三次握手協議,後面的連接九把它給替換掉了。
這樣,後面到來的前面連接數據就無法正常保存,同樣被丟棄了。於是
幾乎所有的數據都被丟棄了。
    想到這,我才發覺自己一開始忽略的問題----主幹網。確實自己把
這個問題想的太簡單了。在主幹網上,原本不是問題的問題就顯露出來
了。才發覺自己還是沒有考慮周到。也怪自己以前沒有經驗。這時我才
發覺以前做的這個拼包程序都是無用功。而面臨的問題,自己感到很難
解決。感到十分困難。可是更讓我沮喪的是:老大告訴我這個問題他們
已經解決,程序目前在主幹網上運行的好好的。才感到自己沒有想象中
的那麼聰明,自己以前太傲了。太不知天高地厚了。如果當初在寫這個
程序的時候,能夠及時積極的和老大討論一下的話,也許結果就不是這
麼悲慘了。
    後來,老大告訴我解決這個問題的方法。其實網絡上的數據很多是
重複的,所以保存數據所需的空間可以得到節省,通過保留一份,其他
用指針指向即可。還可以採用一些操作系統資源管理的一些算法來管理
內存資源。每個連接只有當來了真實數據後再分配空間,在三次握手的
時候不需要分配空間。分配的空間儘可能少,不夠時再申請。這樣同一
時間能夠同時維護的連接數才能達到上百萬個,甚至更多。
    聽了老大的講解後,自己豁然開朗。以前感覺學操作系統沒什麼用
處。現在才發現,很多經典的東西都來自於操作系統。只是當初沒有這
個意識。看來以後確實需要好好補補這方面的知識。
    等到了解這個問題,到知道怎麼去解決這個問題的時候,才發覺已
經晚了。已經沒時間去重新把這個拼包程序改進了。因爲又有新的工程
要做,又有新的程序要編。而這次暴露出的問題卻有關於程序的框架以
及類的接口與實現剝離的問題。
    只有當真正面臨某個實際問題時,纔會發覺自己的基礎是這麼的不
紮實。只有當真正開始編寫代碼時,才發覺自己沒有掌握的東西和一知
半解的東西。只有真正開始投入某個工程時,才發覺試驗和應用之間的
差距。只有真正跟問題真槍實幹時,纔會發現問題,發現自己的弱點。
    只有不斷地總結,人才會長大。
   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章