顧楓在姐姐寬敞的辦公室里等了快半個(gè)小時(shí)了,實(shí)在閑得發(fā)慌,便隨手拿起桌上的財(cái)經(jīng)雜志翻看著打發(fā)時(shí)間。
就在這時(shí),方薇推開(kāi)門(mén)走了進(jìn)來(lái),準(zhǔn)備給他添水。
“小楓,等急了吧!顧總回公司后又去參加會(huì)議了。好像遇到了挺棘手的技術(shù)問(wèn)題!”
她笑著說(shuō)道:
“據(jù)說(shuō)核心數(shù)據(jù)庫(kù)的并發(fā)鎖出了故障,整個(gè)技術(shù)部都亂成了一團(tuán),這事兒還關(guān)乎下午要簽訂的一個(gè)大訂單!”
顧楓聞言,放下雜志。
數(shù)據(jù)庫(kù)并發(fā)鎖?
這倒勾起了他的興趣。
“會(huì)議室在哪兒?”顧楓站起身。
方薇指了個(gè)方向:
“出門(mén)右轉(zhuǎn)最里面那間。不過(guò)小楓,你現(xiàn)在過(guò)去可能……”
她話(huà)沒(méi)說(shuō)完,顧楓已經(jīng)走了出去。
會(huì)議室是玻璃隔斷的,從外面就能看到里面的情形。
顧楓站在門(mén)外,只見(jiàn)長(zhǎng)條會(huì)議桌旁坐滿(mǎn)了人,個(gè)個(gè)面色凝重。
姐姐坐在主位,手指無(wú)意識(shí)地敲擊著桌面,技術(shù)總監(jiān)趙明站在白板前,額頭上都是汗。
“已經(jīng)三個(gè)小時(shí)了,”
顧雨的聲音透過(guò)玻璃隱隱傳了出來(lái),
“客戶(hù)下午兩點(diǎn)就要看演示,現(xiàn)在系統(tǒng)完全卡死。誰(shuí)能告訴我,到底還要多久?”
一個(gè)戴著厚眼鏡的工程師小聲說(shuō):
“顧總,這個(gè)死鎖很詭異,我們查了所有常規(guī)可能性……”
顧楓輕輕推開(kāi)了門(mén)。
頓時(shí),全會(huì)議室的人都看了過(guò)來(lái)。
技術(shù)部的人大多不認(rèn)識(shí)他,眼神里帶著疑惑和被打斷的不悅。
顧雨看到他,愣了一下:“小楓?你怎么……”
顧楓走到白板前,對(duì)顧雨笑了笑:
“姐,我在外面聽(tīng)到一點(diǎn)。是關(guān)于OLTP系統(tǒng)的行級(jí)鎖死鎖嗎?我剛好最近研究過(guò)類(lèi)似的案例,能讓我看看嗎?”
會(huì)議室里一片寂靜。
技術(shù)總監(jiān)趙明推了推眼鏡,語(yǔ)氣帶著明顯的不信任:“這位是?”
“我弟弟,顧楓!”
顧雨簡(jiǎn)單介紹,然后看向顧楓,眼神里既有期待又有擔(dān)憂(yōu),
“你確定?”
顧楓點(diǎn)點(diǎn)頭,拿起白板筆:“能簡(jiǎn)單描述一下癥狀嗎?”
一個(gè)年輕工程師小聲嘀咕:“外行來(lái)湊什么熱鬧……”
趙明瞪了那人一眼,但還是耐著性子解釋?zhuān)?/p>
“系統(tǒng)在高峰并發(fā)時(shí)會(huì)出現(xiàn)隨機(jī)死鎖,鎖超時(shí)后自動(dòng)解除,但找不到根本原因。我們排查了所有常見(jiàn)的鎖沖突場(chǎng)景,甚至重寫(xiě)了部分事務(wù)代碼,問(wèn)題依然存在!”
顧楓一邊聽(tīng),一邊在白板上畫(huà)了一個(gè)簡(jiǎn)化的數(shù)據(jù)庫(kù)事務(wù)流程圖。
“你們檢查過(guò)索引碎片嗎?”他問(wèn)。
會(huì)議室里幾個(gè)資深工程師聞言都笑了。
趙明搖頭:“第一個(gè)就排查了,索引狀態(tài)完美。”
“那……檢查過(guò)統(tǒng)計(jì)信息更新嗎?”
“每天都自動(dòng)更新。”
另一個(gè)工程師答道,語(yǔ)氣里已經(jīng)帶著不耐煩。
顧楓不以為意,繼續(xù)在白板上寫(xiě)寫(xiě)畫(huà)畫(huà)。
他突然筆尖一頓,像是想起了什么。
“等等,”
顧楓轉(zhuǎn)身面向眾人,“你們用的還是默認(rèn)的鎖超時(shí)設(shè)置?五秒鐘?”
趙明點(diǎn)頭:“這是行業(yè)標(biāo)準(zhǔn)。”
“問(wèn)題就出在這里!”
顧楓在白板上畫(huà)了一個(gè)時(shí)間軸,
“我猜,你們最近升級(jí)了硬件,CPU性能提升了40%以上,對(duì)吧?”
技術(shù)部的人面面相覷。
一個(gè)女工程師驚訝地說(shuō):
“你怎么知道?上個(gè)月剛升級(jí)的服務(wù)器……”
顧楓笑了:
“這就對(duì)了。性能提升導(dǎo)致事務(wù)處理速度加快,原本不會(huì)同時(shí)發(fā)生的鎖請(qǐng)求現(xiàn)在會(huì)在極短時(shí)間內(nèi)連續(xù)發(fā)生。而你們的應(yīng)用層重試機(jī)制……”
他看向趙明,“是在鎖超時(shí)后立即重試,對(duì)嗎?”
趙明愣住了:“這……這是標(biāo)準(zhǔn)做法啊!”
“在低并發(fā)環(huán)境下是標(biāo)準(zhǔn)做法,”
顧楓在白板上寫(xiě)下一串公式,
“但在高并發(fā)、高性能環(huán)境下,這會(huì)形成一個(gè)負(fù)反饋循環(huán)。所有事務(wù)在同一時(shí)間超時(shí),又在同一時(shí)間重試,導(dǎo)致新一輪的鎖沖突!”
他邊說(shuō)邊在白板上快速寫(xiě)下一段偽代碼,展示了一個(gè)簡(jiǎn)單卻極其巧妙的重試算法——
引入隨機(jī)延遲和優(yōu)先級(jí)調(diào)整,完美避開(kāi)了同步重試的陷阱。
會(huì)議室里安靜得只能聽(tīng)見(jiàn)空調(diào)的聲音。
突然,一個(gè)年輕的工程師猛地拍了下桌子:
“對(duì)啊!我怎么沒(méi)想到!這樣就能打破重試的同步性了!”
趙明盯著白板,眼神從疑惑變成震驚,最后變成恍然大悟。
他推了推眼鏡,聲音都有些發(fā)抖:
“這個(gè)思路……太精妙了!我們都被傳統(tǒng)解決方案限制住了!”
顧雨看著白板上簡(jiǎn)潔優(yōu)雅的解決方案,又看看一臉平靜的弟弟,嘴角慢慢上揚(yáng)。
顧楓放下筆,拍拍手上的粉筆灰:
“問(wèn)題應(yīng)該解決了。具體實(shí)現(xiàn)細(xì)節(jié),你們的技術(shù)團(tuán)隊(duì)肯定比我擅長(zhǎng)!”
他轉(zhuǎn)向顧雨,“姐,你們繼續(xù),我回去等你!”
滿(mǎn)會(huì)議室的人都投來(lái)敬畏的目光,顧楓轉(zhuǎn)身離去,順手輕輕帶上了門(mén)。
回到顧雨辦公室,顧楓剛在沙發(fā)上坐下沒(méi)多久,門(mén)就被推開(kāi)了。
趙明帶著幾個(gè)核心技術(shù)骨干站在門(mén)口,臉上還帶著未褪去的興奮:
“顧少,能請(qǐng)教一下,您是怎么想到那個(gè)解決方案的嗎?”
顧楓笑了笑,剛要回答,顧雨也走了進(jìn)來(lái)。
她看著弟弟,眼神里滿(mǎn)是驕傲:
“小楓,你知不知道,你剛才隨手解決的,是一個(gè)價(jià)值三億的訂單?”
顧楓眨眨眼:“現(xiàn)在知道了。”
技術(shù)部的人圍著他又討論了半個(gè)小時(shí)才依依不舍地離開(kāi)。
顧雨關(guān)上門(mén),走到弟弟面前,忍不住揉了揉他的頭發(fā):
“行啊你,深藏不露啊!”
顧楓不好意思地笑笑:“就是剛好研究過(guò)類(lèi)似的問(wèn)題。”
“剛好?”
顧雨挑眉,
“你知道趙明是國(guó)內(nèi)數(shù)據(jù)庫(kù)領(lǐng)域的頂尖專(zhuān)家嗎?他剛才私下跟我說(shuō),你的那個(gè)解決方案,完全可以寫(xiě)成論文發(fā)表。”
顧楓摸摸鼻子,沒(méi)說(shuō)話(huà)。
顧雨在他身邊坐下,表情變得認(rèn)真:
“小楓,有沒(méi)有興趣來(lái)云璟科技?我給你單獨(dú)組建一個(gè)技術(shù)團(tuán)隊(duì),研究方向你定!”
顧楓搖搖頭:
“姐,我還是想先把書(shū)讀完。而且……”
他想起和李默的約定,“我還有些別的事情要做。”
顧雨雖然有些失望,但還是尊重弟弟的選擇:
“好吧!”
隨后她又笑著說(shuō):“也是,你本就是來(lái)跟姐姐學(xué)做生意的!日后,整個(gè)顧家的產(chǎn)業(yè)都要靠你繼承和管理,總把你困在云璟,確實(shí)不太妥當(dāng)!”
這時(shí),顧楓的手機(jī)響了。
他看了一眼,是蘇婷發(fā)來(lái)的消息:“在干嘛?想你了!”
顧楓的嘴角不自覺(jué)地上揚(yáng),快速回復(fù):“在陪我姐。也想你!”
顧雨探頭看了一眼,揶揄道:
“喲,明天才出發(fā)呢,今天就迫不及待了?”
顧楓收起手機(jī),耳朵微紅:
“姐~”
姐弟倆相視一笑,窗外陽(yáng)光正好,又是一個(gè)充滿(mǎn)希望的日子。