為什么有些客戶覺得讓程序員抄一個淘寶很簡單?
大概因為他只能看到查詢,下單,結賬這三個功能,而看不到背后涉及到的高并發,事務,數據不一致,大數據存儲與查詢等等場景帶來的風險。
接下來,我們簡單分析下這些風險。
高并發這個和12306賣火車票有點像,既然是賣東西,就勢必涉及到數據一致性的問題。如果一個產品只剩下最后一件了,,但是此時有兩百個各自獨立的線程跑過來說我要下單結賬,那么這最后一個該給誰呢。我們說的再詳細一點,購買的邏輯簡要的過程如下:
1 將產品放入購物車,此時只要產品余量不為0,就可以執行成功,也就是說,就算此時產品只剩下1件,也可被200個人放入購物車。
2 點擊結算,發送請求到服務器,生成訂單
3 將訂單返回給用戶,由用戶確認訂單信息無誤后
4 用戶發起結賬請求
5 網站與銀行溝通,申請扣款
6 銀行反饋扣款成功
7 告知用戶訂單結賬完畢
這個過程有兩個點非常重要,分別是
a)生成訂單,即如果此時200個請求來搶同一個產品,那么就會涉及到數據一致性,通常需要用分布式鎖來解決,
b)與銀行通信過程其實并不是原子的,因此需要保證這個過程的原子性,并且不會出現明明已經扣款,卻顯示失敗等讓用戶恐慌的情況。
大數據存儲與查詢淘寶每天的查詢并發量難以估計,而不算成交量,僅僅是把這些數據寫入“我的足跡”這里,每天涉及到的數據存儲都是非常可怕的。不僅如此,有存儲就有對應的查詢,這已經不是一個簡單的創業公司用一個MySQL+redis就能實現的了。想象一下你打開淘寶,查看自己的訂單/足跡的時候,那其實是從浩如繁星的數據中,火速幫你精確找出來的啊。
因此,對于不懂技術的老板來說,微信,淘寶,百度搜索引擎,都是很容易抄的,人家都做出來了,你抄一抄就好了嘛。
以上是我的淺見,歡迎各位在下方評論區吐槽留言。
我是蘇蘇思量,來自BAT的Java開發工程師,每日分享科技類見聞,歡迎關注我,與我共同進步。