《AI時代:碼農的涅盤重生》第22章 技術面:項目經理(1)

作者:Flint8·1小時前

公交在深南大道上疾馳,窗外林立的寫字樓與霓虹廣告牌連成一道流光,在林晨眼底飛速掠過。他無心風景,腦海中正緊鑼密鼓地推演著每一個可能出現的技術盲點。

智行科技那邊,HR王經理昨天下午發來郵件,通知他今天下午兩點進行技術面試,由專案組的技術負責人把關。 “好歹是技術面,不是跟HR扯皮薪資福利了”。

林晨心裡稍微踏實了點。他昨晚把Java併發、Spring Cloud微服務、資料庫最佳化這些老本行又過了一遍,還特意看了看現在流行的容器化部署和DevOps流程。雖然薪資低、要外派,但若能先有個落腳點,緩解每月的房貸壓力,也並非不能接受。

生存是第一要務,這是上次面試後他給自己定下的現實準則。 科技園北區的一棟略顯陳舊的寫字樓裡,林晨找到了智行科技的辦公室。他被領進了一間小會議室。會議室玻璃牆上貼著幾張敏捷開發流程的示意圖,白板上還殘留著一些技術架構草圖。

兩點整,門被推開。進來的是一個看起來頂多二十七八歲的年輕人,穿著印有某開源專案logo的黑色T恤,頭髮有些蓬亂,手裡拿著電腦,另一個手端著個印有“Hello World”的馬克杯。

他掃了林晨一眼,目光在林晨臉上停留了半秒——那是一種快速評估的眼神,帶著點審視,也帶著點……不以為然? “林晨是吧?我是這個專案的技術負責人,姓趙”。

年輕人把杯子往桌上一放,沒握手,直接在對面的椅子上坐下,打開了筆記型電腦。 “趙經理,您好”。林晨點頭致意,心裡咯噔一下。負責人?看起來比自己小了至少七八歲。他迅速調整心態,提醒自己:技術圈不看年齡,看能力。

“你的簡歷我看了,十年經驗,主要做電商後端”。趙經理語速很快,沒什麼寒暄,“我們這邊接的是個金融科技類的專案,給一傢俬募做內部交易系統和風控平臺,技術棧要求比較高,也比較新。你先說說,你對微服務架構下,保證資料最終一致性的方案有哪些理解?不用背概念,說實際你用過的或者你認為最優的方案”。

問題很直接,甚至有點突擊的味道。林晨沉住氣,從分散式事務的常見模式(2PC、TCC、Saga)開始講起,結合自己以前做跨境支付清結算時遇到的坑,分析了各種方案的優缺點和適用場景,最後提到現在很多場景會採用“事件驅動+補償”的思路,並簡要說了說訊息佇列和本地事務表的配合。 趙經理聽著,手指在桌面上無意識地敲著,偶爾在電腦上記錄幾筆。等林晨說完,他抬起頭:“概念算是清楚。不過你提到的TCC模式,在實際高併發場景下,預留資源(Try階段)長時間不確認或取消,對資源池的壓力很大,你怎麼最佳化?有具體資料支撐嗎”?

這個問題更深入了。林晨憑藉記憶,說了幾種常見的最佳化策略,比如設定超時時間、非同步釋放資源、資源池動態調整等,但也坦誠在實際專案中,他們當時併發量沒達到需要極端最佳化的程度,更多是靠業務拆分和柔性事務規避了深層問題。

趙經理“嗯”了一聲,聽不出是滿意還是不滿意,接著問:“專案如果用K8s部署,服務網格(比如Istio)在生產環境灰度釋出和故障注入方面,你有沒有實操經驗?我們客戶對系統穩定性要求極高,上線流程必須可控”。 林晨心裡一沉。容器化他了解,但服務網格、Istio……這屬於更前沿的運維/基礎設施領域,他以前在電商公司,雖然有云原生轉型的苗頭,但實際生產環境並未大規模應用這套東西。他如實回答:“有了解過概念和基本架構,但生產環境深度實操經驗確實沒有。我們之前的灰度主要是透過閘道器權重和註冊中心後設資料來實現的”。

“哦”。趙經理這一聲拖得有點長,他端起杯子喝了口水,“那再說說高併發場景下,如何設計一個保證絕對不超賣的庫存服務?注意,是‘絕對’,不是最終一致。金融場景裡,差一點可能就是重大事故”。 這個問題考驗的是對併發控制和系統設計的深度理解。林晨思索片刻,從資料庫行級鎖、樂觀悲觀鎖的侷限說起,延伸到分散式鎖(Redis、ZooKeeper)的引入,再到如何透過“預扣庫存+非同步同步”以及“佇列序列化”等組合方案來逼近“絕對”安全,同時也指出完全意義上的“絕對”在分散式系統裡成本極高,需要結合業務容忍度做權衡。

他自認為回答得還算全面,既有理論也有實踐思考。但趙經理聽完,眉頭卻微微皺了起來。 “思路還是……偏傳統”。

趙經理放下杯子,身體向後靠了靠,“你提到的很多方案,本質上都是加鎖或者變相加鎖,在超高併發和跨資料中心的場景下,延遲和效能會成為瓶頸。我們現在更傾向於用CRDT(無衝突複製資料型別)的思路去重新設計資料模型,或者直接用一些新的分散式資料庫的原語。你好像沒往這個方向思考”?

猜你喜歡

同題材或同分類的其他作品。