返回頂部
關閉軟件導航
位置:首頁 > 資訊 > 電商資訊>阿里程序員寫了一個新手都寫不出的低級bug被罵慘了
阿里程序員寫了一個新手都寫不出的低級bug被罵慘了

這兩個輸入框的值都是我從KV(Redis之類的存儲中間件)里面獲取到的,也是可以實時修改的,我自作聰明,想著KV里面假如沒值,就默認取一個靜態(tài)變量,這樣有個兜底,在類加載的時候加載靜態(tài)變量,我取的時候也效率高了。

這就也為我后面的Bug埋下了伏筆,問題是這個Bug煩就煩在他在預發(fā)環(huán)境是好的,線上卻是壞的。

先看看代碼怎么寫的:

可以看到代碼里面,我是在靜態(tài)代碼塊去KV取值,假如有值就用KV的做初始值,沒取到我也有默認值,我當時還在想自己的構思真巧妙,用KV比DB效率高,用常量去做兜底,不至于沒配置的情況沒有值,報空指針啥的。

當時一個勁給自己加油打氣,一個勁的妙啊,不知道自己寫了多蠢的代碼。

這樣寫看似沒什么問題,但是我這個值是可以修改的這就有問題了,而且我有幾個地方還是取的變量,不是一直取的KV。

而且常量被我當變量用,也都違反了這玩意的初衷了。

阿里程序員寫了一個新手都寫不出的低級bug被罵慘了1

我上線后,三歪就說:敖丙出大問題了,為啥我刷新一下值就不對了,再刷新值就回來了。

我驚恐萬分,深知我寫了BUG,我不著痕跡的擦去我鬢角的汗水,深呼吸了一下。

回答道:我代碼還沒寫好呢,你怎么亂點,我告訴過你不要亂點的,現(xiàn)在你點壞了吧。

三歪似乎真的以為他錯了,委屈巴巴的啥也沒說就默默離開了。

這個時候我馬上打開電腦,也顧不上歪歪的感受了,思緒轉(zhuǎn)的飛快,開始在鬧海中構建整個值傳遞的鏈路。

阿里程序員寫了一個新手都寫不出的低級bug被罵慘了2

我改了頁面的值,之后我也改了這個靜態(tài)變量和KV的值,但是我在線上發(fā)現(xiàn)我刷新頁面一會是修改之后的,一會是修改之前的值.

這就希罕了呀,主要是在預發(fā)還不能復現(xiàn),這就很坑爹了,難受呀歪歪。

Tip:預發(fā)指的是,代碼跟線上一樣,數(shù)據(jù)庫一樣,環(huán)境配置不一樣。

我把代碼看了一遍又一遍,還是沒發(fā)現(xiàn)問題。

在當天那個飽暖思淫欲的下午飯之后我,忽然靈光一閃發(fā)現(xiàn)了問題的核心,預發(fā)是好的因為他是一臺機器。

而我們線上的機器是負載均衡的,有兩臺機器,我修改一次只改了一臺機器的值,另外一臺沒修改到。

那么問題就簡單了,我們看下圖:

預發(fā)情況,是單機,不管我怎么讀怎么修改,每次數(shù)據(jù)都是正確的(這里我還沒意識到其實每次去取變量是不對的)。

但是線上不一樣,服務器啟動的時候給每臺機器賦值了,這樣的情況假如只是讀是沒問題的(怪不得靜態(tài)常量都是private的,能修改的話基本上都有這個問題)。

但是假如修改,你修改的請求只是打到了一臺機器上,假如下次負載均衡請求到了這個機器,那么你很幸運,結果是對的,但是往往負載均衡算法就是那么公平,雨露均沾這樣的情況1/2的請求,都會拿到錯誤的結果。

而且這個地方的問題還有一個就是,應該是修改KV之后,修改變量,我有的地方取的是變量,因為我想每次反正都改了,取也沒事。

阿里程序員寫了一個新手都寫不出的低級bug被罵慘了3

其實正確的做法是我每次去都讀KV就好了,只有KV為空的時候才去讀靜態(tài)變量,作為一種兜底方案,不應該去改變常量的值。

而且大家要知道,我修改KV成功萬一修改常量的時候出錯了呢?你取常量的值就不對了。

所以查詢,修改應該這樣做:

主要是想提醒大家,謹慎操作靜態(tài)常量,能不變就不變,不要寫這么騷的操作了,我這算少的很多40、50臺線上機器的服務,這種問題是真的難發(fā)現(xiàn)。

我是萬萬沒想到,我居然寫出這種代碼,下次再寫出來,只能讓歪歪不要亂點了,免得又點壞了哈哈。

如果您覺得 阿里程序員寫了一個新手都寫不出的低級bug被罵慘了 這篇文章對您有用,請分享給您的好友,謝謝
文章地址:http://www.meyanliao.com/article/online/10299.html
解放雙手無盡可能,有問題添加天線貓微信
主站蜘蛛池模板: 中国无码人妻丰满熟妇啪啪软件| 国产精品ⅴ无码大片在线看| 亚洲午夜无码久久久久| 无码喷水一区二区浪潮AV| 无码中文字幕人妻在线一区二区三区| 久久精品无码午夜福利理论片| 亚洲AV无码一区二区二三区入口| 韩国免费a级作爱片无码| 久久久国产精品无码免费专区| 精品亚洲AV无码一区二区三区| 亚洲美日韩Av中文字幕无码久久久妻妇| WWW久久无码天堂MV| 曰韩人妻无码一区二区三区综合部| 亚洲中文字幕无码亚洲成A人片| 国产成人无码一区二区三区在线| 日韩人妻无码一区二区三区99| 精品久久久久久无码人妻蜜桃| 未满小14洗澡无码视频网站| 少妇人妻av无码专区| 无码视频免费一区二三区| 亚洲av片不卡无码久久| 无码精品A∨在线观看中文| 国产成人精品无码片区在线观看| 亚洲高清无码专区视频| 秋霞鲁丝片无码av| 西西4444www大胆无码| 亚洲人成无码www久久久| 韩国19禁无遮挡啪啪无码网站| 日韩久久无码免费毛片软件| 久久激情亚洲精品无码?V| 久久午夜无码鲁丝片午夜精品| 国产精品午夜无码体验区| 好硬~好爽~别进去~动态图, 69式真人无码视频免 | 小13箩利洗澡无码视频网站| 亚洲日韩国产二区无码| 国产精品无码av在线播放| 亚洲中文字幕无码爆乳av中文 | 中文无码乱人伦中文视频在线V| 精品无码一区二区三区亚洲桃色| 亚洲人AV在线无码影院观看| 亚洲av无码乱码在线观看野外|