官术网_书友最值得收藏!

第33章 面試人才(三)

“C/S架構(gòu)系統(tǒng)應(yīng)用過程中,會(huì)發(fā)生一個(gè)服務(wù)端程序服務(wù)眾多客戶端,用什么技術(shù)手段,提前解決服務(wù)阻塞問題的發(fā)生?”

曹志軍意外地看著李洛,他不是在思考問題的答案,而是在驚訝他對(duì)‘編程’知識(shí)的認(rèn)知程度,眼前這位十八九歲的小老板,根本就是個(gè)技術(shù)大佬,不然,怎么能知道著這種直達(dá)問題核心的技術(shù)難題。

“曹先生,你這么看著我做什么,這個(gè)問題應(yīng)該不難吧!”李洛笑吟吟地看著直愣愣的曹志軍,笑著問。

“這個(gè)問題不難解決,在服務(wù)器編程中有不少解決的方法,比:如多線程、多進(jìn)程、復(fù)用IO,……等等。”曹志軍緩過神來,擺正態(tài)度看著李洛,回答道。

“很好,那你能不說一說多線程怎么解決?在服務(wù)端accept和read都有阻塞程序!”李洛滿意地一笑,接著問。

“嗯,解決思路是這樣的,服務(wù)端同時(shí)處理多個(gè)客戶端請(qǐng)求時(shí),需要處理的情況有很多種,比如,新客戶端等待與服務(wù)端建立連接,已連接客戶端發(fā)送數(shù)據(jù),已連接客戶端斷開連接等等情況,……,如果服務(wù)器采用輪詢阻塞的方式運(yùn)行,那么同一時(shí)刻只能處理一種情況,這時(shí)其他情況發(fā)生就要等待阻塞結(jié)束,……,可以通過鎖,線程間通信,多個(gè)線程間同步等手段,實(shí)現(xiàn)分別處理工作,……。”曹志軍思考了片刻,詳細(xì)介紹道。

“這個(gè)模式可以解決,不過,用這種方式監(jiān)聽多個(gè)客戶端,需要程序在用戶態(tài)和內(nèi)核態(tài)之間來回切換,浪費(fèi)系統(tǒng)資源不說,客戶端的請(qǐng)求也得不到及時(shí)的響應(yīng),當(dāng)客戶端數(shù)量增大時(shí),查詢效率直線下降,……,這個(gè)問題怎么解決?”李洛笑著點(diǎn)頭,續(xù)集拋出一個(gè)問題。

認(rèn)真聽完李洛的提問,曹志軍神情嚴(yán)峻,認(rèn)真思考起來,再次感到對(duì)方的狠辣。

曹志軍思考了十來分鐘,不確定地回答:“使用多路復(fù)用技術(shù),讓內(nèi)核阻塞監(jiān)聽每個(gè)客戶端是否可讀,……,達(dá)到減免用戶態(tài)和內(nèi)核態(tài)之間來回切換!”

李洛點(diǎn)了點(diǎn)頭,贊同道:“不錯(cuò)的思路,不過,如果加入select的使用,你覺得怎么樣,將服務(wù)端自身的socket也加入到select的監(jiān)聽列表中,當(dāng)有新連接到達(dá)時(shí),select會(huì)返回當(dāng)前服務(wù)端socket處于活動(dòng)狀態(tài),這時(shí)處理新連接即可,能避免多線程的擠壓使用……,”

聞言,曹志軍眼前一亮,忍不住贊嘆道:“這個(gè)辦法好,……。”

李洛微微一笑,看著興奮的曹志軍,再次拋出一個(gè)問題:“在系統(tǒng)使用過程中,server端會(huì)出現(xiàn)大量的假死連接,這個(gè)問題你是怎么解決的?”

曹志軍眉頭一皺認(rèn)真思考起來,假死鏈接這個(gè)問題不常見,但是不能說沒有/

c端可以斷線重連s端,但是上一次的連接狀態(tài)依然被s認(rèn)為有效,并且得不到正確釋放,……,具體造成的原因可以參考tcp/ip斷開連接fin過程,如果覺得這種事發(fā)生的概率微不足道,不做任何處理,程序長時(shí)間運(yùn)行后,會(huì)面臨大量假死連接得不到正常釋放,然后服務(wù)器越來越慢,IO處理效率越來越低。

這個(gè)問題怎么解決呢?

曹志軍不由自主地陷入思考,抓著腦門,被這個(gè)問題難住了。

李洛笑呵呵地看著曹志軍,有點(diǎn)喜歡他較真的性格,幾次提問,已經(jīng)能判斷出曹志軍的性格,而是不他的能力。

