週二下午兩點,林夕站在三樓大會議室門外。
他請了假——理由是“瞭解行業前沿技術,提升架構視野”,老陳批得很爽快:“去吧,楊帆也提倡多看多學。”
門虛掩著,裏麵已經坐了二三十人,大多是技術部的人。林夕找了個後排靠門的位置坐下,盡量不引人注意。
講台上正在除錯裝置的是個年輕的技術員,旁邊站著周凱。他今天穿了深藍色襯衫,袖口挽起,正和一個穿著polo衫、戴著工牌的男人交談。那男人三十五六歲,身材微胖,笑容很有感染力——應該就是海量資料的人。
林夕的目光掃過會議室,看到了幾張熟悉的麵孔:李工坐在第三排,正低頭看手機;趙磊在第五排,偷偷打哈欠;還有幾個技術部的組長、架構師。
前排還有個空位,貼著名牌:張維。
兩點零五分,張維到了。他沒穿正裝,還是簡單的POLO衫,手裏拿著一個黑色的筆記本。他掃了一眼會議室,看到林夕拾微微點頭,然後在前排坐下。
“好,大家安靜一下。”周凱走到講台中央,“感謝各位參加今天的技術分享會。我們很榮幸邀請到海量資料的聯合創始人兼CTO,王浩老師,為我們分享下一代分散式資料庫的技術趨勢和應用實踐。”
掌聲中,王浩走上講台。他的演講風格很接地氣,沒有太多專業術語堆砌,從實際問題出發。
“大家知道,傳統單機資料庫的瓶頸在哪裏?不是CPU,不是記憶體,是I/O和鎖。”王浩在白板上畫了個簡單的示意圖,“當並發量上去時,鎖競爭、熱點寫入、主從延遲……這些都是單機架構繞不開的痛。”
台下很多人點頭。林夕想起積分係統那個單點故障的資料庫。
“我們的解決方案是,徹底重新設計儲存引擎和分散式協議。”王浩切換PPT,展示架構圖,“通過將資料分片到多個節點,配合優化的共識演演算法,實現線性擴充套件和高可用。簡單說,就是加機器就能提升效能,單點故障不影響服務。”
“分片規則呢?”台下有人問。
“支援多種分片策略:按範圍、按雜湊、按業務鍵。我們也提供自動分片再平衡,當資料傾斜時自動遷移。”王浩回答得很流利,“最重要的是,對應用層完全透明——你們不用改程式碼,隻需要改連線串。”
“效能資料?”
“TPC-C基準測試,同等硬體下,吞吐量是MySQL集群的3倍,延遲降低40%。”王浩調出測試報告,“我們已經在金融、電商多個場景落地,最大集群128個節點,日處理千億級事務。”
會議室裏響起低低的議論聲。這個資料確實有吸引力。
周凱適時插話:“我們技術部也在評估,是否在積分係統重構中引入海量資料。如果順利,可以徹底解決單點瓶頸和曆史包袱。”
林夕注意到,他說的是“積分係統重構”,而不是“技術部整體架構升級”。這個範圍限定得很巧妙——既展示了前瞻性,又控製了風險。
分享進入問答環節。提問很踴躍,大多是技術細節:事務一致性怎麽保證?備份恢複機製?監控告警體係?相容性如何?
王浩一一解答,看得出技術功底紮實。
半小時後,周凱宣佈休息十分鍾。人們起身活動,接水,聊天。
林夕坐在原位沒動。他看到張維起身,走向王浩,兩人握手,交談了幾句。然後張維指了指後排,王浩的目光投過來——看到了林夕。
林夕心裏一緊。但王浩隻是笑著點點頭,又轉回去繼續和張維說話。
休息結束,下半場開始。王浩講了一些落地案例,然後進入自由交流時間。
“林夕,”周凱忽然叫了他的名字,“你在孵化部做高並發專案,對分散式資料庫應該有需求。有什麽問題想問王老師的嗎?”
所有人的目光轉向後排。
林夕站起來,腦子飛速運轉。他知道這是周凱的試探——想看看他在新部門的表現,也想看看他對這件事的態度。
“王老師好,我有一個問題。”林夕盡量讓聲音平穩,“您剛才提到對應用層透明,但實際遷移中,我們遇到過一些MySQL特有語法的相容性問題。海量資料對儲存過程、觸發器、自定義函式這些,支援度如何?”
問題很實際,不尖銳,但直指遷移成本。
王浩點點頭:“很好的問題。我們目前對標準SQL支援很完整,但儲存過程和觸發器的支援還在路線圖中。不過我們提供了資料遷移工具和相容性檢查指令碼,可以提前識別問題。大部分應用隻需要簡單的改寫。”
“那事務隔離級別呢?MySQL的REPEATABLE READ和你們的實現有什麽差異?”
“我們實現了完整的ACID,隔離級別支援READ COMMITTED和SNAPSHOT ISOLATION。”王浩耐心解釋,“SNAPSHOT ISOLATION可以避免幻讀,比REPEATABLE READ更強。遷移時通常需要調整應用邏輯,但這其實是好事——能發現一些隱藏的並發bug。”
問答繼續。林夕又問了幾個技術細節,都落在實處。他能感覺到,周凱在觀察他,張維也在觀察他。
分享會在四點結束。人們陸續離場。林夕收拾東西準備走,張維走過來:“問題問得不錯,很專業。”
“謝謝張總。”
“我不是張總,叫我張維就行。”他笑了笑,“對了,楊帆下午找你了嗎?”
“還沒。”
“他會的。他對技術要求很高,但也很公平。”張維頓了頓,“海量資料這家公司,你怎麽看?”
問題來得突然。林夕謹慎回答:“技術聽起來不錯,但落地需要驗證。”
“需要驗證。”張維重複了一遍,“是啊,任何新技術都需要。但有時候,驗證的不僅僅是技術。”
他拍了拍林夕的肩膀:“好好幹。孵化部是個好地方,清靜。”
說完就走了。
林夕站在原地,琢磨著最後那句話——“清淨”。是說孵化部沒有技術部那些複雜的人際關係,還是暗示他應該遠離某些事情?
他走出會議室,在走廊裏遇到了李工。
“還沒走?”李工問。
“這就走。”
兩人一起等電梯。電梯從樓上下來,門開了,裏麵是周凱和王浩,正說著什麽。看到他們,周凱笑著說:“正好,一起吃個晚飯?王老師難得來,咱們聊聊技術。”
李工看了林夕一眼,林夕說:“我晚上還有需求要寫,得加班。”
“理解,新人嘛,多花時間。”周凱沒有強求,“那李工,咱們走?”
李工點點頭,進了電梯。電梯門合上之前,林夕看到周凱還在和王浩說話,表情輕鬆。
他獨自走回十九樓。孵化部已經下班了一大半,隻有幾個人還在。他的工位空蕩蕩的,MacBook合著,像等待被開啟。
他坐下,開啟電腦,卻沒有立刻工作。腦子裏全是下午的畫麵:王浩的架構圖、周凱的“重構計劃”、張維那句“清淨”、李工進電梯前看他的眼神……
還有那個問題:海量資料,真的隻是為瞭解決技術問題嗎?
他登入公司內網,搜尋“海量資料”。找到了幾條資訊:一家成立三年的初創公司,去年拿了A輪融資,投資方裏有幾家知名機構。公司規模不大,但團隊背景很強,好幾個核心成員來自一線大廠。
他又搜尋了“分散式資料庫 采購流程”。公司有明確的技術采購規範:需要技術評估、POC測試、商務談判、法務審核,最終由技術委員會投票決定。
整個過程至少三個月。
如果周凱想用海量資料替換MySQL,現在才剛開始接觸,距離落地還早。那他為什麽這麽積極?在分享會上公開表態?
林夕想起《孫子兵法》裏的一句話:“利而誘之,亂而取之。”
用利益引誘,趁混亂攻取。
利益是什麽?可能是海量資料給出的優惠條件,可能是引入新技術帶來的個人光環,也可能是……別的。
他正想著,郵箱提示音響起。一封新郵件,發件人是陌生的海外地址。
心跳漏了一拍。
他點開。
林夕你好,我是陳啟明。
收到你的郵件,猶豫了很久纔回複。畢竟離開三年,很多事情已經與我無關。
但你說想請教積分係統的問題,我想,也許有些話應該說。
我看了你提到的優化方案,思路是對的,但不夠徹底。防重複提交、冪等性校驗,這些都是治標。真正的病根是資料模型——積分作為‘貨幣’,卻沒有事務型資料庫的強一致性保障,這是先天缺陷。
三年前我提過一個方案:將積分拆分為‘賬戶’和‘流水’兩層。賬戶層保證最終一致性,流水層保證強一致性。但這個方案需要重構整個資料模型,投入太大,被否決了。
現在想來,否決是對的。因為真正的問題不在技術,而在決策機製:當短期利益和長期安全衝突時,公司往往會選擇前者。
我不知道你現在麵對的是什麽,但我想給你一個建議:技術可以解決技術問題,但解決不了人的問題。
如果你真的想改變什麽,不要隻盯著程式碼。要看清程式碼背後的人,他們的動機、他們的恐懼、他們真正在乎的東西。
最後,回答你郵件裏沒問但可能想問的問題:周凱是個聰明人,他知道問題在哪,也知道怎麽最大化自己的利益。和他打交道,不要看他說什麽,要看他做什麽,更要看他不做什麽。
祝你在新部門順利。
陳啟明
郵件不長,但每句話都像錘子,敲在林夕心上。
他盯著螢幕,看了很久。然後,他做了兩件事:
第一,將郵件內容複製到本地文字檔案,加密儲存。
第二,回複郵件,隻有一句話:“謝謝陳工,我明白了。”
傳送。
做完這些,他靠在椅背上,看向窗外。夜幕已經降臨,城市的燈光像撒在地上的星子。
陳啟明說得對。技術問題都有解法,但人的問題沒有標準答案。
周凱在做什麽?推動重構計劃,對接新技術,調走潛在麻煩。
周凱在不做什麽?沒有公開承認曆史問題,沒有徹底追責,沒有改變決策機製。
而張維呢?他看似旁觀,卻給他陳啟明的聯係方式,提醒他海量資料的分享會,說孵化部“清靜”。
楊帆呢?周凱打電話讓他“關照”,但他的“關照”是嚴格要求,是不留情麵。
每個人都在自己的位置上,做著符合自己利益的事。
那麽他呢?他的利益是什麽?做好“星課堂”專案,在孵化部立足,跟著楊帆學技術——這是最安全、最明智的選擇。
但他總覺得,心裏有什麽東西在躁動。是那327個被重複扣款的使用者?是陳啟明那句“真正的病根是資料模型”?還是某種更模糊的、關於“對錯”的執念?
手機震動,是老陳發來的釘釘:“林夕,明天上午九點,楊帆老師要評審咱們的架構設計。你負責的模組,準備一下。”
他回複:“好的。”
然後,他開啟“星課堂”的架構檔案,開始工作。
程式碼一行行寫出來,邏輯一點點清晰。這是一個全新的係統,沒有曆史包袱,他可以按照最理想的方式設計:清晰的模組劃分、完善的錯誤處理、詳細的日誌記錄、完整的監控指標。
他寫得很快,很投入。當人專注於具體的技術問題時,世界會變得簡單。
晚上九點,他完成了初版設計。發給老陳,抄送楊帆。
五分鍾後,楊帆回複:“收到,明天會上討論。”
很簡潔,沒有評價。
林夕關掉電腦,收拾東西。走出公司時,大廳已經空蕩蕩的。保安在打瞌睡,前台燈還亮著,照著一盆綠植。
他走出大門,夜風吹來,帶著涼意。
手機又響了,這次是母親。
“小夕,還沒下班?”
“剛下班。”
“別太累。對了,你爸的檢查結果出來了,醫生說沒什麽大問題,就是血壓高,按時吃藥就行。”
“那就好。”
“你那邊怎麽樣?新部門還適應嗎?”
“適應,挺好的。”林夕說,“領導很重視,專案也有挑戰。”
“那就好,那就好。”母親的聲音裏是放心的欣慰,“好好幹,注意身體。”
結束通話電話,林夕站在路邊等車。
遠處,一輛黑色轎車從地下車庫駛出。車窗半開,他看到了周凱的側臉——他坐在後座,正低頭看手機。車子駛入車流,尾燈很快消失在夜色裏。
林夕看著那個方向,很久。
然後他拿出手機,開啟備忘錄,新建一條記錄:
“海量資料:技術評估中,周凱推動,可能用於積分重構。
陳啟明:已聯係,確認曆史問題根本在資料模型和決策機製。
張維:關注此事,態度不明。
楊帆:嚴格,專業,周凱曾托其‘關照’我。”
寫完,他鎖屏。
車來了。他坐進去,報出地址。
車子行駛在夜晚的城市裏,路燈的光影在車窗上快速掠過,像倒流的時光。
他閉上眼睛。
腦海裏浮現出祖父下棋時的樣子。老人總是很慢,每一步都想很久。有一次林夕問:“爺爺,你是在算後麵的好幾步嗎?”
祖父搖搖頭:“我是在算,走了這一步,對手會怎麽想,我又該怎麽應對。棋局不是一個人下的,你要想贏,就得把對手的心思也算進去。”
現在的棋局裏,對手是誰?
周凱?張維?還是某種更龐大的、叫“職場”或者“現實”的東西?
他不知道。
但他知道,自己已經走過了河。
接下來,每一步都要算清楚。
因為過河的卒子,沒有退路。
而棋盤的另一端,將帥還在那裏,等待著。
車窗外,城市的燈火蜿蜒向前,看不到盡頭。
像一盤永遠下不完的棋。