首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Jini 基礎設施核心協議:查找、發現與加入機制全解析

     編輯:Java 相關知識

架構總覽

Jini 即插即用基礎設施由三組協議構成:

  • Discovery(發現):實體尋找 Lookup Service
  • Join(加入):服務向 Lookup Service 註冊
  • Lookup(查找):客戶端查詢服務的中央註冊表

Lookup Service 類比「動態電話簿」:服務主動註冊/註銷,支援屬性動態更新、事件通知、管理界面托管。

Lookup Service 服務模型

  • 表項包含:服務代理(可序列化對象)、可擴展屬性集(Entry 子類)
  • 管理員通過事件回調感知服務上下線、狀態變更(如紙張不足)
  • 服務可托管管理 UI 到 Lookup Service,統一運維入口

核心術語定義

發現協議三階段

1. 多點傳送請求

Discovery Entity 發送 UDP 組播請求尋找 Lookup Service,適用於啟動階段或瀏覽器場景。

2. 多點傳送宣布

Lookup Service 啟動或網絡恢復時,組播宣告自身存在(含單點服務地址)。

3. 單點傳送發現

雙方獲知對方地址後,建立 TCP 連接,Discovery Entity 主動發送請求,Lookup Service 返回輔助註冊的 Java 對象(ServiceRegistrar 代理)。

三階段協作:啟動用組播請求 → 定期切換為監聽組播宣布 → 已知地址直接單點連接。三協議以獨立線程運行,由 Discovery Entity 協調。

加入協議與租約機制

服務需持久化保存四類狀態:

  1. 全局唯一服務 ID
  2. 服務屬性集(狀態變更需同步更新所有已註冊 Lookup Service)
  3. 目標 Group 集合
  4. 強制註冊的特定 Lookup Service 列表

租約管理:

  • 註冊成功獲得 Lease,服務維護「已註冊 Lookup Service 表」與「租約表」
  • 定期續租保證有效性
  • 退出時取消相關租約,防止資源洩漏
  • 租約機制賦予系統自愈能力(服務崩潰租約過期自動清理)

服務加入標準流程

  1. Discovery 獲取 ServiceRegistrar 代理
  2. 構造 ServiceItem(服務 ID、代理、屬性集)
  3. 調用 registrar.register(item, leaseDuration)
  4. 持久化返回的 Lease,啟動續租線程
  5. 屬性變更時調用 registrar.modifyAttributes() 同步所有 Lookup Service

總結

Discovery/Join/Lease 三位一體,構建了自組織、容錯、動態的服務聯邦。組播發現解決初始連接,單點傳送保證高效通信,租約機制實現生命週期管理,Group 提供邏輯分區。這套協議棧是後來微服務註冊中心(Eureka、Consul、Nacos)的重要啟發來源。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
術語定義
Host擁有 JVM、接入網絡的硬件設備
Group服務邏輯分組(如「打印機組」),Lookup Service 關聯一或多個 Group
Discovery Entity同一 Host 內協作發現 Lookup Service 的 Java 對象集合
Join Entity已獲取 Lookup Service 引用,正在查詢/註冊的對象集合