後端系統開發之白名單機制
後端系統中經常會聽到“某某白名單”的名字,為什麽要有白名單呢?使用白名單機制有什麽好處?
一首膾炙人口的兒歌可以幫我們領悟答案。
“小白兔乖乖,把門兒開開。快點開開,我要進來。
不開不開就不開,媽媽沒回來,我就不開門。”
小白兔的媽媽在能開門的白名單裏。顯然,白名單機制是一種簡單易行的系統自我保護機制,沒有白名單的“開門系統”存在嚴重的安全隱患。
在大型後端系統中,白名單機制是必不可少的,主要用在以下幾個方面:
黑名單的對立面。這是白名單最明顯的應用場景,例如微信朋友圈禁止抖音、快手等平臺的短視頻分享,但是微信、QQ等APP拍攝的小視頻是可以分享的,所以這裏有一個“短視頻分享白名單”在起作用。
測試帳號。我們在測試新功能的時候,剛開始不想對所有用戶都生效,可以通過白名單機制限制生效範圍,利用白名單的思想可以對賬號進行分類,只有在白名單中的測試帳號才能體驗新功能,不在白名單中的賬號則完全無感知。
上線控制。舉個例子:A公司的產品有PC、APP、微信、小程序等4個客戶端,現在由於公司業務發展,需要緊急上線某個功能,由於各客戶端的開發任務都很重,只有APP和微信順利完成開發,PC和小程序要延期上線,這時後端系統顯然不能對所有客戶端渠道都開放新功能,可以通過新增一個該功能的白名單配置,控制上線節奏。示意如下:
X功能上線範圍 = APP,Weixin
有了這個白名單,就可以玩出花樣來:
PC、小程序上線,可以修改白名單,增加配置;
後端系統發現該功能的一個BUG,該BUG只影響APP,而不影響微信,可以修改白名單配置,讓APP的功能緊急下線處理,但是微信仍然保留,待BUG解決後再對APP上線。
限制範圍。嚴格來說特權賬號、測試帳號和上線控制都是限制範圍的例子,所以說限制範圍其實是最能體現後端系統中白名單機制威力的場景,工程師們可以利用各種白名單機制縮小某個功能的生效範圍,從而實現系統自我保護。寫到這裏的時候,不禁想起剛剛過去沒有多久的拼多多一張測試優惠券跑到線上的嚴重BUG,後端系統一定要通過設置各種限制條件,防止此類悲劇的發生。
白名單如何實現:白名單實現非常簡單,配置文件、數據庫中的表都可以用來實現白名單。白名單一般最終會加載到內存中,通常用set或者map存儲,以方便快速查找。
一句話總結:白名單機制是一種簡單易用的技術手段,利用白名單機制方便測試和上線控制,實現各類功能限制,保護系統安全和工程師職業生涯。
金句分享
就在剛才,我註冊了一家自己的公司。任何公司都是從一筆錢開始的,所以我的公司現在除了錢之外什麽都沒有。
出自《一本書讀懂財報》,作者是清華大學會計學主任,肖星。
解讀:把知識講的有趣生動是非常了不起的本事,這本有趣的書只有192頁,推薦大家閱讀。
後端系統開發之白名單機制