回到深圳是晚上八點。
陳健以為能回去睡覺了,結果被馬化騰直接拉回賽格大廈。十七層的燈光亮得刺眼,十幾個工程師齊刷刷坐在電腦前,像是等著上戰場。
“人都齊了?”馬化騰把包往桌上一扔,“開會。”
五分鐘內,會議室又擠滿了人。有人端著泡麵,有人抱著筆記本,有人眼睛紅得像兔子——顯然又熬了一夜。
張誌東站在白板前,手裡拿著馬克筆。
“群組功能,”他開門見山,“Pony說要做,那就做。先討論技術方案。”
他在白板上畫了幾個框,開始講。
陳健坐在角落裡,努力跟上他的思路。但很快他就放棄了——那些技術術語太多了,什麼TCP/IP、UDP、訊息佇列、併發控製……上輩子他是產品經理,懂點皮毛,但真正落到程式碼層麵,他完全抓瞎。
但他注意到一件事。
張誌東畫的那個架構圖裡,訊息是“廣播”的——一個人發訊息,伺服器複製N份,發給群裡的N個人。
陳健皺了皺眉。
“Tony,”他忽然開口,“這樣會不會太浪費?”
張誌東停下來,看著他。
“怎麼說?”
“如果群裡有100個人,一個人發訊息,伺服器就要發100份。如果有100個人同時發訊息呢?一萬份?”陳健說,“現在伺服器已經撐不住了,再加這個,會不會……”
會議室安靜了幾秒。
張誌東推了推眼鏡:“那你覺得應該怎麼做?”
陳健想了想,回憶起二十年後那些聊天軟體的原理。
“能不能別每個人都發?讓使用者自己來取?”
“自己取?”一個工程師問,“什麼意思?”
“就是……訊息存在伺服器上,使用者上線的時候,自己去伺服器拿。不用伺服器挨個發,誰需要誰拿。”
張誌東眼睛亮了。
“你的意思是……拉模式,不是推模式?”
陳健不知道什麼拉模式推模式,但他點頭:“對,讓使用者主動拉。”
“但這樣會有延遲,”另一個工程師說,“使用者拿訊息不及時,體驗不好。”
“可以折中,”陳健說,“線上的人用推,不線上的人用拉。線上的人少,推的成本低。不線上的人多,但他們不急著要訊息,上線的時候統一拉就行。”
張誌東沉默了幾秒,忽然拿起筆在白板上畫起來。
“線上推,離線拉……線上使用者的狀態需要維護……訊息要持久化……對,這樣能行……”
他越畫越快,越畫越興奮。
馬化騰站在旁邊,看著白板上的圖,忽然說:“Tony,你發現沒,這個思路和郵箱有點像。”
張誌東愣了一下,然後笑了:“還真是。”
陳健也愣住了。
郵箱?
他從來沒想過這個角度。但仔細一想,確實像——郵件存在伺服器上,使用者登入的時候收取。隻不過QQ的訊息比郵件快得多,對實時性要求高得多。
“可以借鑒郵件係統的思路,”馬化騰說,“但要做優化。線上使用者走即時通道,離線使用者走儲存通道。兩條腿走路。”
張誌東點頭,又開始畫。
陳健看著他們討論,忽然有種奇怪的感覺。
他剛才說的那些,都是二十年後最基礎的東西——訊息佇列、離線儲存、推拉結合。在即時通訊領域,這些早就成了常識。
但在這個年代,它們還是需要從頭設計的難題。
“陳健,”馬化騰忽然叫他,“你過來看看。”
陳健走過去,站在白板前。
“這裡,”馬化騰指著一個框,“你說離線使用者上線的時候拉訊息,那拉多少?一次拉完?如果離線了一星期,訊息有幾萬條,全拉下來不得把伺服器拖死?”
陳健想了想:“分頁。一次拉最新的幾十條,想看更多再往下拉。”
“分頁?”張誌東皺眉,“訊息是按時間排的,分頁的話,頁碼怎麼算?使用者看到第幾頁了怎麼記?”
“不用頁碼,”陳健說,“用時間戳。每次拉的時候,帶上上次拉的時間,伺服器返回這個時間之後的訊息。想看更早的,再往前推。”
張誌東愣住了。
他盯著白板,嘴裡念念有詞,忽然拿起筆刷刷刷寫起來。
幾行程式碼寫完,他停下筆,回頭看著陳健。
“你這腦子,”他說,“怎麼長的?難道新腦子就是好用”
陳健笑了笑,沒說話。
他不能說,這不是他想的,是二十年後的張小龍想的。他隻是一個搬運工。
會議開到淩晨兩點。
白板上畫滿了圖,地上扔了一堆草稿紙,煙灰缸裡塞滿了煙頭。張誌東最後癱在椅子上,眼鏡歪在一邊,有氣無力地說:“方案差不多了,明天……不對,今天開始寫程式碼。”
“幾天能出原型?”馬化騰問。
“至少一週。”
“太慢。五天。”
張誌東睜開眼睛看著他:“五天?你要我命?”
“你命值錢,伺服器更值錢。”馬化騰說,“早點上線,早點測試,早點知道行不行。”
張誌東沉默了幾秒,認命地閉上眼:“五天就五天。”
人群散去。
陳健回到沙發邊,正準備躺下,馬化騰走過來。
“今天表現不錯,”他說,“早點睡。”
陳健點點頭。
馬化騰轉身要走,忽然又停下。
溫馨提示: 搜書名找不到, 可以試試搜作者哦, 也許隻是改名了!