第414章 白板!

投票推薦 加入書籤 小說報錯

  凌晨一點。

  林徹沒有睡。

  十二月十五號的雨下了一整晚,窗外的聲音從沙沙變成了滴答,雨小了但沒停。

  辦公室的燈開著,桌上的茶早就涼透了。

  他把老周的郵件看了三遍,看完之後關掉郵件,打開了一個空白文檔,什麼都沒寫。

  空白文檔在屏幕上亮了十分鐘。

  他關掉了電腦,站起來,拿了一支筆,沒拿別的東西。

  坐電梯下到六樓。

  走廊里暗的,只有盡頭實驗室的光透出來。

  跟之前每次看到的一樣,但今天走過去的時候他注意到走廊的地板上有幾個腳印,潮的,應該是有人出去買宵夜回來踩進來的雨水。

  他推開了實驗室的門。

  …………

  裡面還有四個人。

  老周在白板前面,面對著白板坐著,椅子反過來騎著坐的,兩條胳膊搭在椅背上,下巴擱在胳膊上,像在發呆。

  方遠在角落的工位上,屏幕亮著但他沒在看屏幕,雙手抱著後腦勺靠在椅背上,眼睛閉著,不知道是在想事情還是在打盹。

  另外兩個工程師在摺疊桌那邊,一個在喝泡麵湯,一個在看手機。

  林徹進來的時候四個人都看了他一眼。

  凌晨一點,林總來六樓了,沒人問為什麼。

  老周從椅子上站起來,他的衛衣皺了,下巴上有一圈青色的胡茬,眼睛有血絲但亮著。

  」林總。」

  」白板給我用一下。」

  老周讓開了。

  白板上寫滿了東西。

  密密麻麻的架構圖,紅藍黑綠四種顏色纏在一起,箭頭交叉,方框嵌套,有的地方被擦掉了又重新畫上去,擦掉的痕跡和新畫的線條疊在一起,像一幅看不懂的抽象畫。

  白板的右下角有一串數字,方遠寫的延遲拆解:18+22+310+195+65=610。

  610。

  林徹看了白板大概三十秒。

  然後他拿起一塊白板擦,把白板右半邊的內容擦掉了。

  方遠睜開了眼睛。

  他沒說話,但坐直了。

  喝泡麵的那個工程師也停下來了,放下了碗。

  林徹從筆槽里拿了一支黑色馬克筆。

  他在白板右半邊畫了兩個方框。

  上面一個,下面一個。

  上面的方框寫了三個字:」央行帳本」。

  下面的方框寫了三個字:」微光邏輯」。

  兩個方框之間畫了一條線。線的旁邊寫了四個字:」異步回調」。

  然後他在下面的方框裡畫了一條虛線,把它分成了左右兩半。

  左邊寫:」規則引擎」。

  右邊寫:」本地帳本」。

  」本地帳本」三個字下面,他畫了一個小箭頭,指向上面的」央行帳本」,箭頭旁邊寫了兩個字:」最終一致」。

  畫完了,放下筆。

  白板上只有這些東西。

  兩個方框,一條實線,一條虛線,三個箭頭,不到二十個字。

  跟左半邊那密密麻麻的架構圖比起來,像是兩個世界的產物。

  …………

  實驗室里安靜了大概五秒。

  老周站在他後面,盯著白板右半邊看。

  他的呼吸聲變了,從剛才疲憊的均勻變成了不均勻的,像是在憋氣。

  」本地帳本……」他低聲說。

  林徹沒說話。

  」不用鏡像同步,」老周的聲音開始快了,」不是維護一份央行帳本的副本,是在邏輯層本地建一個獨立的帳本。

  本地帳本只記錄可編程邏輯相關的狀態,不記錄完整的餘額信息。

  規則引擎執行的時候只查本地帳本,不查央行帳本。

  執行完了再通過異步回調把結果告訴央行,央行帳本做最終確認。」


  他停了一下。

  」310毫秒的鏡像同步沒了。」

  方遠從椅子上站起來了。

  」但是一致性呢?」方遠說,」本地帳本和央行帳本之間如果不同步,雙花問題怎麼解決?」

  老周沒有看方遠,他還在看白板。

  」不需要實時一致,」老周說,語速越來越快,」最終一致就夠了,本地帳本記錄的是'這筆錢正在被一個規則占用',不是'這筆錢已經被扣了',占用狀態鎖定這筆錢,其他交易看到占用狀態就排隊,規則執行完了,回調通知央行,央行做最終扣款,如果回調失敗了,占用狀態自動釋放,錢回到可用狀態。」

  」最終一致……」方遠在腦子裡跑了一遍邏輯。

  」雙花問題被占用鎖解決了,」老周說,」不需要鏡像同步,不需要央行實時確認,本地帳本的占用鎖就是防雙花的機制,310毫秒沒了,195毫秒的回調通信變成了後置環節,不在主鏈路上,不影響用戶體感延遲。」

  他轉過身看著林徹。

  」18加22加65,105毫秒。」

  105毫秒。

  遠低於500毫秒的要求。

  甚至比demo里的37毫秒只高了不到70毫秒,因為加上了清算確認的65毫秒。

  但這65毫秒是後置的。

  用戶感知到的延遲只有規則編譯加規則執行,40毫秒。

  清算確認在後台異步完成,用戶付完錢走了,後台再慢慢對帳。

  」你怎麼想到的?」老周問。

  林徹沒回答。

  他把筆放回筆槽里。

  白板右半邊的圖很簡單,兩個方框,一條實線,一條虛線,三個箭頭。

  跟左半邊兩周的疊代痕跡比起來,乾淨得有點不真實。

  這個思路不是先知能力給他的。

  上輩子沒有這個東西,沒有可編程貨幣引擎,沒有異步架構,沒有本地帳本加最終一致性的方案。

  這些都是這輩子的產物。

  他能想到這個思路,不是因為他」知道」答案,是因為他看過太多分布式系統的架構文章,讀過太多關於區塊鏈共識機制和支付系統設計的論文,這些東西在他腦子裡沉澱了很久,在某個凌晨一點的瞬間被眼前的問題激活了。

  不是先知,是積累。

  老周看了他一眼,那個問題沒有再問第二遍。

  」今晚試。」老周說。

  他轉身走向方遠的工位,方遠已經坐下了,手放在鍵盤上,等著老周說開始。

  」重寫本地帳本模塊,」老周說,」從零寫,占用鎖機制,最終一致性回調,方遠你寫核心邏輯,小李你寫鎖管理,我寫回調接口,今晚出原型。」

  三個人的手同時落在了鍵盤上。

  …………

  林徹站在白板旁邊看了一會兒。

  鍵盤聲響起來了。

  三個人的敲擊節奏不一樣,方遠快而密,老周慢而穩,小李介於兩者之間。

  泡麵的味道還在,混著馬克筆的氣味和凌晨的涼意。

  門外走廊的地板上還有那幾個潮濕的腳印。

  白板左半邊是兩周的努力。

  右半邊是剛才畫的五分鐘。

  兩周的努力不是白費的。

  沒有那610毫秒的拆解,沒有方遠對五個環節的精確分析,就不知道瓶頸在鏡像同步的310毫秒。

  不知道瓶頸在哪,就不知道該砍掉什麼。

  他轉身走出了實驗室。

  門在身後輕輕關上,走廊里暗的,地板上的腳印已經幹了一半。

  電梯到了七樓,門開了,走廊比六樓更安靜。

  六樓的鍵盤聲他已經聽不到了。

  但他知道那三個人今晚不會停。

  」今晚試。」老周站起來了。

章節目錄