能力這種東西,后期通過努力的學(xué)習(xí),都能獲得提升,問題是個(gè)人的性格,能不能用心學(xué)習(xí)新技術(shù),是否值得培養(yǎng)才是要不要招他的關(guān)鍵,曹志軍目前為止的表現(xiàn),還算合格。

“假死鏈接可以用兩種方式解決,第一種,對(duì)連接上的套接字做保活處理,即設(shè)置keeplive,此后如果在規(guī)定時(shí)間內(nèi)無數(shù)據(jù)傳輸,那么tcp協(xié)議棧會(huì)自動(dòng)發(fā)送keeplive探測包,以維護(hù)當(dāng)前連接有效性。”李洛笑著提醒,接著又道:“不過,這種解決方法有缺陷,會(huì)出現(xiàn)一些不可控的情況。”

“沒錯(cuò),如果在S端這樣設(shè)置,c端會(huì)意外斷電、網(wǎng)絡(luò)會(huì)異常終止、或者被第三方軟件或防火墻干掉。”曹志軍眼睛一亮,補(bǔ)充道。

停頓了一下,曹志軍迫切地看著李洛,關(guān)心地問:“第二種呢!”

“第二種,在c端定時(shí)發(fā)送用戶層心跳包,s端針對(duì)每個(gè)已連接套接字記錄最后一次收到心跳包的時(shí)間,同時(shí)開啟線程定時(shí)檢測:超過XX秒還未收到心跳包的套接字,kill掉,釋放占用的上下文及收發(fā)緩沖區(qū)資源,……。”李洛笑著介紹。

“對(duì)啊!可以用這個(gè)方法,我怎么沒想到!”曹志軍恍然大悟,懊惱地說。

“可能這個(gè)問題比較偏,你一時(shí)沒想到,我問個(gè)常見的吧!”李洛呵呵一笑,接著道。

“好!”曹志軍興奮地點(diǎn)頭。

……

很快,李洛和曹志軍,一個(gè)提問,一個(gè)回答,有時(shí)候,曹志軍回答不出來的時(shí)候,李洛還會(huì)提個(gè)醒,原本一場面試的畫風(fēng),驟然變成了一場學(xué)術(shù)交流會(huì)。

辦公室里,還有第三人-陳曉雯,她就站在一旁,眼睜睜地看著,驚訝于李洛能跟曹志軍聊的這么嗨,原本,她還擔(dān)憂李洛壓不住場子,要留下來幫忙的,那知會(huì)看到這副局面。

李總在IT知識(shí)領(lǐng)域,完全吊打曹志軍啊!

陳曉雯雙目放光,看著李洛就好像發(fā)現(xiàn)一個(gè)寶藏,藏著巨大的秘密。

然而,兩個(gè)IT男興致勃勃地討論著技術(shù)問題,眼里沒有陳曉雯的存在。

見他們兩技術(shù)話題一個(gè)接著一個(gè),一時(shí)半刻聊不完的樣子,陳曉雯聽不懂他們?cè)谡f什么,默默退出辦公室,順手將玻璃門帶上。

“曉雯姐,關(guān)門干嘛,我哥在里面有事忙嗎?”陳曉雯剛把門關(guān)上,就見李曉芬興沖沖朝跑來,臉上笑容燦爛,好像發(fā)生了什么值得開心的喜事。

“嗯!李總在面一個(gè)重要職位,一時(shí)半會(huì)兒,談不下來。”陳曉雯解釋了一下,好奇地看著李曉芬,問:“咋啦!發(fā)生了什么事!讓你這么開心?”

“嘻!曉雯姐,我偷偷告訴你件事,你不要跟其他同事說哦!”李曉芬開心地點(diǎn)頭,欣喜地將腦袋往陳曉雯身上湊過去。

陳曉雯眼中閃過一絲好奇,附耳傾聽。

主站蜘蛛池模板: 洛宁县| 呼图壁县| 高青县| 阜康市| 长兴县| 兴业县| 元谋县| 宽城| 凤山市| 武川县| 绍兴县| 武宁县| 麻城市| 开封市| 台中县| 霍林郭勒市| 大新县| 大荔县| 龙里县| 两当县| 兴和县| 温州市| 庄河市| 博客| 弥勒县| 华蓥市| 马鞍山市| 丰镇市| 白玉县| 哈尔滨市| 峨边| 红安县| 五家渠市| 洪雅县| 浮山县| 田林县| 马公市| 晴隆县| 明光市| 江油市| 曲周县|