非直連(異步)模式動機
直連模式下慢 SQL 阻塞業務線程,異步模式將 SQL 執行移至專用線程/進程,主線程發送請求消息即返回,結果通過回調/消息通知。
架構組件
- 請求消息結構:含 SQL 文本、參數、請求 ID、回調函數指針/消息隊列 ID。
- 專用 DB 執行線程/進程:循環取請求隊列、執行 SQL、將結果封裝發送至回調隊列。
- 結果回調處理:主線程在回調中解析結果、續行業務邏輯。
流程時序
- 主線程構造請求 → 入請求隊列 → 立即返回。
- DB 線程取請求 → 執行 → 封裝結果 → 入回調隊列。
- 主線程收到回調 → 解析 → 業務續行。
關鍵設計點
- 請求 ID 匹配請求與回調,支持併發多請求。
- 超時機制:主線程啟動定時器,超時未收回調走降級邏輯。
- 連接池:DB 線程複用連接,避免頻繁建連開銷。
- 錯誤傳遞:執行失敗在回調中攜帶錯誤碼,統一處理。
優缺點對比
| 維度 | 直連(同步) | 異步 |
| 實時性 | 高 | 略低(隊列延遲) |
| 阻塞風險 | 高 | 無 |
| 複雜度 | 低 | 高(需隊列/線程/回調) |
| 適用場景 | 簡單查詢、低併發 | 高併發、慢查詢、核心業務 |