透過實作從零開始學習 Golang, Elasticsearch, Kubernetes
筆者為了從零開始學習這三個技術所以揉合出這個主題。 主要是把實作驗證後的知識記錄下來,除了實作步驟,也會講為什麼這麼做、背後的優缺點是什麼,讓理論跟實作並行。...
昨天的前言裡,我們談了這個系列的動機和最終目標:用 Golang、Elasticsearch 和 Kubernetes 打造一個雲原生搜尋服務。今天正式進入第一...
昨天我們建立了最小的 REST API /healthz,伺服器可以正常回應 "ok"。 今天要為專案補上 測試骨架,讓我們在之後開發新功能...
到目前為止,我們的服務只有一個最小骨架:一個 /healthz API 和對應測試。 今天開始,我們要讓服務「更像一個真的服務」,加上 中介層 (middlew...
昨天我們加上了中介層:logging、recovery、config。今天要邁出關鍵的一步:建立第一個業務相關 API —— /search。 雖然我們還沒有連...
昨天我們讓 /search API 成形,雖然只是回假資料,但已經建立了 API 雛型。 今天要讓服務更可靠:加入 context/timeout。 這一步很重...
喵一眼今日重點: 用 %w 包裝錯誤(可疊代追蹤來源) 分類重試(什麼錯誤該重試、什麼不該) 退避 + 抖動(exponential backoff wi...
到目前為止,我們已經有了 /search、中介層、context/timeout 與錯誤策略。今天目標是: 寫幾個微基準來量測「一小段可重複的關鍵程式」,建立...
Go 的一大賣點就是 goroutine,開發者可以開成千上萬個 goroutine 來並行處理。但如果不設限,所有請求同時打爆下游,就會出現: 下游服務(例...
到目前為止,我們寫了 table-driven 測試、加了 context/timeout、做了微基準。今天要進一步學會: 啟動 pprof:在程式中暴露...