專案背景
XMemcached 是高效能 Java Memcached 客戶端,官方文檔較少,本文透過 UML 類別圖與序列圖梳理核心架構,協助開發者快速理解原始碼。
核心類別圖

關鍵類別與關係:
- MemcachedClient:客戶端主介面,定義
get/set/delete 等操作
- MemcachedClientBuilder:建構器模式,配置連線池、序列化、失效轉移策略
- ConnectionPool:管理與多台 Memcached 伺服器的長連線
- CommandFactory:建構 Get/Set/Delete 等命令物件
- Transcoder:序列化/反序列化介面,預支援 Java 序列化、Kryo、Protostuff
- SessionLocator:鍵值分片演算法(Ketama 一致性雜湊)
- FailureMode:失效處理策略(Cancel/Redistribute/Retry)
Get 操作序列圖

流程步驟:
- Client 呼叫
get(key)
SessionLocator 計算目標伺服器節點
- 從
ConnectionPool 取得/建立連線
CommandFactory 建立 GetCommand
- 非同步發送命令,**註冊 Callback**
- **等待回應(非阻塞,由 NIO 事件驅動)**
- 收到回應,
Transcoder 反序列化
- 觸發 Callback,回傳結果給呼叫端
關鍵設計亮點
- 全非同步 NIO:單執行緒處理數千連線,無執行緒池開銷
- 一致性雜湊:節點增減僅影響少量鍵值遷移
- 可插拔序列化:Transcoder 介面支援多種格式
- 失效轉移:備援節點自動重試,配置靈活