第七十八章 技術對接
「好。」韓非說,「溫傑,你先來說說系統的情況。」
溫傑站起身來,從包里抽出一沓紙,那是上午列印好的架構說明書和待優化清單。他把紙分發給技術小組成員,然後打開筆記本電腦,把界面同步到會議桌盡頭的背投電視上。
「各位,我先簡單過一下現有架構。」溫傑點開一張圖,「目前我們是單機部署,Apache+PHP+MySQL,做了基礎的讀寫分離。SP接口這塊,我寫了一個獨立的驗證模塊,走的是移動的普通通道,計費回調加入了IP白名單和簽名驗證......」
溫傑講得很順,語速不快,但條理清晰。從資料庫結構講到緩存策略,從負載均衡的初步方案講到自研的A/B測試模塊雛形。雖然全程沒有看稿,中間卻毫無停頓。
周明一邊聽一邊微微點頭,偶爾在筆記本上記兩筆。林峰盯著屏幕,手指在膝蓋上輕輕輪敲著,仿佛是在模擬代碼邏輯。王哲翻著那沓紙,時不時抬頭看一眼溫傑。
十五分鐘後,溫傑講完,垂下手臂,正好跟低低的太陽消失在雲層後是同一時間,他們身後那片方形的大光塊也消失了。會議室里安靜了幾秒。
周明合上筆記本,看著溫傑:「那個A/B測試模塊,是你自己寫的?」
「嗯,剛搭好一個框架,還是了參考了國外案例做的,想用來對比不同文案的轉化率,能不能做成還不知道呢。」
周明難得地露出一絲笑意:「有想法。總部很多項目組,做了一年都沒把這東西落地。」
溫傑笑了笑,有些不好意思。
林峰看了看周明,不太確定該不該站起來,最後還是決定坐著。「溫工,你剛才說的資料庫拆分,現在到什麼程度了?」
「表結構已經分好了,」溫傑切出三張表格結構圖,「包含了用戶庫、訂閱庫,和內容庫三套,但跨庫查詢還沒優化,目前是用應用層做聚合。比如說,要查某個用戶訂閱了哪些內容,需要先查詢訂閱庫拿到內容ID,再去內容庫獲取詳情。這個邏輯現在寫在PHP代碼里,循環查詢,效率肯定會有影響。」
林峰皺起眉頭,手指在膝蓋上敲得更加用力了:「這個聚合層早晚會成為瓶頸。等用戶量上百萬,一次請求可能要觸發幾十次子查詢,響應時間會指數級上升。」
「是這樣的。」溫傑說,「所以我正在考慮引入緩存,把熱門數據先預熱到內存里,減少實時查詢。」
「緩存是個方向,」王哲開口說,「但緩存策略怎麼設計?是全量緩存還是按需?失效機制怎麼定?這些都得提前想好,不然到時候緩存穿透、雪崩,比資料庫慢還要麻煩。」
「呃......」溫傑吞了口口水。韓非看見他的額頭上滾下一顆汗珠,顯然這些問題他還沒細想過。
「不急。」韓非微笑說,「這幾位過來就是為了幫我們的。這些問題你可以和幾位一起推演。」
韓非看向周明。周明點了點頭:「沒錯。你先說說你的ID生成策略,怎麼保證唯一性的?」
溫傑吸了口氣,切換到另一張圖:「我用的是時間戳加機器碼,再加上自增序列的組合。時間戳精確到毫秒,機器碼是固定的,自增序列我放在Memcached里做原子遞增。因為目前是單機部署,所以機器碼寫死了,序列號靠Memcached的incr命令來獲取。如果以後要擴展到多機,機器碼就需要動態分配,這個機制還沒開始做。」
「如果Memcached掛了怎麼辦?」林峰問。
「呃......那序列號會回退,有極小概率衝突,不過Memcached本身比較穩定。實在不行,可以加一個備份機制,用文件記錄當前的序列號。」溫傑咬緊下唇,看著韓非。
會議室里安靜了兩秒鐘。王哲和林峰交換了一個眼色。
韓非看了溫傑一眼,希望自己的眼神堅定而充滿鼓勵。他能感覺到溫傑的壓力,但也知道這是必經的過程。
周明清了清喉嚨:「韓社長,你們現在整個的技術團隊裡,就只有溫傑一個人嗎?」
「是的。」韓非說,「不過我們已經在計劃招人,搭建技術團隊了。」
周明的目光在溫傑身上逗留:「你一個人能把系統做到這個程度,已經很不容易了。我剛才聽下來,你的思路是對的,方向也沒問題,但一個人的精力畢竟有限,有些細節和邊界情況來不及考慮也很正常。我們今天來的目的,就是幫你把這些漏洞補上,把系統加固,讓它能撐起更大的業務。」
溫傑怯懦地笑了笑:「謝謝周工。」
「那我們開始吧。」周明說,「林峰,你負責資料庫和緩存這部分,跟溫傑對接一下現有代碼。王哲,你準備接入用戶畫像系統,先跟溫傑確定一下數據接口的調用方式。我負責整體架構把控和SP接口的綠色通道對接。」
「好。」兩人齊聲說。
林峰來到溫傑身邊,俯身看著屏幕:「溫傑,你那個聚合查詢的代碼,現在能給我看看嗎?」
溫傑立刻切換到代碼界面。
王哲打開那個神秘的黑箱子,取出一個U盤,交給溫傑:「這是用戶畫像系統的接口文檔和示例代碼,你先看看,有問題隨時問我。」
韓非坐著聆聽三人討論,他們似乎是在爭論某個技術細節。王哲在旁邊插了幾句嘴,三個人很快達成一致。
「溫傑,」林峰說,「分省推送,你們現在能支持嗎?」
「理論上可以。號碼本身帶歸屬地,我們推送的時候是按號段匹配的。如果要做分省定向,只需要在推送任務里加一個省份過濾條件。」
「實際效果呢?」
「呃,我們還沒試過。」
「最簡單的辦法,」王哲插嘴說,「就是建兩個任務隊列。一個隊列專門跑廣東,一個跑浙省,其他的走默認。每個任務指定內容ID和文案ID就行。」
韓非心滿意足,正準備起身離去,卻感覺到有人在看他。韓非抬起雙眼,迎上了那名女子的目光。女子沒有迴避他的視線,只是緩緩地合上筆記本,將鋼筆擱在一邊,靠上椅背,擺出某種姿態。韓非敢打賭,她這個姿態一定是從某些資深的企業高管那裡學來的,表達的意思是:繼續,讓我看看,你究竟有幾分真本事。
韓非禮貌地對她笑了笑,起身離開會議室。
溫傑站起身來,從包里抽出一沓紙,那是上午列印好的架構說明書和待優化清單。他把紙分發給技術小組成員,然後打開筆記本電腦,把界面同步到會議桌盡頭的背投電視上。
「各位,我先簡單過一下現有架構。」溫傑點開一張圖,「目前我們是單機部署,Apache+PHP+MySQL,做了基礎的讀寫分離。SP接口這塊,我寫了一個獨立的驗證模塊,走的是移動的普通通道,計費回調加入了IP白名單和簽名驗證......」
溫傑講得很順,語速不快,但條理清晰。從資料庫結構講到緩存策略,從負載均衡的初步方案講到自研的A/B測試模塊雛形。雖然全程沒有看稿,中間卻毫無停頓。
周明一邊聽一邊微微點頭,偶爾在筆記本上記兩筆。林峰盯著屏幕,手指在膝蓋上輕輕輪敲著,仿佛是在模擬代碼邏輯。王哲翻著那沓紙,時不時抬頭看一眼溫傑。
十五分鐘後,溫傑講完,垂下手臂,正好跟低低的太陽消失在雲層後是同一時間,他們身後那片方形的大光塊也消失了。會議室里安靜了幾秒。
周明合上筆記本,看著溫傑:「那個A/B測試模塊,是你自己寫的?」
「嗯,剛搭好一個框架,還是了參考了國外案例做的,想用來對比不同文案的轉化率,能不能做成還不知道呢。」
周明難得地露出一絲笑意:「有想法。總部很多項目組,做了一年都沒把這東西落地。」
溫傑笑了笑,有些不好意思。
林峰看了看周明,不太確定該不該站起來,最後還是決定坐著。「溫工,你剛才說的資料庫拆分,現在到什麼程度了?」
「表結構已經分好了,」溫傑切出三張表格結構圖,「包含了用戶庫、訂閱庫,和內容庫三套,但跨庫查詢還沒優化,目前是用應用層做聚合。比如說,要查某個用戶訂閱了哪些內容,需要先查詢訂閱庫拿到內容ID,再去內容庫獲取詳情。這個邏輯現在寫在PHP代碼里,循環查詢,效率肯定會有影響。」
林峰皺起眉頭,手指在膝蓋上敲得更加用力了:「這個聚合層早晚會成為瓶頸。等用戶量上百萬,一次請求可能要觸發幾十次子查詢,響應時間會指數級上升。」
「是這樣的。」溫傑說,「所以我正在考慮引入緩存,把熱門數據先預熱到內存里,減少實時查詢。」
「緩存是個方向,」王哲開口說,「但緩存策略怎麼設計?是全量緩存還是按需?失效機制怎麼定?這些都得提前想好,不然到時候緩存穿透、雪崩,比資料庫慢還要麻煩。」
「呃......」溫傑吞了口口水。韓非看見他的額頭上滾下一顆汗珠,顯然這些問題他還沒細想過。
「不急。」韓非微笑說,「這幾位過來就是為了幫我們的。這些問題你可以和幾位一起推演。」
韓非看向周明。周明點了點頭:「沒錯。你先說說你的ID生成策略,怎麼保證唯一性的?」
溫傑吸了口氣,切換到另一張圖:「我用的是時間戳加機器碼,再加上自增序列的組合。時間戳精確到毫秒,機器碼是固定的,自增序列我放在Memcached里做原子遞增。因為目前是單機部署,所以機器碼寫死了,序列號靠Memcached的incr命令來獲取。如果以後要擴展到多機,機器碼就需要動態分配,這個機制還沒開始做。」
「如果Memcached掛了怎麼辦?」林峰問。
「呃......那序列號會回退,有極小概率衝突,不過Memcached本身比較穩定。實在不行,可以加一個備份機制,用文件記錄當前的序列號。」溫傑咬緊下唇,看著韓非。
會議室里安靜了兩秒鐘。王哲和林峰交換了一個眼色。
韓非看了溫傑一眼,希望自己的眼神堅定而充滿鼓勵。他能感覺到溫傑的壓力,但也知道這是必經的過程。
周明清了清喉嚨:「韓社長,你們現在整個的技術團隊裡,就只有溫傑一個人嗎?」
「是的。」韓非說,「不過我們已經在計劃招人,搭建技術團隊了。」
周明的目光在溫傑身上逗留:「你一個人能把系統做到這個程度,已經很不容易了。我剛才聽下來,你的思路是對的,方向也沒問題,但一個人的精力畢竟有限,有些細節和邊界情況來不及考慮也很正常。我們今天來的目的,就是幫你把這些漏洞補上,把系統加固,讓它能撐起更大的業務。」
溫傑怯懦地笑了笑:「謝謝周工。」
「那我們開始吧。」周明說,「林峰,你負責資料庫和緩存這部分,跟溫傑對接一下現有代碼。王哲,你準備接入用戶畫像系統,先跟溫傑確定一下數據接口的調用方式。我負責整體架構把控和SP接口的綠色通道對接。」
「好。」兩人齊聲說。
林峰來到溫傑身邊,俯身看著屏幕:「溫傑,你那個聚合查詢的代碼,現在能給我看看嗎?」
溫傑立刻切換到代碼界面。
王哲打開那個神秘的黑箱子,取出一個U盤,交給溫傑:「這是用戶畫像系統的接口文檔和示例代碼,你先看看,有問題隨時問我。」
韓非坐著聆聽三人討論,他們似乎是在爭論某個技術細節。王哲在旁邊插了幾句嘴,三個人很快達成一致。
「溫傑,」林峰說,「分省推送,你們現在能支持嗎?」
「理論上可以。號碼本身帶歸屬地,我們推送的時候是按號段匹配的。如果要做分省定向,只需要在推送任務里加一個省份過濾條件。」
「實際效果呢?」
「呃,我們還沒試過。」
「最簡單的辦法,」王哲插嘴說,「就是建兩個任務隊列。一個隊列專門跑廣東,一個跑浙省,其他的走默認。每個任務指定內容ID和文案ID就行。」
韓非心滿意足,正準備起身離去,卻感覺到有人在看他。韓非抬起雙眼,迎上了那名女子的目光。女子沒有迴避他的視線,只是緩緩地合上筆記本,將鋼筆擱在一邊,靠上椅背,擺出某種姿態。韓非敢打賭,她這個姿態一定是從某些資深的企業高管那裡學來的,表達的意思是:繼續,讓我看看,你究竟有幾分真本事。
韓非禮貌地對她笑了笑,起身離開會議室。