Day 29:全系列整合驗收,跑一次完整的高併發情境 結尾留下一個問題:這趟旅程累積了大量具體的知識與實作經驗,但退一步問,這一切最初是為了回答什麼問題?答案要...
Day 29:全系列整合驗收,跑一次完整的多來源下載情境 結尾留下一句話,這中間走過的距離,該回頭看一眼了。今天就正式做這件事。 回到 Day 1 那個轉圈圈的...
Day 28:部署上線的協程專屬檢查清單 收尾時說,檢查清單確認完畢,理論上系統已經準備好上線,但清單畢竟是清單,逐項對照設定值是否合理,跟系統實際從請求進來到...
Day 28:協程常見陷阱總盤點,這些坑我們都踩過 結尾留下一個疑問,一個具備多來源平行下載、資料流回報進度、例外處理這些真實複雜度的完整專案,要怎麼確保自己從...
Day 27:壓力測試,驗證系統在高併發下真的撐得住 讓訂單服務實戰整合版在受控的測試環境裡,真正經過一次考驗。節流、資料正確性、監控機制,大致都表現得符合預期...
Day 27:收斂進一個具名專案,圖片下載工具完整版,順便看看 Android 與 Ktor 怎麼用 結尾留下一個疑問,圖片下載工具完整版示範的都是正確組合起來...
Day 26:Metrics 與監控,量化你的協程效能表現 結尾留下一句話,講得直接:這些監控機制目前為止還只是安靜地掛在那裡,等著哪天真正被高併發流量考驗一次...
Day 26:幫協程寫測試,runTest 與虛擬時間排程器 結尾留下一個問題,前面累積的所有觀念,放進一個真實一點的專案裡會長成什麼樣子。今天正面回答這個問題...
Day 25:可觀測性第一步,讓協程執行狀況不再是黑盒子 收尾時把話說得很直接:日誌能回答「這一個請求發生了什麼」,卻回答不了「這個系統整體長什麼樣子」。如果想...
Day 25:小結:Flow 資料流工具箱總覽,準備進測試與收斂期 結尾拋出一個問題:如果想確定一段協程程式碼在各種時間差、取消時機下的行為都符合預期,而且不想...
Day 24:庫存扣減的併發正確性,用資料庫機制取代分散式鎖 收尾時老實承認了一件事:樂觀鎖的版本衝突實際上發生得頻不頻繁,悲觀鎖的等待實際上會讓請求卡多久,這...
Day 24:背壓是什麼,生產太快時該怎麼踩煞車 結尾提到,本階段用來處理協程資料流的核心工具已經全部到齊,這幾樣工具彼此之間的關係,值得回頭整理一次。 今天要...
Day 23:把併發控制手段實際裝進訂單服務 結尾講得很直白:Semaphore 與 withTimeout 這兩道防護都裝上了,但真正動到庫存數量本身的那個操...
Day 23:Flow 底層其實是 Channel,兩者的關係是什麼 停在一個問題上:今天談到的暫停等待,處理的都是速度差距還在合理範圍內的情境,如果生產資料的...
Day 22:收斂進一個具名專案,訂單服務實戰整合版啟動 結尾說得很坦白:骨架能動,不代表它已經具備任何高併發防護。OrderService.getOrderD...
Day 22:Channel,協程之間怎麼傳話 停在一個問題上:Channel 讓一個協程把資料一筆一筆接力遞交給另一個協程,而收集 Flow 的時候,資料同樣...
Day 21:小結,高併發控制的工具箱總覽,準備進實戰 把併發深化期七天累積的節流、逾時取消、背壓、連線池搭配與 k6 量測方法論收攏成一份完整的工具箱,也提前...
Day 21:StateFlow 與 SharedFlow,冷流不夠用的時候 停在一個新的情境上:如果一個協程產生了一批資料,需要一筆一筆像接力一樣,直接遞交給...
Day 20:實測結果解讀,協程贏在哪裡、代價又是什麼 結尾說得很直接,七天下來累積了節流、逾時取消、背壓、連線池搭配,再加上一套完整的效能量測方法論,五樣工具...
Day 20:Flow 的操作符,map、filter、collect 這些常用招式 結尾點出一件事,前面兩天示範的所有 Flow,處理的都還是「每次收集就從頭...
Day 19:幫協程模型量身打造一場效能比較 把該準備的都準備好了:公平比較的規則講清楚了,k6 定案為全系列壓測工具,模擬促銷流量爬升的測試情境也設計完成。昨...
Day 19:從回傳一個值到回傳一串值,Flow 是什麼 停在一個問題上,拿到一串進度數值,如果需要過濾掉不需要的中間值,或者轉換成另一種格式才呈現給使用者,難...
Day 18:協程遇上 R2DBC 連線池,小心連線被偷偷耗盡 結尾留下一個問題:協程模型相對於 Thread-per-Request 模型,實際上能帶來多少效...
Day 18:小結:協程的執行環境與例外治理工具箱總覽 結尾把系列至今出現過的所有任務攤開來看,下載一張圖片,或者聚合多個來源的結果,本質上都是執行一次、拿到一...
Day 17:背壓是什麼,生產太快時該怎麼踩煞車 結尾留下一個問題:背壓機制確實能避免資料無限制堆積,但消費端實際處理這些資料時,往往需要依賴某項數量有限的資源...
Day 17:try-catch 在協程裡為什麼有時候沒用 結尾提到,從 Dispatchers 談到那一天,這個階段已經一路建立起協程執行環境與例外治理的主要...
Day 16:逾時與取消,讓卡住的協程別拖垮整個系統 結尾留下一個問題:withTimeout 解決的是某個協程異常卡住太久的狀況,但如果問題根本不是卡住,而是...
Day 16:CoroutineExceptionHandler,例外最後會被誰接住 結尾留下一個疑問:既然 CoroutineExceptionHandler...
Day 15:併發限制,用 Semaphore 保護下游別被打爆 結尾留下一個問題:Semaphore 確實能保護下游資源不被瞬間打爆,但如果同時湧入的請求量遠...
Day 15:一個協程失敗,其他協程要不要一起死,SupervisorJob 登場 結尾留下一個疑問:知道了 SupervisorJob 能讓一個子協程的失敗不...