第3章
:潮起------------------------------------------. 無聲的轟鳴,兒童節(jié),星期二。。。,然后,一行行日志開始滾動(dòng):[1999-06-01 03:17:22] 微聊服務(wù)器v1.0.0啟動(dòng)...[1999-06-01 03:17:23] 加載配置文件...完成[1999-06-01 03:17:25] 初始化數(shù)據(jù)庫(kù)連接池(10個(gè)連接)...完成[1999-06-01 03:17:28] 啟動(dòng)MQP協(xié)議***(端口: 8888)...完成[1999-06-01 03:17:30] 啟動(dòng)**** API服務(wù)(端口: 8080)...完成[1999-06-01 03:17:31] 系統(tǒng)就緒,沒有掌聲,沒有發(fā)布會(huì)。,兩臺(tái)嗡嗡作響的服務(wù)器,和兩個(gè)熬紅了眼的年輕人?!斑@就……上線了?”梁龍的聲音在顫抖?!吧暇€了?!背逃羁】炕匾伪?,閉上眼。整整五十八天,他們睡在這個(gè)沒有窗戶的地下室里,像鼴鼠一樣活在黑暗中。五十八天,他寫了十七萬行代碼,梁龍畫了四百多個(gè)界面原型,林薇介紹來的那個(gè)北郵研究生葉文瀾——一個(gè)瘦高、戴厚眼鏡、說話會(huì)結(jié)巴的技術(shù)天才——幫忙優(yōu)化了數(shù)據(jù)庫(kù)索引,把查詢速度提升了三十倍。
現(xiàn)在,這個(gè)叫“微聊”的玩意兒,就這么悄無聲息地,接入了1999年那還稚嫩得可笑的中國(guó)互聯(lián)網(wǎng)。
“我去發(fā)帖?!绷糊埓蜷_電腦,登錄水木清華**S。這是他這半個(gè)月來每天必做的事——在各大高校論壇、技術(shù)社區(qū)、甚至一些早期的個(gè)人網(wǎng)站上,發(fā)布關(guān)于微聊的帖子。沒有華麗的廣告詞,只有最簡(jiǎn)單的描述:
“微聊:一個(gè)更快的聊天工具。下載地址:www.weichat.com”
是的,程宇俊花了五百塊錢,注冊(cè)了這個(gè)域名。在1999年,.com域名還像野草一樣隨處可摘,沒人能想到,幾年后它們會(huì)變成天價(jià)。
“等等?!背逃羁『鋈徽f。
梁龍停下手。
“改一下?!背逃羁”犻_眼睛,那雙眼睛里有一種梁龍讀不懂的情緒,“不要寫‘更快’。寫……‘在這里,遇見你想遇見的人’?!?br>梁龍愣了一下,然后點(diǎn)頭,敲下這行字。
凌晨四點(diǎn),第一篇帖子發(fā)出去了。
接下來的四十八小時(shí),是程宇俊人生中最漫長(zhǎng)的四十八小時(shí)。
他和梁龍、葉文瀾三個(gè)人,輪流盯著服務(wù)器監(jiān)控面板。那是一個(gè)簡(jiǎn)陋的網(wǎng)頁(yè),用綠色數(shù)字顯示當(dāng)前在線用戶數(shù)、消息發(fā)送頻率、服務(wù)器負(fù)載。
0。
0。
0。
三個(gè)零,像三只嘲諷的眼睛。
第一天結(jié)束,下載量:37。在線用戶峰值:3。
葉文瀾——那個(gè)北郵研究生——推了推眼鏡,小聲說:“其實(shí)……已經(jīng)很好了。我?guī)熜肿龅哪莻€(gè)郵件系統(tǒng),上線一周才七個(gè)用戶……”
“不夠?!背逃羁〈驍嗨斑h(yuǎn)遠(yuǎn)不夠。”
第二天,下載量上升到102。在線用戶峰值達(dá)到19。
這19個(gè)人,在微聊的服務(wù)器上留下了第一條群聊記錄——那是一個(gè)叫“計(jì)算機(jī)愛好者”的聊天室,是程宇俊預(yù)設(shè)的幾個(gè)公開聊天室之一。聊天記錄滾得飛快:
“有人嗎?”
“這玩意兒比OICQ快啊?!?br>“界面太丑了?!?br>“但傳文件確實(shí)快,我剛試了,一張圖片三秒就過去了?!?br>“你們是哪兒的?”
“北大的。”
“清華的?!?br>“我是科大的,在合肥?!?br>天南地北的年輕人,因?yàn)橐痪洹案臁钡膹V告語,聚在了這個(gè)簡(jiǎn)陋的聊天室里。程宇俊看著那些滾動(dòng)的文字,手指在膝蓋上輕輕敲擊。
他知道,種子已經(jīng)埋下了。
第三天,下載量:314。
第七天,下載量:1024。
當(dāng)服務(wù)器面板上的“當(dāng)前在線用戶”第一次突破一百時(shí),梁龍?zhí)似饋恚^撞到了地下室低矮的天花板。他捂著腦袋,卻在大笑:“一百!一百個(gè)人!”
程宇俊沒有笑。他盯著負(fù)載曲線——當(dāng)在線用戶數(shù)達(dá)到一百二十時(shí),服務(wù)器CPU使用率飆升到了87%。如果再高,就會(huì)觸發(fā)他設(shè)置的閾值,自動(dòng)啟動(dòng)限流機(jī)制。
“文瀾,”他說,“數(shù)據(jù)庫(kù)連接數(shù)調(diào)成二十。還有,把消息日志從實(shí)時(shí)寫入改成異步批量寫入,每五秒寫一次磁盤?!?br>“可……可這樣如果服務(wù)器崩潰,會(huì)丟失五秒的數(shù)據(jù)?!比~文瀾遲疑。
“不會(huì)崩潰?!背逃羁≌f,“按我說的做?!?br>他比任何人都清楚,在這個(gè)時(shí)代,穩(wěn)定性比數(shù)據(jù)完整性更重要。用戶無法忍受“服務(wù)器忙,請(qǐng)稍后再試”的提示,但可以忍受偶爾丟失一兩條消息——反正現(xiàn)在,人們還沒把網(wǎng)絡(luò)聊天看得那么重要。
或者說,還沒有人意識(shí)到,這些在光纖和銅纜中流動(dòng)的0和1,有一天會(huì)成為比記憶更可靠的憑證。
六月十五日,事情開始起變化。
那天早上,程宇俊被葉文瀾推醒——自從上線后,他們?nèi)司蛯?shí)行了“三班倒”,每人睡八小時(shí),另外十六小時(shí)盯著服務(wù)器。但程宇俊的“八小時(shí)”通常只有四五個(gè)小時(shí)。
“宇……宇俊,”葉文瀾的聲音在抖,“你看?!?br>監(jiān)控面板上,在線用戶數(shù):512。
而且還在上升。
530,550,570……
“怎么回事?”程宇俊問。
“不……不知道。”葉文瀾指著另一臺(tái)電腦,那是他們用來監(jiān)控網(wǎng)絡(luò)輿情的——其實(shí)就是幾個(gè)主要**S的自動(dòng)刷新頁(yè)面,“但水木清華上,有人發(fā)了個(gè)帖子?!?br>程宇俊湊過去。
帖子標(biāo)題很簡(jiǎn)單:《推薦一個(gè)神器:微聊》。
發(fā)帖人ID叫“風(fēng)清揚(yáng)”,是水木清華**S的資深版主,在技術(shù)圈子里很有聲望。帖子內(nèi)容也不長(zhǎng):
“試用了幾天,說幾點(diǎn)感受:
速度確實(shí)快,消息幾乎是秒到,比OICQ快一個(gè)數(shù)量級(jí)
傳文件方便,直接拖拽就行
有個(gè)‘朋友圈’功能,雖然現(xiàn)在還簡(jiǎn)陋,但理念很有意思——你可以看到朋友發(fā)的狀態(tài),還能評(píng)論
最**的是技術(shù)架構(gòu)。我是做系統(tǒng)運(yùn)維的,用工具測(cè)了一下他們的服務(wù)器響應(yīng)時(shí)間,平均12毫秒。12毫秒什么概念?國(guó)內(nèi)99%的網(wǎng)站做不到。
缺點(diǎn)也有:界面丑,功能少,沒頭像,不能自定義表情。
但如果你是技術(shù)愛好者,或者純粹受夠了OICQ的卡頓,可以試試。
下載地址:www.weichat.com
PS:我不是托,純粹自來水?!?br>帖子下面,已經(jīng)跟了三百多條回復(fù)。
“試了,確實(shí)快?!?br>“已下載?!?br>“求邀請(qǐng)碼——等等,這玩意兒居然不需要邀請(qǐng)碼?直接注冊(cè)就行?良心??!”
“樓主,他們的服務(wù)器是怎么做到這么高并發(fā)的?求技術(shù)分析?!?br>“我在**,用著也很快,他們服務(wù)器是放***的嗎?”
程宇俊一條條看下去,手指微微發(fā)抖。
不是因?yàn)榧?dòng)。
是因?yàn)榭謶帧?br>他太知道“病毒式傳播”的威力了。在2023年,一個(gè)爆款產(chǎn)品可以在二十四小時(shí)內(nèi)獲取百萬用戶。但在1999年,在網(wǎng)速以K計(jì)、網(wǎng)民總數(shù)剛破四百萬的中國(guó),這種增長(zhǎng)速度,會(huì)摧毀一切。
“文瀾,”他的聲音出奇地冷靜,“關(guān)掉新用戶注冊(cè)。”
“什么?”葉文瀾愣住了。
“關(guān)掉?,F(xiàn)在,立刻?!?br>“可……可是……”
“沒有可是?!背逃羁∫呀?jīng)坐到了電腦前,手指在鍵盤上飛舞,“我們的服務(wù)器撐不住。按照這個(gè)增長(zhǎng)速度,今天中午之前,在線用戶就會(huì)突破兩千。而我們的服務(wù)器,極限是三千?!?br>他敲下回車鍵。
一行命令發(fā)出去,**的注冊(cè)接口被暫時(shí)關(guān)閉了。
監(jiān)控面板上,新用戶增長(zhǎng)曲線,戛然而止。
梁龍正好從外面回來,手里提著三份煎餅果子。他看到屏幕,也愣住了:“怎么了?服務(wù)器崩了?”
“我關(guān)了注冊(cè)?!背逃羁≌f。
“你瘋了?!”梁龍幾乎跳起來,“現(xiàn)在正是漲用戶的時(shí)候!那個(gè)‘風(fēng)清揚(yáng)’的帖子,現(xiàn)在全中國(guó)的技術(shù)圈都在看!”
“所以更要關(guān)?!背逃羁∫Я艘豢诩屣灩?,食不知味,“如果現(xiàn)在不關(guān),等用戶沖到一萬、兩萬,服務(wù)器崩了,那才叫真的完了。用戶不會(huì)給你第二次機(jī)會(huì)。”
他轉(zhuǎn)向葉文瀾:
“我們需要至少三臺(tái)新服務(wù)器,做負(fù)載均衡。數(shù)據(jù)庫(kù)要主從分離,讀寫分開。消息隊(duì)列要獨(dú)立部署……這些,需要多少錢?”
葉文瀾在心里飛快地計(jì)算:“租……租的話,一個(gè)月大概……三四萬。買的話……”
“租?!背逃羁≌f,“我們沒時(shí)間等采購(gòu)、上架、調(diào)試。直接租,今天就要?!?br>“可我們賬上……”
“還有九十五萬?!背逃羁≌f,“花。該花的時(shí)候,一分都不能省?!?br>他看向梁龍:“小龍,你去找林薇,讓她幫忙聯(lián)系中關(guān)村最好的IDC機(jī)房。錢不是問題,但我要求今天下午五點(diǎn)前,三臺(tái)服務(wù)器要到位,網(wǎng)絡(luò)要通?!?br>梁龍張了張嘴,想說什么,但最終只是點(diǎn)點(diǎn)頭,轉(zhuǎn)身沖出了地下室。
葉文瀾小聲問:“那……那用戶那邊怎么辦?論壇上肯定會(huì)有人問為什么不能注冊(cè)了?!?br>程宇俊想了想,打開微聊的**,發(fā)了一條全站公告:
“因服務(wù)器升級(jí),暫停新用戶注冊(cè)24小時(shí)?,F(xiàn)有用戶聊天功能不受影響。感謝支持,明天見?!?br>簡(jiǎn)潔,直接,沒有道歉,沒有解釋。
因?yàn)樗溃谶@個(gè)時(shí)代,技術(shù)本身就是最好的解釋。
下午四點(diǎn),梁龍回來了,渾身是汗。
“搞定了?!彼嗔艘淮罂谒?,“林薇找了她表哥——她表哥在中關(guān)村一家IDC公司當(dāng)技術(shù)總監(jiān)。給了我們?nèi)_(tái)最好的機(jī)器,雙CPU,1G內(nèi)存——你知道1G內(nèi)存現(xiàn)在多貴嗎?還專門劃了一個(gè)百兆獨(dú)享帶寬給我們。一個(gè)月……五萬。”
“值得。”程宇俊說。
“可我們的錢……”梁龍欲言又止。
“錢的事,我有辦法?!背逃羁】戳丝幢?,“文瀾,你留在這里,盯著現(xiàn)有服務(wù)器,別出問題。小龍,你跟我出去一趟?!?br>“去哪兒?”
“銀行?!?br>北京工商銀行海淀支行,貴賓室。
還是上次那個(gè)戴眼鏡的阿姨。她認(rèn)出了程宇俊,推了推眼鏡:“又是你。取錢還是存錢?”
“貸款。”程宇俊說。
阿姨愣了一下:“貸多少?”
“五十萬。”
“用什么抵押?”
“大程科技有限公司的股份?!背逃羁∵f上一份文件——那是他昨晚熬夜準(zhǔn)備的:公司營(yíng)業(yè)執(zhí)照副本、高新技術(shù)企業(yè)認(rèn)定證書、微聊服務(wù)器監(jiān)控?cái)?shù)據(jù)打印件、水木清華**S上那個(gè)帖子的截圖,以及一份簡(jiǎn)單的商業(yè)計(jì)劃書。
阿姨翻看著,眉頭越皺越緊。
“年輕人,不是我不幫你。”她把文件推回來,“你這些東西……太虛了。什么‘用戶數(shù)’、‘日活’、‘留存率’……銀行只認(rèn)固定資產(chǎn)抵押。房子、車子、存款,或者有實(shí)力的第三方擔(dān)保。你有嗎?”
程宇俊沉默了幾秒鐘。
“沒有。”他說,“我只有這個(gè)。”
他又遞過去一樣?xùn)|西。
那是一張軟盤。
阿姨愣住了:“這是……”
“微聊的安裝程序,和**管理系統(tǒng)。”程宇俊說,“您現(xiàn)在就可以讓銀行的電腦工程師看一下。如果覺得這東西一文不值,我轉(zhuǎn)身就走。”
阿姨盯著他看了很久,然后拿起桌上的電話:“小王,你來一下?!?br>十分鐘后,一個(gè)三十多歲的男人走進(jìn)來,戴著厚厚的眼鏡,一看就是技術(shù)人員。阿姨把軟盤遞給他:“你看看,這東西……有價(jià)值嗎?”
男人接過軟盤,在貴賓室的電腦上打開。他先是粗略瀏覽了界面,然后點(diǎn)開**,看到了實(shí)時(shí)的監(jiān)控?cái)?shù)據(jù):當(dāng)前在線用戶數(shù),已經(jīng)穩(wěn)定在八百左右;消息發(fā)送頻率,每分鐘超過兩千條。
男人的手停在了鼠標(biāo)上。
“這是……你們做的?”他看向程宇俊,眼神里充滿了震驚。
“是?!?br>“這架構(gòu)……這并發(fā)……”男人喃喃自語,“你們用的是什么數(shù)據(jù)庫(kù)?Oracle?SQL ******?”
“MySQL?!背逃羁≌f,“開源數(shù)據(jù)庫(kù),免費(fèi)?!?br>“不可能!”男人失聲,“MySQL我了解,根本撐不住這個(gè)并發(fā)量!你們肯定做了深度優(yōu)化……等等,這個(gè)連接池的配置……”
他開始一行行看配置文件,越看越激動(dòng)。
阿姨輕咳了一聲:“小王,說結(jié)論。這東西,值五十萬嗎?”
小王抬起頭,眼睛里閃著光:“值!太值了!劉主任,您知道現(xiàn)在外面有多少公司想找這種即時(shí)通訊技術(shù)嗎?我上周去參加一個(gè)技術(shù)交流會(huì),**那邊有家公司,就做了一個(gè)比這差得多的東西,已經(jīng)拿到兩百萬投資了!”
貴賓室里安靜下來。
窗外的陽(yáng)光斜**來,灰塵在光柱中飛舞。
阿姨看著程宇俊,看了足足一分鐘。
然后,她拿起鋼筆,在那份貸款申請(qǐng)書上,簽下了自己的名字。
“五十萬,一年期,基準(zhǔn)利率上浮20%?!彼f,“這是我權(quán)限內(nèi)能批的最大額度。但年輕人,我有個(gè)條件?!?br>“您說?!?br>“這筆錢,必須用在公司發(fā)展上?!卑⒁陶卵坨R,揉了揉鼻梁,“我兒子和你差不多大,去年大學(xué)畢業(yè)后,也說要去搞互聯(lián)網(wǎng)。我不同意,硬逼著他進(jìn)了國(guó)企?,F(xiàn)在他每天上班,就像在坐牢?!?br>她重新戴上眼鏡:
“所以,好好干。讓我看看,你們這些年輕人,到底能把這個(gè)世界,變成什么樣子?!?br>程宇俊接過那份簽好字的文件,深深鞠了一躬:
“謝謝?!?br>走出銀行時(shí),已是傍晚。夕陽(yáng)把整個(gè)北京城染成金色。長(zhǎng)安街上的車流像金色的河流,自行車鈴聲響成一片,路邊的音像店里在放樸樹的《那些花兒》。
“她剛才說她兒子……”梁龍小聲說。
“嗯?!背逃羁】粗掷锏馁J款合同,“每個(gè)時(shí)代,都有被辜負(fù)的夢(mèng)想?!?br>“那我們……”
“我們不會(huì)辜負(fù)?!背逃羁“押贤⌒牡胤胚M(jìn)背包,“因?yàn)槲覀円呀?jīng)沒有退路了?!?br>三臺(tái)新服務(wù)器在當(dāng)天晚上十點(diǎn)上線。
葉文瀾熬紅了眼睛,在機(jī)房和地下室之間來回跑。程宇俊重寫了負(fù)載均衡的配置,把用戶按地域分流:北方用戶走北京機(jī)房,南方用戶走他在**臨時(shí)租的一臺(tái)服務(wù)器——那是一個(gè)網(wǎng)吧老板友情提供的,條件是免費(fèi)給他網(wǎng)吧的所有機(jī)器裝上微聊。
凌晨?jī)牲c(diǎn),一切就緒。
程宇俊重新打開了新用戶注冊(cè)。
然后,他做了一個(gè)決定。
“文瀾,”他說,“把‘朋友圈’功能,正式開放?!?br>“現(xiàn)……現(xiàn)在?”葉文瀾吃了一驚,“那個(gè)功能還有很多*ug,圖片上傳經(jīng)常失敗,評(píng)論……”
“就現(xiàn)在?!背逃羁〉穆曇舨蝗葜靡?,“而且,加一個(gè)功能:用戶發(fā)朋友圈時(shí),可以選擇同步到**空間——如果我們檢測(cè)到用戶也登錄了**的話。”
梁龍倒抽一口冷氣:“俊哥,你這是……要挖**的墻角?”
“不,”程宇俊說,“是給他們一個(gè)選擇?!?br>他太清楚了。1999年的OICQ,還沒有“**空間”這個(gè)概念。**的所有精力都放在核心的聊天功能上,放在如何應(yīng)對(duì)用戶暴漲帶來的服務(wù)器壓力上。他們還沒有意識(shí)到,社交網(wǎng)絡(luò)的核心,不是“通訊”,而是“分享”。
而他要做的,就是在這個(gè)時(shí)間差里,埋下一顆種子。
一顆叫做“社交圖譜”的種子。
第二天,六月十六日。
微聊的注冊(cè)用戶數(shù),突破了一萬。
第三天,兩萬。
**天,四萬。
增長(zhǎng)曲線,不是線性的。是指數(shù)級(jí)的。
每一天,程宇俊、梁龍、葉文瀾三人,都像在打仗。服務(wù)器擴(kuò)容、*ug修復(fù)、用戶反饋處理、論壇**監(jiān)控……他們每人每天睡不到四小時(shí),方便面盒子在地下室里堆成了小山。林薇每天下班后會(huì)過來幫忙,處理一些簡(jiǎn)單的用戶咨詢。有時(shí)候她會(huì)帶些水果,看著三個(gè)胡子拉碴、眼窩深陷的男人狼吞虎咽,她會(huì)轉(zhuǎn)過頭,悄悄擦眼睛。
但她從沒說過“你們休息一下吧”這種話。
因?yàn)樗溃行┐翱谄?,一生只有一次?br>錯(cuò)過了,就再也沒有了。
六月二十五日,微聊上線第二十五天。
注冊(cè)用戶數(shù):十萬。
程宇俊在地下室的墻上,用紅色記號(hào)筆畫下了第十道豎線。每一道,代表一萬用戶。
“十萬……”梁龍坐在地上,背靠著墻,聲音疲憊,但眼睛里閃著光,“俊哥,我們做到了。十萬用戶,在中國(guó)互聯(lián)網(wǎng)史上,能排進(jìn)前十了吧?”
“前五?!比~文瀾推了推眼鏡,他最近說話不那么結(jié)巴了,可能是被高強(qiáng)度的工作逼的,“如果只算獨(dú)立開發(fā)的即時(shí)通訊軟件,我們……我們是第二。第一是OICQ,他們現(xiàn)在應(yīng)該有一百五十萬用戶?!?br>“差十五倍?!绷糊堈f。
“但我們已經(jīng)追上來了?!比~文瀾調(diào)出增長(zhǎng)曲線圖,“我們的日新增用戶,已經(jīng)連續(xù)一周超過OICQ了。如果保持這個(gè)增速,兩個(gè)月內(nèi),我們就能……”
他的話沒說完。
因?yàn)槌逃羁『鋈徽玖似饋怼?br>“不會(huì)保持的?!彼f。
“什么?”
“這個(gè)增速,不會(huì)保持?!背逃羁《⒅鴫ι系哪鞘兰t線,“因?yàn)?*不會(huì)坐視不管。他們一定會(huì)反擊。而且……”
他頓了頓:
“而且我們的服務(wù)器,又快撐不住了?!?br>就像在印證他的話,監(jiān)控面板上,CPU使用率的曲線,又開始緩緩爬升。
85%,87%,90%……
“又得擴(kuò)容?”梁龍哀嚎。
“這次不是擴(kuò)容能解決的?!背逃羁∽叩桨装迩啊鞘撬麄兓ㄎ迨畨K錢買的,現(xiàn)在上面寫滿了密密麻麻的架構(gòu)圖,“我們的架構(gòu)有瓶頸。單靠加服務(wù)器,只是飲鴆止渴。我們需要……”
他拿起馬克筆,在白板上畫了一個(gè)新的框圖。
“重構(gòu)?!?br>六月的最后一周,是在地獄中度過的。
程宇俊決定,在用戶數(shù)突破二十萬之前,必須完成架構(gòu)重構(gòu)。這意味著,他們要在不影響現(xiàn)有用戶的情況下,把整個(gè)系統(tǒng)從“單點(diǎn)架構(gòu)”升級(jí)為“分布式架構(gòu)”。
這在2023年,是一個(gè)中型技術(shù)團(tuán)隊(duì)需要三個(gè)月才能完成的工作。
而現(xiàn)在,1999年,他們只有三個(gè)人,和一個(gè)幾乎不存在的技術(shù)生態(tài)。
程宇俊把自己關(guān)在地下室里,整整四十八小時(shí)沒合眼。他重寫了消息隊(duì)列,引入了發(fā)布-訂閱模式;重寫了數(shù)據(jù)庫(kù)中間件,實(shí)現(xiàn)了自動(dòng)分庫(kù)分表;重寫了緩存層,用內(nèi)存緩存高頻數(shù)據(jù)……
葉文瀾負(fù)責(zé)測(cè)試。這個(gè)北郵研究生展現(xiàn)出了驚人的技術(shù)天賦,他寫了一個(gè)壓力測(cè)試工具,模擬十萬用戶同時(shí)在線,把程宇俊寫的新架構(gòu)逼到了極限,然后找出一個(gè)又一個(gè)隱藏的*ug。
梁龍負(fù)責(zé)“**”。他像個(gè)救火隊(duì)員,在用戶論壇、**郵箱、甚至打來的投訴電話之間穿梭,安撫那些因?yàn)橄到y(tǒng)偶爾卡頓而抱怨的用戶。“在升級(jí),很快就好”,這句話他一天要說上百遍。
七月一日,凌晨四點(diǎn)。
重構(gòu)完成的最后一個(gè)模塊,被部署上線。
程宇俊按下了重啟鍵。
服務(wù)器依次關(guān)機(jī),又依次啟動(dòng)。監(jiān)控面板上的所有數(shù)字歸零,然后,像春天的野草一樣,重新生長(zhǎng)。
1,10,100,1000……
用戶重新登錄,消息重新流動(dòng)。
一切正常。
不,不只是正常。
是“絲滑”。
葉文瀾盯著監(jiān)控?cái)?shù)據(jù),手在抖:“平……平均響應(yīng)時(shí)間,從12毫秒,降到了7毫秒。服務(wù)器CPU使用率,從90%,降到了……降到了45%?!?br>“這意味著,”程文瀾靠在墻上,因?yàn)殚L(zhǎng)時(shí)間站立,腿在發(fā)抖,“我們現(xiàn)在這套架構(gòu),能支撐一百萬用戶同時(shí)在線。”
地下室里一片寂靜。
一百萬。
在1999年,這是一個(gè)天文數(shù)字。全中國(guó)的網(wǎng)民,也才四百萬。
“可我們……我們只有十萬用戶?!绷糊埿÷曊f。
“會(huì)有的?!背逃羁≌f,他的聲音很輕,但異常堅(jiān)定,“一定會(huì)有的?!?br>他走到窗邊——如果那扇貼著地面、只有巴掌大的通氣口能算窗戶的話。外面,天快亮了。1999年7月1日的晨光,正穿透北京的夜空。
“知道今天是什么日子嗎?”他忽然問。
梁龍和葉文瀾對(duì)視一眼,搖頭。
“**回歸兩周年。”程宇俊說,“但更重要的是……”
他轉(zhuǎn)過身,臉上第一次露出了笑容:
“今天,是大學(xué)放暑假的第一天?!?br>程宇俊等的,就是這一天。
過去的半個(gè)月,微聊的用戶增長(zhǎng),主要來自高校。那些最先接觸互聯(lián)網(wǎng)、最有好奇心、也最愿意嘗試新事物的年輕人,是微聊的第一批種子用戶。
而現(xiàn)在,他們放假了。
他們要回家了。
回到那些還沒有通寬帶、還在用撥號(hào)上網(wǎng)、甚至整個(gè)城市只有一兩家網(wǎng)吧的小城、小鎮(zhèn)、小村莊。
他們會(huì)把微聊,帶回去。
帶給他們的高中同學(xué),帶給他們的青梅竹馬,帶給他們?cè)谶h(yuǎn)方的戀人。
病毒式傳播的第二個(gè)階段,開始了。
七月二日,微聊用戶數(shù)突破十五萬。
七月五日,二十萬。
七月十日,三十萬。
增長(zhǎng)曲線,像瘋了一樣向上飆升。
這一次,程宇俊沒有關(guān)停注冊(cè)。因?yàn)樗麄內(nèi)碌募軜?gòu),穩(wěn)穩(wěn)地接住了這波洪流。CPU使用率最高只到60%,內(nèi)存還有余量,網(wǎng)絡(luò)帶寬甚至還沒用滿。
葉文瀾看著監(jiān)控面板,喃喃自語:“這……這不科學(xué)……”
“科學(xué)?!背逃羁≌f,“只是比你想象的,更強(qiáng)大一點(diǎn)?!?br>他打開了**的用戶數(shù)據(jù)分析——這是他花了一周時(shí)間寫的簡(jiǎn)單系統(tǒng),只能統(tǒng)計(jì)最基本的用戶畫像:地域分布、年齡、在線時(shí)長(zhǎng)……
地域分布圖顯示,用戶已經(jīng)從北京、上海、廣州、**這幾個(gè)一線城市,擴(kuò)散到了全國(guó)三十四個(gè)省、自治區(qū)、直轄市。甚至連**、**,都有了星星點(diǎn)點(diǎn)的用戶。
年齡分布,集中在18-25歲。大學(xué)生,剛畢業(yè)的年輕人。
在線時(shí)長(zhǎng),平均每天1.7小時(shí)。這在1999年,是一個(gè)恐怖的數(shù)字——意味著這些用戶,真的把微聊當(dāng)成了日常工具。
而最讓程宇俊在意的,是“朋友圈”功能的滲透率。
超過40%的用戶,至少發(fā)過一條朋友圈。
這意味著,有超過八萬人,已經(jīng)開始在這個(gè)平臺(tái)上,分享他們的生活。
雖然只是最簡(jiǎn)單的文字——“今天下雨了食堂的菜好難吃想家了”——但這是起點(diǎn)。
社交網(wǎng)絡(luò)的起點(diǎn)。
七月十五日,用戶數(shù)突破五十萬。
程宇俊接到了一個(gè)電話。
來電顯示是**的號(hào)碼。
他接起來,對(duì)方是一個(gè)聲音沉穩(wěn)的中年男人:
“請(qǐng)問是程宇俊先生嗎?”
“我是?!?br>“我是**公司的首席技術(shù)官,張志東?!睂?duì)方說,“我們關(guān)注到微聊最近的增長(zhǎng)速度很快。不知道程先生有沒有興趣,來**聊一聊?”
地下室里,空氣凝固了。
梁龍和葉文瀾都停下了手里的動(dòng)作,看向程宇俊。
程宇俊握著聽筒,手指關(guān)節(jié)微微發(fā)白。
他知道這一天會(huì)來,但沒想到來得這么快。
“聊什么?”他問,聲音平靜。
“聊合作的可能性。”張志東說,“**很欣賞微聊的技術(shù)架構(gòu),尤其是你們的‘朋友圈’功能,很有創(chuàng)意。我們覺得,也許我們可以找到一種方式,讓雙方的優(yōu)勢(shì)互補(bǔ)?!?br>話說得很客氣,但程宇俊聽懂了潛臺(tái)詞。
**,這個(gè)未來的巨無霸,已經(jīng)注意到了這只從北京地下室爬出來的小螞蟻。
而且,他們想**,或者,消滅。
“抱歉,張先生?!背逃羁≌f,“我們暫時(shí)沒有出售公司的計(jì)劃?!?br>電話那頭沉默了幾秒。
“我理解。”張志東的聲音依然溫和,“但程先生,互聯(lián)網(wǎng)行業(yè)變化很快。今天的朋友,明天可能就是對(duì)手。**希望和所有優(yōu)秀的團(tuán)隊(duì)合作,而不是競(jìng)爭(zhēng)?!?br>“我也是這么想的。”程宇俊說。
“那……”
“所以,”程宇俊打斷他,“如果**有興趣,可以投資我們。我們正在準(zhǔn)備第一輪融資?!?br>這一次,沉默的時(shí)間更長(zhǎng)。
“投資?”張志東似乎笑了,“程先生,你知道**現(xiàn)在有多少用戶嗎?”
“一百五十萬左右。”程宇俊說。
“你知道**的估值是多少嗎?”
“不知道。”程宇俊說,“但我知道,微聊的用戶增長(zhǎng)速度,是**的三倍。而且,我們的用戶粘性更高,朋友圈功能的日均使用時(shí)長(zhǎng),是純聊天工具的兩倍。”
他頓了頓,補(bǔ)充道:
“張先生,我尊敬**,尊敬馬化騰先生。但互聯(lián)網(wǎng)的世界很大,容得下不止一個(gè)通訊工具。與其想著**我們,不如想想,怎么一起把蛋糕做大?!?br>電話那頭傳來一聲輕微的嘆息。
“程先生,你很年輕,也很有才華?!睆堉緰|說,“但商場(chǎng)如戰(zhàn)場(chǎng)。戰(zhàn)場(chǎng)上,有時(shí)候不是你想不想打,而是不得不打。”
“我明白。”程宇俊說,“所以,我準(zhǔn)備好了?!?br>通話結(jié)束。
程宇俊放下聽筒,才發(fā)現(xiàn)手心里全是汗。
“俊哥……”梁龍欲言又止。
“沒事?!背逃羁≌f,“該來的總會(huì)來。文瀾,我們的‘搖一搖’功能,開發(fā)進(jìn)度怎么樣了?”
“接……接口已經(jīng)寫好了,但GPS模塊……”葉文瀾說。
“不需要GPS?!背逃羁≌f,“用基站定位。雖然精度差,但在城市里,夠用了?!?br>“可這需要和***合作……”
“先做出來。”程宇俊說,“做一個(gè)演示版。下個(gè)月,我要用。”
“下個(gè)月?”葉文瀾驚呼,“可我們連測(cè)試機(jī)都沒有……”
“會(huì)有的?!背逃羁】聪虼巴?。
七月午后的陽(yáng)光,正烈烈地照在北京城上。
而他的戰(zhàn)爭(zhēng),才剛剛開始。
七月三十一日,晚十一點(diǎn)。
程宇俊、梁龍、葉文瀾、林薇,四個(gè)人圍在地下室里那臺(tái)十四寸的顯示器前。
屏幕上,是微聊的**數(shù)據(jù)面板。
注冊(cè)用戶總數(shù):799,843。
還差一百五十七人,到八十萬。
“能到嗎?”林薇小聲問。
“不知道?!绷糊埗⒅聊?,數(shù)字在緩慢跳動(dòng):799,844,799,845……
每一秒,都有新的用戶注冊(cè)。
但距離午夜,只有不到一小時(shí)了。
葉文瀾忽然說:“要不……我們自己注冊(cè)幾個(gè)?”
“不行?!背逃羁u頭,“數(shù)據(jù)要干凈。一就是一,二就是二?!?br>時(shí)間一分一秒流逝。
十一點(diǎn)三十分,799,901。
十一點(diǎn)四十分,799,932。
十一點(diǎn)五十分,799,977。
還差二十三人。
地下室里,安靜得能聽到呼吸聲,和服務(wù)器風(fēng)扇的嗡嗡聲。
十一點(diǎn)五十五分,799,991。
十一點(diǎn)五十八分,799,998。
還差兩個(gè)。
梁龍握緊了拳頭。葉文瀾屏住了呼吸。林薇咬著嘴唇。
十一點(diǎn)五十九分三十秒。
799,999。
最后一人。
最后三十秒。
最后二十秒。
十、九、八……
在倒計(jì)時(shí)到“三”的時(shí)候,數(shù)字跳了一下。
800,000。
正好。
1999年7月31日,23:59:57。
微聊注冊(cè)用戶,突破八十萬。
從零到八十萬,兩個(gè)月。
沒有人說話。
沒有人歡呼。
四個(gè)人只是靜靜地看著那個(gè)數(shù)字,看著那個(gè)在1999年的中國(guó)互聯(lián)網(wǎng)史上,足以留下一個(gè)印記的數(shù)字。
然后,程宇俊站起身,走到墻角,拿起一瓶可樂——那是他們唯一能買得起的“慶祝用品”。
他打開瓶蓋,泡沫涌出來。
“敬八十萬?!彼f。
“敬八十萬。”其他三人舉起各自的可樂瓶。
四個(gè)瓶子碰在一起,發(fā)出清脆的響聲。
窗外,1999年8月1日的鐘聲,正在響起。
一個(gè)新的月份,開始了。
而他們知道,更艱難的戰(zhàn)斗,還在后面。
但至少在這一刻,在這個(gè)十平米的地下室里,他們可以相信:
未來,是他們的。
現(xiàn)在,這個(gè)叫“微聊”的玩意兒,就這么悄無聲息地,接入了1999年那還稚嫩得可笑的中國(guó)互聯(lián)網(wǎng)。
“我去發(fā)帖?!绷糊埓蜷_電腦,登錄水木清華**S。這是他這半個(gè)月來每天必做的事——在各大高校論壇、技術(shù)社區(qū)、甚至一些早期的個(gè)人網(wǎng)站上,發(fā)布關(guān)于微聊的帖子。沒有華麗的廣告詞,只有最簡(jiǎn)單的描述:
“微聊:一個(gè)更快的聊天工具。下載地址:www.weichat.com”
是的,程宇俊花了五百塊錢,注冊(cè)了這個(gè)域名。在1999年,.com域名還像野草一樣隨處可摘,沒人能想到,幾年后它們會(huì)變成天價(jià)。
“等等?!背逃羁『鋈徽f。
梁龍停下手。
“改一下?!背逃羁”犻_眼睛,那雙眼睛里有一種梁龍讀不懂的情緒,“不要寫‘更快’。寫……‘在這里,遇見你想遇見的人’?!?br>梁龍愣了一下,然后點(diǎn)頭,敲下這行字。
凌晨四點(diǎn),第一篇帖子發(fā)出去了。
接下來的四十八小時(shí),是程宇俊人生中最漫長(zhǎng)的四十八小時(shí)。
他和梁龍、葉文瀾三個(gè)人,輪流盯著服務(wù)器監(jiān)控面板。那是一個(gè)簡(jiǎn)陋的網(wǎng)頁(yè),用綠色數(shù)字顯示當(dāng)前在線用戶數(shù)、消息發(fā)送頻率、服務(wù)器負(fù)載。
0。
0。
0。
三個(gè)零,像三只嘲諷的眼睛。
第一天結(jié)束,下載量:37。在線用戶峰值:3。
葉文瀾——那個(gè)北郵研究生——推了推眼鏡,小聲說:“其實(shí)……已經(jīng)很好了。我?guī)熜肿龅哪莻€(gè)郵件系統(tǒng),上線一周才七個(gè)用戶……”
“不夠?!背逃羁〈驍嗨斑h(yuǎn)遠(yuǎn)不夠。”
第二天,下載量上升到102。在線用戶峰值達(dá)到19。
這19個(gè)人,在微聊的服務(wù)器上留下了第一條群聊記錄——那是一個(gè)叫“計(jì)算機(jī)愛好者”的聊天室,是程宇俊預(yù)設(shè)的幾個(gè)公開聊天室之一。聊天記錄滾得飛快:
“有人嗎?”
“這玩意兒比OICQ快啊?!?br>“界面太丑了?!?br>“但傳文件確實(shí)快,我剛試了,一張圖片三秒就過去了?!?br>“你們是哪兒的?”
“北大的。”
“清華的?!?br>“我是科大的,在合肥?!?br>天南地北的年輕人,因?yàn)橐痪洹案臁钡膹V告語,聚在了這個(gè)簡(jiǎn)陋的聊天室里。程宇俊看著那些滾動(dòng)的文字,手指在膝蓋上輕輕敲擊。
他知道,種子已經(jīng)埋下了。
第三天,下載量:314。
第七天,下載量:1024。
當(dāng)服務(wù)器面板上的“當(dāng)前在線用戶”第一次突破一百時(shí),梁龍?zhí)似饋恚^撞到了地下室低矮的天花板。他捂著腦袋,卻在大笑:“一百!一百個(gè)人!”
程宇俊沒有笑。他盯著負(fù)載曲線——當(dāng)在線用戶數(shù)達(dá)到一百二十時(shí),服務(wù)器CPU使用率飆升到了87%。如果再高,就會(huì)觸發(fā)他設(shè)置的閾值,自動(dòng)啟動(dòng)限流機(jī)制。
“文瀾,”他說,“數(shù)據(jù)庫(kù)連接數(shù)調(diào)成二十。還有,把消息日志從實(shí)時(shí)寫入改成異步批量寫入,每五秒寫一次磁盤?!?br>“可……可這樣如果服務(wù)器崩潰,會(huì)丟失五秒的數(shù)據(jù)?!比~文瀾遲疑。
“不會(huì)崩潰?!背逃羁≌f,“按我說的做?!?br>他比任何人都清楚,在這個(gè)時(shí)代,穩(wěn)定性比數(shù)據(jù)完整性更重要。用戶無法忍受“服務(wù)器忙,請(qǐng)稍后再試”的提示,但可以忍受偶爾丟失一兩條消息——反正現(xiàn)在,人們還沒把網(wǎng)絡(luò)聊天看得那么重要。
或者說,還沒有人意識(shí)到,這些在光纖和銅纜中流動(dòng)的0和1,有一天會(huì)成為比記憶更可靠的憑證。
六月十五日,事情開始起變化。
那天早上,程宇俊被葉文瀾推醒——自從上線后,他們?nèi)司蛯?shí)行了“三班倒”,每人睡八小時(shí),另外十六小時(shí)盯著服務(wù)器。但程宇俊的“八小時(shí)”通常只有四五個(gè)小時(shí)。
“宇……宇俊,”葉文瀾的聲音在抖,“你看?!?br>監(jiān)控面板上,在線用戶數(shù):512。
而且還在上升。
530,550,570……
“怎么回事?”程宇俊問。
“不……不知道。”葉文瀾指著另一臺(tái)電腦,那是他們用來監(jiān)控網(wǎng)絡(luò)輿情的——其實(shí)就是幾個(gè)主要**S的自動(dòng)刷新頁(yè)面,“但水木清華上,有人發(fā)了個(gè)帖子?!?br>程宇俊湊過去。
帖子標(biāo)題很簡(jiǎn)單:《推薦一個(gè)神器:微聊》。
發(fā)帖人ID叫“風(fēng)清揚(yáng)”,是水木清華**S的資深版主,在技術(shù)圈子里很有聲望。帖子內(nèi)容也不長(zhǎng):
“試用了幾天,說幾點(diǎn)感受:
速度確實(shí)快,消息幾乎是秒到,比OICQ快一個(gè)數(shù)量級(jí)
傳文件方便,直接拖拽就行
有個(gè)‘朋友圈’功能,雖然現(xiàn)在還簡(jiǎn)陋,但理念很有意思——你可以看到朋友發(fā)的狀態(tài),還能評(píng)論
最**的是技術(shù)架構(gòu)。我是做系統(tǒng)運(yùn)維的,用工具測(cè)了一下他們的服務(wù)器響應(yīng)時(shí)間,平均12毫秒。12毫秒什么概念?國(guó)內(nèi)99%的網(wǎng)站做不到。
缺點(diǎn)也有:界面丑,功能少,沒頭像,不能自定義表情。
但如果你是技術(shù)愛好者,或者純粹受夠了OICQ的卡頓,可以試試。
下載地址:www.weichat.com
PS:我不是托,純粹自來水?!?br>帖子下面,已經(jīng)跟了三百多條回復(fù)。
“試了,確實(shí)快?!?br>“已下載?!?br>“求邀請(qǐng)碼——等等,這玩意兒居然不需要邀請(qǐng)碼?直接注冊(cè)就行?良心??!”
“樓主,他們的服務(wù)器是怎么做到這么高并發(fā)的?求技術(shù)分析?!?br>“我在**,用著也很快,他們服務(wù)器是放***的嗎?”
程宇俊一條條看下去,手指微微發(fā)抖。
不是因?yàn)榧?dòng)。
是因?yàn)榭謶帧?br>他太知道“病毒式傳播”的威力了。在2023年,一個(gè)爆款產(chǎn)品可以在二十四小時(shí)內(nèi)獲取百萬用戶。但在1999年,在網(wǎng)速以K計(jì)、網(wǎng)民總數(shù)剛破四百萬的中國(guó),這種增長(zhǎng)速度,會(huì)摧毀一切。
“文瀾,”他的聲音出奇地冷靜,“關(guān)掉新用戶注冊(cè)。”
“什么?”葉文瀾愣住了。
“關(guān)掉?,F(xiàn)在,立刻?!?br>“可……可是……”
“沒有可是?!背逃羁∫呀?jīng)坐到了電腦前,手指在鍵盤上飛舞,“我們的服務(wù)器撐不住。按照這個(gè)增長(zhǎng)速度,今天中午之前,在線用戶就會(huì)突破兩千。而我們的服務(wù)器,極限是三千?!?br>他敲下回車鍵。
一行命令發(fā)出去,**的注冊(cè)接口被暫時(shí)關(guān)閉了。
監(jiān)控面板上,新用戶增長(zhǎng)曲線,戛然而止。
梁龍正好從外面回來,手里提著三份煎餅果子。他看到屏幕,也愣住了:“怎么了?服務(wù)器崩了?”
“我關(guān)了注冊(cè)?!背逃羁≌f。
“你瘋了?!”梁龍幾乎跳起來,“現(xiàn)在正是漲用戶的時(shí)候!那個(gè)‘風(fēng)清揚(yáng)’的帖子,現(xiàn)在全中國(guó)的技術(shù)圈都在看!”
“所以更要關(guān)?!背逃羁∫Я艘豢诩屣灩?,食不知味,“如果現(xiàn)在不關(guān),等用戶沖到一萬、兩萬,服務(wù)器崩了,那才叫真的完了。用戶不會(huì)給你第二次機(jī)會(huì)。”
他轉(zhuǎn)向葉文瀾:
“我們需要至少三臺(tái)新服務(wù)器,做負(fù)載均衡。數(shù)據(jù)庫(kù)要主從分離,讀寫分開。消息隊(duì)列要獨(dú)立部署……這些,需要多少錢?”
葉文瀾在心里飛快地計(jì)算:“租……租的話,一個(gè)月大概……三四萬。買的話……”
“租?!背逃羁≌f,“我們沒時(shí)間等采購(gòu)、上架、調(diào)試。直接租,今天就要?!?br>“可我們賬上……”
“還有九十五萬?!背逃羁≌f,“花。該花的時(shí)候,一分都不能省?!?br>他看向梁龍:“小龍,你去找林薇,讓她幫忙聯(lián)系中關(guān)村最好的IDC機(jī)房。錢不是問題,但我要求今天下午五點(diǎn)前,三臺(tái)服務(wù)器要到位,網(wǎng)絡(luò)要通?!?br>梁龍張了張嘴,想說什么,但最終只是點(diǎn)點(diǎn)頭,轉(zhuǎn)身沖出了地下室。
葉文瀾小聲問:“那……那用戶那邊怎么辦?論壇上肯定會(huì)有人問為什么不能注冊(cè)了?!?br>程宇俊想了想,打開微聊的**,發(fā)了一條全站公告:
“因服務(wù)器升級(jí),暫停新用戶注冊(cè)24小時(shí)?,F(xiàn)有用戶聊天功能不受影響。感謝支持,明天見?!?br>簡(jiǎn)潔,直接,沒有道歉,沒有解釋。
因?yàn)樗溃谶@個(gè)時(shí)代,技術(shù)本身就是最好的解釋。
下午四點(diǎn),梁龍回來了,渾身是汗。
“搞定了?!彼嗔艘淮罂谒?,“林薇找了她表哥——她表哥在中關(guān)村一家IDC公司當(dāng)技術(shù)總監(jiān)。給了我們?nèi)_(tái)最好的機(jī)器,雙CPU,1G內(nèi)存——你知道1G內(nèi)存現(xiàn)在多貴嗎?還專門劃了一個(gè)百兆獨(dú)享帶寬給我們。一個(gè)月……五萬。”
“值得。”程宇俊說。
“可我們的錢……”梁龍欲言又止。
“錢的事,我有辦法?!背逃羁】戳丝幢?,“文瀾,你留在這里,盯著現(xiàn)有服務(wù)器,別出問題。小龍,你跟我出去一趟?!?br>“去哪兒?”
“銀行?!?br>北京工商銀行海淀支行,貴賓室。
還是上次那個(gè)戴眼鏡的阿姨。她認(rèn)出了程宇俊,推了推眼鏡:“又是你。取錢還是存錢?”
“貸款。”程宇俊說。
阿姨愣了一下:“貸多少?”
“五十萬。”
“用什么抵押?”
“大程科技有限公司的股份?!背逃羁∵f上一份文件——那是他昨晚熬夜準(zhǔn)備的:公司營(yíng)業(yè)執(zhí)照副本、高新技術(shù)企業(yè)認(rèn)定證書、微聊服務(wù)器監(jiān)控?cái)?shù)據(jù)打印件、水木清華**S上那個(gè)帖子的截圖,以及一份簡(jiǎn)單的商業(yè)計(jì)劃書。
阿姨翻看著,眉頭越皺越緊。
“年輕人,不是我不幫你。”她把文件推回來,“你這些東西……太虛了。什么‘用戶數(shù)’、‘日活’、‘留存率’……銀行只認(rèn)固定資產(chǎn)抵押。房子、車子、存款,或者有實(shí)力的第三方擔(dān)保。你有嗎?”
程宇俊沉默了幾秒鐘。
“沒有。”他說,“我只有這個(gè)。”
他又遞過去一樣?xùn)|西。
那是一張軟盤。
阿姨愣住了:“這是……”
“微聊的安裝程序,和**管理系統(tǒng)。”程宇俊說,“您現(xiàn)在就可以讓銀行的電腦工程師看一下。如果覺得這東西一文不值,我轉(zhuǎn)身就走。”
阿姨盯著他看了很久,然后拿起桌上的電話:“小王,你來一下?!?br>十分鐘后,一個(gè)三十多歲的男人走進(jìn)來,戴著厚厚的眼鏡,一看就是技術(shù)人員。阿姨把軟盤遞給他:“你看看,這東西……有價(jià)值嗎?”
男人接過軟盤,在貴賓室的電腦上打開。他先是粗略瀏覽了界面,然后點(diǎn)開**,看到了實(shí)時(shí)的監(jiān)控?cái)?shù)據(jù):當(dāng)前在線用戶數(shù),已經(jīng)穩(wěn)定在八百左右;消息發(fā)送頻率,每分鐘超過兩千條。
男人的手停在了鼠標(biāo)上。
“這是……你們做的?”他看向程宇俊,眼神里充滿了震驚。
“是?!?br>“這架構(gòu)……這并發(fā)……”男人喃喃自語,“你們用的是什么數(shù)據(jù)庫(kù)?Oracle?SQL ******?”
“MySQL?!背逃羁≌f,“開源數(shù)據(jù)庫(kù),免費(fèi)?!?br>“不可能!”男人失聲,“MySQL我了解,根本撐不住這個(gè)并發(fā)量!你們肯定做了深度優(yōu)化……等等,這個(gè)連接池的配置……”
他開始一行行看配置文件,越看越激動(dòng)。
阿姨輕咳了一聲:“小王,說結(jié)論。這東西,值五十萬嗎?”
小王抬起頭,眼睛里閃著光:“值!太值了!劉主任,您知道現(xiàn)在外面有多少公司想找這種即時(shí)通訊技術(shù)嗎?我上周去參加一個(gè)技術(shù)交流會(huì),**那邊有家公司,就做了一個(gè)比這差得多的東西,已經(jīng)拿到兩百萬投資了!”
貴賓室里安靜下來。
窗外的陽(yáng)光斜**來,灰塵在光柱中飛舞。
阿姨看著程宇俊,看了足足一分鐘。
然后,她拿起鋼筆,在那份貸款申請(qǐng)書上,簽下了自己的名字。
“五十萬,一年期,基準(zhǔn)利率上浮20%?!彼f,“這是我權(quán)限內(nèi)能批的最大額度。但年輕人,我有個(gè)條件?!?br>“您說?!?br>“這筆錢,必須用在公司發(fā)展上?!卑⒁陶卵坨R,揉了揉鼻梁,“我兒子和你差不多大,去年大學(xué)畢業(yè)后,也說要去搞互聯(lián)網(wǎng)。我不同意,硬逼著他進(jìn)了國(guó)企?,F(xiàn)在他每天上班,就像在坐牢?!?br>她重新戴上眼鏡:
“所以,好好干。讓我看看,你們這些年輕人,到底能把這個(gè)世界,變成什么樣子?!?br>程宇俊接過那份簽好字的文件,深深鞠了一躬:
“謝謝?!?br>走出銀行時(shí),已是傍晚。夕陽(yáng)把整個(gè)北京城染成金色。長(zhǎng)安街上的車流像金色的河流,自行車鈴聲響成一片,路邊的音像店里在放樸樹的《那些花兒》。
“她剛才說她兒子……”梁龍小聲說。
“嗯?!背逃羁】粗掷锏馁J款合同,“每個(gè)時(shí)代,都有被辜負(fù)的夢(mèng)想?!?br>“那我們……”
“我們不會(huì)辜負(fù)?!背逃羁“押贤⌒牡胤胚M(jìn)背包,“因?yàn)槲覀円呀?jīng)沒有退路了?!?br>三臺(tái)新服務(wù)器在當(dāng)天晚上十點(diǎn)上線。
葉文瀾熬紅了眼睛,在機(jī)房和地下室之間來回跑。程宇俊重寫了負(fù)載均衡的配置,把用戶按地域分流:北方用戶走北京機(jī)房,南方用戶走他在**臨時(shí)租的一臺(tái)服務(wù)器——那是一個(gè)網(wǎng)吧老板友情提供的,條件是免費(fèi)給他網(wǎng)吧的所有機(jī)器裝上微聊。
凌晨?jī)牲c(diǎn),一切就緒。
程宇俊重新打開了新用戶注冊(cè)。
然后,他做了一個(gè)決定。
“文瀾,”他說,“把‘朋友圈’功能,正式開放?!?br>“現(xiàn)……現(xiàn)在?”葉文瀾吃了一驚,“那個(gè)功能還有很多*ug,圖片上傳經(jīng)常失敗,評(píng)論……”
“就現(xiàn)在?!背逃羁〉穆曇舨蝗葜靡?,“而且,加一個(gè)功能:用戶發(fā)朋友圈時(shí),可以選擇同步到**空間——如果我們檢測(cè)到用戶也登錄了**的話。”
梁龍倒抽一口冷氣:“俊哥,你這是……要挖**的墻角?”
“不,”程宇俊說,“是給他們一個(gè)選擇?!?br>他太清楚了。1999年的OICQ,還沒有“**空間”這個(gè)概念。**的所有精力都放在核心的聊天功能上,放在如何應(yīng)對(duì)用戶暴漲帶來的服務(wù)器壓力上。他們還沒有意識(shí)到,社交網(wǎng)絡(luò)的核心,不是“通訊”,而是“分享”。
而他要做的,就是在這個(gè)時(shí)間差里,埋下一顆種子。
一顆叫做“社交圖譜”的種子。
第二天,六月十六日。
微聊的注冊(cè)用戶數(shù),突破了一萬。
第三天,兩萬。
**天,四萬。
增長(zhǎng)曲線,不是線性的。是指數(shù)級(jí)的。
每一天,程宇俊、梁龍、葉文瀾三人,都像在打仗。服務(wù)器擴(kuò)容、*ug修復(fù)、用戶反饋處理、論壇**監(jiān)控……他們每人每天睡不到四小時(shí),方便面盒子在地下室里堆成了小山。林薇每天下班后會(huì)過來幫忙,處理一些簡(jiǎn)單的用戶咨詢。有時(shí)候她會(huì)帶些水果,看著三個(gè)胡子拉碴、眼窩深陷的男人狼吞虎咽,她會(huì)轉(zhuǎn)過頭,悄悄擦眼睛。
但她從沒說過“你們休息一下吧”這種話。
因?yàn)樗溃行┐翱谄?,一生只有一次?br>錯(cuò)過了,就再也沒有了。
六月二十五日,微聊上線第二十五天。
注冊(cè)用戶數(shù):十萬。
程宇俊在地下室的墻上,用紅色記號(hào)筆畫下了第十道豎線。每一道,代表一萬用戶。
“十萬……”梁龍坐在地上,背靠著墻,聲音疲憊,但眼睛里閃著光,“俊哥,我們做到了。十萬用戶,在中國(guó)互聯(lián)網(wǎng)史上,能排進(jìn)前十了吧?”
“前五?!比~文瀾推了推眼鏡,他最近說話不那么結(jié)巴了,可能是被高強(qiáng)度的工作逼的,“如果只算獨(dú)立開發(fā)的即時(shí)通訊軟件,我們……我們是第二。第一是OICQ,他們現(xiàn)在應(yīng)該有一百五十萬用戶?!?br>“差十五倍?!绷糊堈f。
“但我們已經(jīng)追上來了?!比~文瀾調(diào)出增長(zhǎng)曲線圖,“我們的日新增用戶,已經(jīng)連續(xù)一周超過OICQ了。如果保持這個(gè)增速,兩個(gè)月內(nèi),我們就能……”
他的話沒說完。
因?yàn)槌逃羁『鋈徽玖似饋怼?br>“不會(huì)保持的?!彼f。
“什么?”
“這個(gè)增速,不會(huì)保持?!背逃羁《⒅鴫ι系哪鞘兰t線,“因?yàn)?*不會(huì)坐視不管。他們一定會(huì)反擊。而且……”
他頓了頓:
“而且我們的服務(wù)器,又快撐不住了?!?br>就像在印證他的話,監(jiān)控面板上,CPU使用率的曲線,又開始緩緩爬升。
85%,87%,90%……
“又得擴(kuò)容?”梁龍哀嚎。
“這次不是擴(kuò)容能解決的?!背逃羁∽叩桨装迩啊鞘撬麄兓ㄎ迨畨K錢買的,現(xiàn)在上面寫滿了密密麻麻的架構(gòu)圖,“我們的架構(gòu)有瓶頸。單靠加服務(wù)器,只是飲鴆止渴。我們需要……”
他拿起馬克筆,在白板上畫了一個(gè)新的框圖。
“重構(gòu)?!?br>六月的最后一周,是在地獄中度過的。
程宇俊決定,在用戶數(shù)突破二十萬之前,必須完成架構(gòu)重構(gòu)。這意味著,他們要在不影響現(xiàn)有用戶的情況下,把整個(gè)系統(tǒng)從“單點(diǎn)架構(gòu)”升級(jí)為“分布式架構(gòu)”。
這在2023年,是一個(gè)中型技術(shù)團(tuán)隊(duì)需要三個(gè)月才能完成的工作。
而現(xiàn)在,1999年,他們只有三個(gè)人,和一個(gè)幾乎不存在的技術(shù)生態(tài)。
程宇俊把自己關(guān)在地下室里,整整四十八小時(shí)沒合眼。他重寫了消息隊(duì)列,引入了發(fā)布-訂閱模式;重寫了數(shù)據(jù)庫(kù)中間件,實(shí)現(xiàn)了自動(dòng)分庫(kù)分表;重寫了緩存層,用內(nèi)存緩存高頻數(shù)據(jù)……
葉文瀾負(fù)責(zé)測(cè)試。這個(gè)北郵研究生展現(xiàn)出了驚人的技術(shù)天賦,他寫了一個(gè)壓力測(cè)試工具,模擬十萬用戶同時(shí)在線,把程宇俊寫的新架構(gòu)逼到了極限,然后找出一個(gè)又一個(gè)隱藏的*ug。
梁龍負(fù)責(zé)“**”。他像個(gè)救火隊(duì)員,在用戶論壇、**郵箱、甚至打來的投訴電話之間穿梭,安撫那些因?yàn)橄到y(tǒng)偶爾卡頓而抱怨的用戶。“在升級(jí),很快就好”,這句話他一天要說上百遍。
七月一日,凌晨四點(diǎn)。
重構(gòu)完成的最后一個(gè)模塊,被部署上線。
程宇俊按下了重啟鍵。
服務(wù)器依次關(guān)機(jī),又依次啟動(dòng)。監(jiān)控面板上的所有數(shù)字歸零,然后,像春天的野草一樣,重新生長(zhǎng)。
1,10,100,1000……
用戶重新登錄,消息重新流動(dòng)。
一切正常。
不,不只是正常。
是“絲滑”。
葉文瀾盯著監(jiān)控?cái)?shù)據(jù),手在抖:“平……平均響應(yīng)時(shí)間,從12毫秒,降到了7毫秒。服務(wù)器CPU使用率,從90%,降到了……降到了45%?!?br>“這意味著,”程文瀾靠在墻上,因?yàn)殚L(zhǎng)時(shí)間站立,腿在發(fā)抖,“我們現(xiàn)在這套架構(gòu),能支撐一百萬用戶同時(shí)在線。”
地下室里一片寂靜。
一百萬。
在1999年,這是一個(gè)天文數(shù)字。全中國(guó)的網(wǎng)民,也才四百萬。
“可我們……我們只有十萬用戶?!绷糊埿÷曊f。
“會(huì)有的?!背逃羁≌f,他的聲音很輕,但異常堅(jiān)定,“一定會(huì)有的?!?br>他走到窗邊——如果那扇貼著地面、只有巴掌大的通氣口能算窗戶的話。外面,天快亮了。1999年7月1日的晨光,正穿透北京的夜空。
“知道今天是什么日子嗎?”他忽然問。
梁龍和葉文瀾對(duì)視一眼,搖頭。
“**回歸兩周年。”程宇俊說,“但更重要的是……”
他轉(zhuǎn)過身,臉上第一次露出了笑容:
“今天,是大學(xué)放暑假的第一天?!?br>程宇俊等的,就是這一天。
過去的半個(gè)月,微聊的用戶增長(zhǎng),主要來自高校。那些最先接觸互聯(lián)網(wǎng)、最有好奇心、也最愿意嘗試新事物的年輕人,是微聊的第一批種子用戶。
而現(xiàn)在,他們放假了。
他們要回家了。
回到那些還沒有通寬帶、還在用撥號(hào)上網(wǎng)、甚至整個(gè)城市只有一兩家網(wǎng)吧的小城、小鎮(zhèn)、小村莊。
他們會(huì)把微聊,帶回去。
帶給他們的高中同學(xué),帶給他們的青梅竹馬,帶給他們?cè)谶h(yuǎn)方的戀人。
病毒式傳播的第二個(gè)階段,開始了。
七月二日,微聊用戶數(shù)突破十五萬。
七月五日,二十萬。
七月十日,三十萬。
增長(zhǎng)曲線,像瘋了一樣向上飆升。
這一次,程宇俊沒有關(guān)停注冊(cè)。因?yàn)樗麄內(nèi)碌募軜?gòu),穩(wěn)穩(wěn)地接住了這波洪流。CPU使用率最高只到60%,內(nèi)存還有余量,網(wǎng)絡(luò)帶寬甚至還沒用滿。
葉文瀾看著監(jiān)控面板,喃喃自語:“這……這不科學(xué)……”
“科學(xué)?!背逃羁≌f,“只是比你想象的,更強(qiáng)大一點(diǎn)?!?br>他打開了**的用戶數(shù)據(jù)分析——這是他花了一周時(shí)間寫的簡(jiǎn)單系統(tǒng),只能統(tǒng)計(jì)最基本的用戶畫像:地域分布、年齡、在線時(shí)長(zhǎng)……
地域分布圖顯示,用戶已經(jīng)從北京、上海、廣州、**這幾個(gè)一線城市,擴(kuò)散到了全國(guó)三十四個(gè)省、自治區(qū)、直轄市。甚至連**、**,都有了星星點(diǎn)點(diǎn)的用戶。
年齡分布,集中在18-25歲。大學(xué)生,剛畢業(yè)的年輕人。
在線時(shí)長(zhǎng),平均每天1.7小時(shí)。這在1999年,是一個(gè)恐怖的數(shù)字——意味著這些用戶,真的把微聊當(dāng)成了日常工具。
而最讓程宇俊在意的,是“朋友圈”功能的滲透率。
超過40%的用戶,至少發(fā)過一條朋友圈。
這意味著,有超過八萬人,已經(jīng)開始在這個(gè)平臺(tái)上,分享他們的生活。
雖然只是最簡(jiǎn)單的文字——“今天下雨了食堂的菜好難吃想家了”——但這是起點(diǎn)。
社交網(wǎng)絡(luò)的起點(diǎn)。
七月十五日,用戶數(shù)突破五十萬。
程宇俊接到了一個(gè)電話。
來電顯示是**的號(hào)碼。
他接起來,對(duì)方是一個(gè)聲音沉穩(wěn)的中年男人:
“請(qǐng)問是程宇俊先生嗎?”
“我是?!?br>“我是**公司的首席技術(shù)官,張志東?!睂?duì)方說,“我們關(guān)注到微聊最近的增長(zhǎng)速度很快。不知道程先生有沒有興趣,來**聊一聊?”
地下室里,空氣凝固了。
梁龍和葉文瀾都停下了手里的動(dòng)作,看向程宇俊。
程宇俊握著聽筒,手指關(guān)節(jié)微微發(fā)白。
他知道這一天會(huì)來,但沒想到來得這么快。
“聊什么?”他問,聲音平靜。
“聊合作的可能性。”張志東說,“**很欣賞微聊的技術(shù)架構(gòu),尤其是你們的‘朋友圈’功能,很有創(chuàng)意。我們覺得,也許我們可以找到一種方式,讓雙方的優(yōu)勢(shì)互補(bǔ)?!?br>話說得很客氣,但程宇俊聽懂了潛臺(tái)詞。
**,這個(gè)未來的巨無霸,已經(jīng)注意到了這只從北京地下室爬出來的小螞蟻。
而且,他們想**,或者,消滅。
“抱歉,張先生?!背逃羁≌f,“我們暫時(shí)沒有出售公司的計(jì)劃?!?br>電話那頭沉默了幾秒。
“我理解。”張志東的聲音依然溫和,“但程先生,互聯(lián)網(wǎng)行業(yè)變化很快。今天的朋友,明天可能就是對(duì)手。**希望和所有優(yōu)秀的團(tuán)隊(duì)合作,而不是競(jìng)爭(zhēng)?!?br>“我也是這么想的。”程宇俊說。
“那……”
“所以,”程宇俊打斷他,“如果**有興趣,可以投資我們。我們正在準(zhǔn)備第一輪融資?!?br>這一次,沉默的時(shí)間更長(zhǎng)。
“投資?”張志東似乎笑了,“程先生,你知道**現(xiàn)在有多少用戶嗎?”
“一百五十萬左右。”程宇俊說。
“你知道**的估值是多少嗎?”
“不知道。”程宇俊說,“但我知道,微聊的用戶增長(zhǎng)速度,是**的三倍。而且,我們的用戶粘性更高,朋友圈功能的日均使用時(shí)長(zhǎng),是純聊天工具的兩倍。”
他頓了頓,補(bǔ)充道:
“張先生,我尊敬**,尊敬馬化騰先生。但互聯(lián)網(wǎng)的世界很大,容得下不止一個(gè)通訊工具。與其想著**我們,不如想想,怎么一起把蛋糕做大?!?br>電話那頭傳來一聲輕微的嘆息。
“程先生,你很年輕,也很有才華?!睆堉緰|說,“但商場(chǎng)如戰(zhàn)場(chǎng)。戰(zhàn)場(chǎng)上,有時(shí)候不是你想不想打,而是不得不打。”
“我明白。”程宇俊說,“所以,我準(zhǔn)備好了?!?br>通話結(jié)束。
程宇俊放下聽筒,才發(fā)現(xiàn)手心里全是汗。
“俊哥……”梁龍欲言又止。
“沒事?!背逃羁≌f,“該來的總會(huì)來。文瀾,我們的‘搖一搖’功能,開發(fā)進(jìn)度怎么樣了?”
“接……接口已經(jīng)寫好了,但GPS模塊……”葉文瀾說。
“不需要GPS?!背逃羁≌f,“用基站定位。雖然精度差,但在城市里,夠用了?!?br>“可這需要和***合作……”
“先做出來。”程宇俊說,“做一個(gè)演示版。下個(gè)月,我要用。”
“下個(gè)月?”葉文瀾驚呼,“可我們連測(cè)試機(jī)都沒有……”
“會(huì)有的?!背逃羁】聪虼巴?。
七月午后的陽(yáng)光,正烈烈地照在北京城上。
而他的戰(zhàn)爭(zhēng),才剛剛開始。
七月三十一日,晚十一點(diǎn)。
程宇俊、梁龍、葉文瀾、林薇,四個(gè)人圍在地下室里那臺(tái)十四寸的顯示器前。
屏幕上,是微聊的**數(shù)據(jù)面板。
注冊(cè)用戶總數(shù):799,843。
還差一百五十七人,到八十萬。
“能到嗎?”林薇小聲問。
“不知道?!绷糊埗⒅聊?,數(shù)字在緩慢跳動(dòng):799,844,799,845……
每一秒,都有新的用戶注冊(cè)。
但距離午夜,只有不到一小時(shí)了。
葉文瀾忽然說:“要不……我們自己注冊(cè)幾個(gè)?”
“不行?!背逃羁u頭,“數(shù)據(jù)要干凈。一就是一,二就是二?!?br>時(shí)間一分一秒流逝。
十一點(diǎn)三十分,799,901。
十一點(diǎn)四十分,799,932。
十一點(diǎn)五十分,799,977。
還差二十三人。
地下室里,安靜得能聽到呼吸聲,和服務(wù)器風(fēng)扇的嗡嗡聲。
十一點(diǎn)五十五分,799,991。
十一點(diǎn)五十八分,799,998。
還差兩個(gè)。
梁龍握緊了拳頭。葉文瀾屏住了呼吸。林薇咬著嘴唇。
十一點(diǎn)五十九分三十秒。
799,999。
最后一人。
最后三十秒。
最后二十秒。
十、九、八……
在倒計(jì)時(shí)到“三”的時(shí)候,數(shù)字跳了一下。
800,000。
正好。
1999年7月31日,23:59:57。
微聊注冊(cè)用戶,突破八十萬。
從零到八十萬,兩個(gè)月。
沒有人說話。
沒有人歡呼。
四個(gè)人只是靜靜地看著那個(gè)數(shù)字,看著那個(gè)在1999年的中國(guó)互聯(lián)網(wǎng)史上,足以留下一個(gè)印記的數(shù)字。
然后,程宇俊站起身,走到墻角,拿起一瓶可樂——那是他們唯一能買得起的“慶祝用品”。
他打開瓶蓋,泡沫涌出來。
“敬八十萬?!彼f。
“敬八十萬。”其他三人舉起各自的可樂瓶。
四個(gè)瓶子碰在一起,發(fā)出清脆的響聲。
窗外,1999年8月1日的鐘聲,正在響起。
一個(gè)新的月份,開始了。
而他們知道,更艱難的戰(zhàn)斗,還在后面。
但至少在這一刻,在這個(gè)十平米的地下室里,他們可以相信:
未來,是他們的。
閱讀下一章(解鎖全文)
點(diǎn)擊即可暢讀完整版全部?jī)?nèi)容
相關(guān)書籍
友情鏈接