"Go-Advanced"
- 1.1 channel ownership 與關閉責任
判斷誰能送出、接收與關閉 channel
- 2.1 read pump / write pump 模式
分離 WebSocket 讀取、寫入與心跳
- 3.1 GC 與 memory limit
理解 debug.SetMemoryLimit 在長時間服務中的用途
- 4.1 事件來源、處理流程與狀態邊界
分辨事件來源、事件融合、處理流程、狀態真相與推送邊界
- 5.1 時間注入與狀態轉移測試
讓時間相關邏輯可重現
- 6.1 graceful shutdown 與 signal handling
用 signal 與 context 傳遞停止訊號
- 7.1 資料庫 transaction 與 schema migration
把 repository 邊界延伸到資料庫交易、migration 與一致性語意
- 1.2 select loop 的生命週期設計
理解長時間運行 goroutine 如何同時處理事件、ticker 與取消
- 2.2 heartbeat、deadline 與連線清理
用 ping/pong 和 deadline 偵測失效連線
- 3.2 pprof 基礎診斷流程
用 pprof endpoint 診斷 heap、goroutine 與 CPU 問題
- 4.2 事件去重與語義鍵設計
用 entity ID、event type、來源語意與時間窗口建立去重鍵
- 5.2 WebSocket integration test
驗證 client/server 實際互動
- 6.2 健康檢查與診斷 endpoint
區分服務可用性與工程診斷入口
- 7.2 Durable queue、outbox 與 idempotency
設計跨 process 事件傳遞的可靠性與去重邊界
- 1.3 非阻塞送出與事件丟棄策略
設計 channel 滿載時的服務行為
- 2.3 訂閱模型與訊息路由
將 client action 對應到主題訂閱狀態
- 3.3 goroutine leak 偵測
判斷背景工作與 client pump 是否正確退出
- 4.3 Source of Truth:狀態邊界
集中狀態更新、保護可變資料、設計查詢 projection
- 5.3 race condition 檢查
用 go test -race 找資料競爭
- 6.3 結構化日誌欄位設計
讓 log 可 grep、可聚合、可追蹤
- 7.3 跨節點 WebSocket、presence 與重連協定
把單一 server 的 WebSocket hub 擴展到多節點推送與連線狀態
- 1.4 共享狀態與複製邊界
用 lock 與 copy 保護長期服務的狀態資料
- 2.4 慢客戶端與 send buffer 管理
控制推送佇列與記憶體風險
- 3.4 資料結構與 allocation 壓力
分析列表、歷史資料與 WebSocket payload 的配置成本
- 4.4 多來源 event 融合
合併 HTTP、queue、timer 與外部事件來源
- 5.4 table-driven test 的設計邊界
避免測試資料混雜太多概念
- 6.4 版本偵測與 feature gate
依版本與環境能力啟用功能
- 7.4 Observability pipeline、metrics 與 tracing
把 structured log、metric、trace 與 profile 組成可操作的診斷系統
- 1.5 bounded worker pool
限制同時執行的 goroutine 數量,讓背景工作有明確容量邊界
- 7.5 Kubernetes、systemd 與 load balancer 合約
理解部署平台如何影響 Go 服務的 shutdown、health 與資源限制
- 1.6 rate limiting 與 backpressure 用本地速率限制與 backpressure 策略保護服務入口與下游依賴
- 7.6 CI、fuzz、load test 與 chaos testing
把單元測試與整合測試擴展成服務可靠性驗證流程