| 術語 | 定義 |
| Host | 擁有 JVM、接入網絡的硬件設備 |
| Group | 服務邏輯分組(如「打印機組」),Lookup Service 關聯一或多個 Group |
| Discovery Entity | 同一 Host 內協作發現 Lookup Service 的 Java 對象集合 |
| Join Entity | 已獲取 Lookup Service 引用,正在查詢/註冊的對象集合 |
發現協議三階段
1. 多點傳送請求
Discovery Entity 發送 UDP 組播請求尋找 Lookup Service,適用於啟動階段或瀏覽器場景。
2. 多點傳送宣布
Lookup Service 啟動或網絡恢復時,組播宣告自身存在(含單點服務地址)。
3. 單點傳送發現
雙方獲知對方地址後,建立 TCP 連接,Discovery Entity 主動發送請求,Lookup Service 返回輔助註冊的 Java 對象(ServiceRegistrar 代理)。
三階段協作:啟動用組播請求 → 定期切換為監聽組播宣布 → 已知地址直接單點連接。三協議以獨立線程運行,由 Discovery Entity 協調。
加入協議與租約機制
服務需持久化保存四類狀態:
- 全局唯一服務 ID
- 服務屬性集(狀態變更需同步更新所有已註冊 Lookup Service)
- 目標 Group 集合
- 強制註冊的特定 Lookup Service 列表
租約管理:
- 註冊成功獲得
Lease,服務維護「已註冊 Lookup Service 表」與「租約表」
- 定期續租保證有效性
- 退出時取消相關租約,防止資源洩漏
- 租約機制賦予系統自愈能力(服務崩潰租約過期自動清理)
服務加入標準流程
- Discovery 獲取
ServiceRegistrar 代理
- 構造
ServiceItem(服務 ID、代理、屬性集)
- 調用
registrar.register(item, leaseDuration)
- 持久化返回的
Lease,啟動續租線程
- 屬性變更時調用
registrar.modifyAttributes() 同步所有 Lookup Service
總結
Discovery/Join/Lease 三位一體,構建了自組織、容錯、動態的服務聯邦。組播發現解決初始連接,單點傳送保證高效通信,租約機制實現生命週期管理,Group 提供邏輯分區。這套協議棧是後來微服務註冊中心(Eureka、Consul、Nacos)的重要啟發來源。
- 上一篇文章: Jini 設備架構與家庭網絡應用實例深度解析
- 下一篇文章: SpringSide 3.1.4 實戰(下):Spring Security 權限體系與 Atomikos 多分據源整合
Copyright ©
程式碼之家 All Rights Reserved