來都來了!看我的搶票系統如何大翻車,再到優雅應對高併發的奇蹟術,這次用 Go 語言實作來場「煉金術」,一起實踐 Cloud Native 的思維。
Go 語言搶票煉金術 Day1 -工程師的價值,是將程式碼煉成金礦 在開始之前,想先問一個問題: 我們為什麼不稱之為「Go 語言搶票程式設計」,而要用 煉金術...
Go 語言搶票煉金術 Day 2 - 併發陷阱:為什麼你的搶票系統總在超賣? 在高併發場景下,當多個請求試圖同時修改同一個資源時——例如搶票系統中的庫存數量—...
Go 語言搶票煉金術:Day 3 - Go 的併發工具 (一):goroutine 與 WaitGroup 上次我們證明了在沒有任何併發控制下,一個簡單的「讀...
Go 語言搶票煉金術:Go 的併發工具箱 (二):Mutex 與 RWMutex 上一篇,我們學會了如何使用 goroutine 來實現併發,並用 WaitG...
Go 語言搶票煉金術 Day 5 - Go 的併發工具箱 (三):Channel 的消息傳遞 在前幾篇文章中,我們探討了 goroutine 如何讓我們輕鬆地...
Go 語言搶票煉金術 Day 6 - 常見陷阱:為什麼不能用 Go 的鎖來解決資料庫的併發問題 在前面幾篇我們證明了基本的「讀取 → 修改 → 寫入」模式會導...
Go 語言搶票煉金術 Day 7 - 資料庫方案:如何用原子 UPDATE 解決競爭條件 昨天我們證明了用 Go 的記憶體鎖 sync.Mutex 鎖不住跨越...
Go 語言搶票煉金術 Day 8 - 度量標準:來寫你的第一個壓力測試 工程是科學,在我們對架構做出任何重大改動之前,必須先有客觀的數據作為決策依據。 在上一...
Go 語言搶票煉金術 Day 9 - 識別真正敵人:為什麼磁碟 I/O 是不可逾越之牆 在上一篇,我們的壓力測試在 1500 RPS 時撞牆了。根本原因是資料...
Go 語言搶票煉金術 Day 10 - 引入 Redis 新盟友 在前篇,我們發現了資料庫的物理極限:磁碟 I/O 的 15-50 微秒延遲,在高併發熱點寫入...