庫存:不能超賣,是這個系統唯一的鐵律
· tech · 約 8 分鐘 · 📚 Re:從零開始做直播代購電商平台 #5
留言解析完、身分掛好單,主線走到心臟:庫存。這個系統的功能清單可以慢慢長,但只有一條規則從第一天就是鐵律——不能超賣。賣掉不存在的貨,是要一個一個跟客人道歉退款的。這章講當年怎麼守這條不變量、它被什麼…
· tech · 約 8 分鐘 · 📚 Re:從零開始做直播代購電商平台 #5
留言解析完、身分掛好單,主線走到心臟:庫存。這個系統的功能清單可以慢慢長,但只有一條規則從第一天就是鐵律——不能超賣。賣掉不存在的貨,是要一個一個跟客人道歉退款的。這章講當年怎麼守這條不變量、它被什麼…
· tech · 約 9 分鐘 · 📚 Re:從零開始做直播代購電商平台 #4
上一章的 FSM 解出了「誰買了什麼」——但那個「誰」,其實只是 FB 給的一串數字。他可能從來沒註冊過我們的平台,可能明天才會登入,可能永遠不會。而庫存現在就要卡給他。這章講全景裡我說「全系列最容易…
#war-story#live-commerce#identity
· tech · 約 5 分鐘 · 📚 Grafana LGTM 可觀測性 #6
三支柱講完了,但有個前提一直被我跳過:訊號要先「進得來」,才有得看。第一篇資料流圖中間那格「採集層」,這篇把它拆開。兩個主角:OpenTelemetry(統一三種訊號的標準)與 Grafana All…
· tech · 約 13 分鐘 · 📚 Re:從零開始做直播代購電商平台 #3
全景和起手式鋪完,進主線第一戰:一則留言,怎麼變成一筆單。這章講「接進來」和「解析」兩段,佔庫存的攻防留給下一章。主角是把聊天室變成收銀機的那台有限狀態機——我們會直接讀它的程式碼。 留言來自三個源:…
· tech · 約 6 分鐘 · 📚 Re:從零開始做直播代購電商平台 #2
全景鋪完,講留言、庫存那些戰役之前,先把當年的武器庫攤開——因為後面每一章的取捨,都是在這套技術棧的邊界裡做的。團隊很小:3 個後端、3 個前端,偶爾發包給外包 1–2 位工程師。武器庫也很樸素:Po…
#war-story#system-design#django
· tech · 約 6 分鐘 · 📚 Re:從零開始做直播代購電商平台 #1
這是一個新系列,也是這個部落格第一個戰爭故事。我在前公司實際做過一個直播代購電商平台——使用者看直播、在留言區打字下單,後面接著庫存、金流、物流一整條鏈。這系列不是回憶錄:我想帶著現在的功力(DDIA…
· tech · 約 4 分鐘 · 📚 Designing Data-Intensive Applications 讀書筆記 #12
終章。前面十一章把儲存、複製、分區、交易、共識、批次、串流一塊塊講完,Kleppmann 在這章把它們收攏成一個大膽的視角:別再把「資料庫」當成一個盒子——把它拆開。 而讀到這裡你會發現,這個「未來」…
· tech · 約 4 分鐘 · 📚 Designing Data-Intensive Applications 讀書筆記 #11
批次處理「已經齊了」的資料;串流處理「一直來」的資料。這章很多地基我在別處鋪過了:log 與 offset 在 Kafka 系列、投遞保證在 delivery 那篇、視窗與 event time 在 …
#distributed-systems#book-notes#streaming
· tech · 約 4 分鐘 · 📚 Designing Data-Intensive Applications 讀書筆記 #10
Part II 在單一系統內把一致性守住了;Part III 的主題換成資料在系統之間流動——而最古老、也最可靠的流動方式,是批次(batch)。DDIA 講 MapReduce 的切入點很別緻:先講…
· tech · 約 5 分鐘 · 📚 Designing Data-Intensive Applications 讀書筆記 #9
上一篇的結論是:任何單一節點的判斷都不可信,真相只能由多數決定。這章講的就是「多數怎麼安全地決定」——DDIA 全書的理論高潮。演算法細節(Raft、Paxos、Zab 怎麼投票換屆)我在 SRE 共…
· tech · 約 4 分鐘 · 📚 Designing Data-Intensive Applications 讀書筆記 #8
上一篇結尾埋了個鉤子:當系統跨到多台機器,連「鎖」和「驗證」本身都變得不可靠。這章就是那個「不可靠」的總清算——也是我認為全書最該精讀的一章。核心一句話:單機世界是確定性的,要嘛全好、要嘛全壞;分散式…
· tech · 約 4 分鐘 · 📚 Designing Data-Intensive Applications 讀書筆記 #7
交易的地基我在 SQL 系列鋪過了:ACID 的重點是 I、髒讀/不可重複讀/幻讀三種怪事、四個隔離層級的光譜、MVCC 怎麼讀不擋寫——那些這篇不重複。DDIA Ch7 真正的加值在後半:兩個連「快…
· tech · 約 4 分鐘 · 📚 Designing Data-Intensive Applications 讀書筆記 #6
複製是同一份資料放多台;分區(partitioning,也叫 sharding)是把資料切開,每台只放一部分——當資料量一台裝不下、或寫入 throughput 一台吃不消,這是唯一的出路。兩者幾乎總…
· tech · 約 4 分鐘 · 📚 Designing Data-Intensive Applications 讀書筆記 #5
進入 Part II,資料開始跨機器。第一招是複製(replication):同一份資料放多台,為的是三件事——一台掛了還能服務(高可用)、資料放得離使用者近(低延遲)、讀流量攤出去(擴讀)。如果資料…
· tech · 約 4 分鐘 · 📚 Grafana LGTM 可觀測性 #5
三支柱最後一個:traces。它補的是 metric 和 log 之間那個最關鍵的洞——「在哪一段?」 Metric 告訴你「checkout 慢」,但一個請求橫跨了八個服務,到底卡在哪一 hop?L…
· tech · 約 4 分鐘 · 📚 Designing Data-Intensive Applications 讀書筆記 #4
上一篇講資料怎麼放上磁碟,這篇講一個更容易被輕視的問題:資料寫出去時,是用什麼格式編碼的? 你可能覺得「JSON 就好了啊」——直到 schema 要改的那一天。這章的重量,來自兩個躲不掉的事實:資料…
· tech · 約 4 分鐘 · 📚 Grafana LGTM 可觀測性 #4
三支柱第二個:logs。而 Loki 最該懂的一件事,是它一個很聰明、很省的設計選擇——它不像傳統 log 系統(ELK)那樣索引全文,而是「像 Prometheus 一樣只索引 label」。這個選…
· tech · 約 4 分鐘 · 📚 Designing Data-Intensive Applications 讀書筆記 #3
上一篇選好了資料模型,這篇往最底層鑽:資料庫到底怎麼把資料放上磁碟、又怎麼找回來? DDIA 這章從一個兩行 bash 的「全世界最簡單資料庫」開場——dbset 就是往檔案尾巴 append 一行,…
· tech · 約 5 分鐘 · 📚 Grafana LGTM 可觀測性 #3
三大支柱進第一個,也是骨幹:metrics。它是你「有沒有問題」的第一道防線,也是後面告警和 SLO 的底層數字。而 metrics 世界的事實標準,是 Prometheus。這篇講它的資料模型、為什…
· tech · 約 5 分鐘 · 📚 Grafana LGTM 可觀測性 #2
第一篇那張資料流圖,最右邊那格是 Grafana。這篇把它拆開——而理解 Grafana,其實只要抓住一句反直覺的話:它不存任何觀測資料,它只是一塊拿來「問」的玻璃。 想通這句,它的所有特性就都通了。…