JGroups是一個(gè)可靠的群組通訊Java工具包。它基于IP組播(IP multicast),但在可靠性,組成員管理上對(duì)它作了擴(kuò)展。jgroups是一個(gè)用于建立可靠的組播通訊工具。這里的組播并不一定指IP Multicast,jgroups同樣支持TCP JMS作為傳輸協(xié)議。
JavaGroups主要功能特征:
- 組的創(chuàng)建與刪除。組成員能在LAN或WAN環(huán)境內(nèi)互相發(fā)送消息
- 組的成員加入或離開
- 組成員的檢測(cè)和通知:加入,離開,掉線
- 檢測(cè)與移除已掉線的成員
- 消息的組播 (member-to-group或point-to-multipoint)
- 消息的點(diǎn)對(duì)點(diǎn)發(fā)送 (member-to-member或point-to-point)
- 支持UDP (IP Multicast), TCP, JMS等傳輸協(xié)議
- 免費(fèi)開放源代碼
JGroups 配置:
PING: 發(fā)現(xiàn)初始成員
MERGE2: 將網(wǎng)絡(luò)層切分的包重新合并。
FD_SOCK: Failure Dectection 錯(cuò)誤檢測(cè),基于TCP
FD:Failure Dectection 錯(cuò)誤檢測(cè),基于心跳
VERIFY_SUSPECT: 檢查貌似失敗的節(jié)點(diǎn)
pbcast.NAKACK: 應(yīng)答,提供可靠傳輸
UNICAST: 可靠的UNICAST
pbcast.STABLE: 計(jì)算廣播信息是否穩(wěn)定
VIEW_SYNC: 定期廣播view(成員名單)
pbcast.GMS: Group membership, 處理joins/leaves/crashes等
FC: 流量控制
FRAG2:Fragmentation layer,分包,將大的數(shù)據(jù)包分拆成適合網(wǎng)絡(luò)層傳輸
JGroups的可靠性體:
1,對(duì)所有接收者的消息的無(wú)丟失傳輸(通過(guò)丟失消息的重發(fā))
2,大消息的分割傳輸和重組
3,消息的順序發(fā)送和接收
4,原子性:消息要么被所有接收者接收,要么全不
JavaGroups的成員關(guān)系管理體現(xiàn)在:
1,可以知道組內(nèi)有哪些成員
2,成員的加入,離開,掉線等的通知