什么是MultiGroups?JGroups详解
1 基本信息
(相关资料图)
摘要:介绍什么是Multicast,什么是JGroups,以及JGroups详解
2 什么是Multicast
Multicast是一种同时像多台机器发送数据的机制。Multicast使用224.0.0.0 到239.255.255.255 这段IP来传送数据,这段IP地址是保留的,发送到这上面的数据不会通过你的子网转发。在RFC-1060中定义了一部分预留的组播地址,使用时应注意不要重复。
一些比较特别的组播地址:
1) 224.0.0.0 这个是保留地址,不会被指定到任何的组播组 2) 224.0.0.1 这个地址在所有的主机上被指定为一个永久组播组,这个地址可以用来找到本地子网内所有的组播主机。使用ping 224.0.0.1可以查看这些地址。
在一个组播中的所有主机使用一个相同的组播地址,它们被称为一个组(Group),组中的成员是动态的,他们可以随时加入或者离开组。每台主机可以同时是多个组的成员,也可以不属于任何一个组。比较特别的是,并不是只有组中的成员才可以给组发送数据。组分为两种,一种是永久性的,一种是动态的。对于永久性的组,他们拥有一个众所周知的管理IP地址,这个地址不是组中的成员,它是永久的。永久性的组可以拥有任何数量的成员,甚至没有成员。而动态组只有在拥有成员的时候才存在。JGroups使用的就是动态组来实现组播数据的。
3 什么是JGroups
JGroups是一个可靠的组播通讯工具集(需要说明的是,这并不是说必须要使用IP Multicast,JGroups也可以使用TCP来实现)。JGroups可以用来创建一个组,这个组中的成员可以给其他成员发送消息。
JGroups的主要功能如下:
1)创建和删除组,组成员可以分布在局域网或广域网中。 2)组成员加入和离开组 3)成员关系的自动侦测并通知成员的加入,离开和丢失(原文是crashed,大意就是说没有通知的离开吧) 4)侦测并删除丢失的成员 5)发送和接收成员到组的消息(点到多点) 6)发送和接收成员到成员的消息(点到点)
JGroups使用灵活的协议栈,这也是JGroups最强大(the most powerful)的功能,它允许开发人员配置协议栈来适用于他们自己的应用需求和网络特征。这样做的好处在于,开发人员只需要关注他们使用到的协议。通过组合和匹配各种协议来满足各种不同应用的需求。JGroups实现了一系列的协议(开发人员也可以编写他们自己的协议),例如:
传输协议:UDP(IP Multicast),TCP,JMS 分块协议:FRAG和FRAG2用来将大消息分块发送 可靠传输协议: UNICAST和NAKACK 失败侦测:FD(passive failure detection),VERIFY_SUSPECT。自动将丢失的成员排除到成员列表以外。 排序协议:Atomic (发送所有或者全部不发), FIFO, Causal, Total Order (序列或基于分块) 成员协议:GMS(Group membership)用来处理成员的加入和离开 加密:AES/ECB/PKCS5Padding/RSA...对传输的数据进行加密 其他还包括流量控制,统计等
4 JGroups详解
注意:以下内容基于JGroups 2.2,获取最新信息请访问www.jgroups.org
4.1 基本结构
讲解之前我们先来看一个图,有一个直观的概念先
其中有几个比较重要的概念需要解释一下:
Channel
一个Channel表示一个组播通讯的endpoint。客户端通过连接一个组播地址的Channel来加入一个组。
Channel的FSM(状态机)大致如下:
unconnected:表示这个Channel创建了 connected:表示这个Channel已经连接到一个组,并可以发送和接收消息 unconnected:表示这个Channel从一个组断开,并可以加入其他组 closed:表示这个Channel已经关闭
一个Channel同时只能有一个发送者发送消息(同步的),当然一个应用可以有多个Channel。可以使用Channel上send和receive(拉,可以通过linstener来实现推的模式)方法来发送和接收消息。
Protocol Stack
协议栈管理一组协议,并维持他们的上下关系,它负责创建所有的协议,并初始化和启动它们。它同时负责将从协议上接收到的消息发送到注册的对象上,比如Channel和GMP,并将来自这些对象的消息下发到协议栈上。 协议栈可以通过Configurator来设置,初始化,停止和删除协议。
Event
用来在协议层之间传递消息
Protocol
协议层被按顺序的放置到协议栈中。Event被从底层向上传递,比如UDP层接收到一个消息后,此消息将被当作一个Event向上层传递。每层协议都将按顺序处理Event,直到有一层发送一个响应或者丢弃这个消息。发送消息同样,只是从上而下调用协议层。
每个协议都包括两个FIFO的队列,一个存放用来向下消息,一个用来存放向上的。无论消息上行还是下行都将先进入队列,并有相应的队列处理(up-handler和down-handler)来处理它们(调用这个协议上的up和down方法),协议的实现只需要实现相应的up和down方法,而无须关心这些内容。
有一点要特别指出的是,消息在协议层之间传递是按照FIFO顺序的,所有的协议实现必须保证这一点。
4.2 协议详解
JGroups中有非常多的协议实现(约50种),这里不可能全部拿来讲,我挑选一些比较常用的协议来讲,其他的可以通过查看Javadoc或者JGroups的源代码来了解。
说明:以下协议中讲到到参数也只是常用参数,具体内容请查阅javadoc。
4.2.1 数据传输及网络层协议
这个协议是协议栈中相当重要的部分,它来完成数据的发送和接收。
JMS
使用Java Message Service (JMS)实现的传输协议,此协议依赖JMS服务器来分发消息,JMS服务器将发消息发送到特定的Topic下,所有订阅此Topic的将收到消息。关于JMS请访问:http://java.sun.com/products/jms/
需要注意的是当使用JMS作为数据传输协议时应避免使用那些打开服务器连接的协议,比如FD_SOCKET。这JMS里FD比FD_SOCKET更合适。(关于FD和FD_SOCKET请看下面的介绍)
参数表如下:
TP
这是一个传输协议的抽象类,TCP和UDP都是从这里继承而来,主要将将它的一些配置,这些配置都可以用再UDP和TCP协议上。
参数表如下:
TCP,TCP_NIO
使用TCP实现的传输协议,创建一个ServerSocket来监听消息。对于每个连接(accept())都会创建一个线程来监听其消息,所有的外发的消息对于每个目标地址都使用独立的线程来发送,这些线程是复用的。使用ConectionTable来实现以上机制。 NIO使用java.nio实现,关于NIO请访问:http://java.sun.com/j2se/1.4.2/docs/guide/nio/ 参数表如下:
对于TCP_NIO有如下附加参数:
UDP,UDP_NIO
使用UDP实现的组播协议,分别使用multicast socket和unicast socket来实现点到多点以及点到点。
参数表如下:
TUNNEL
UDP的替代品,使用一个连接到Router的TCP连接来代替UDP,所有外发的消息都会先发送到Router,然后再有Router来分发所有连接到此组的TUNNEL上。
此协议可以用来穿透防火墙,防火墙外的组成员使用Router连接到其的TCP连接向防火墙内发送消息。
参数表如下:
标签:
相关推荐:
最新新闻:
- 观天下!vim的智能补全方式——CTRL-N和CTRL
- 世界要闻:电脑启动怎么选择启动模式?解决方法在这里
- 电脑安装xp和windows7双系统有什么区别?Xp和Win7双系统怎么安装?_全球通讯
- 信息:【干货】Python与STAT时间日期转换问题
- 小米13 Ultra外观曝光:爆料全中!
- 什么是WAP?WML与HTML有什么区别?
- Ajax:异步的JavaScript和XML的同源策略
- 什么是MultiGroups?JGroups详解
- RTX3060Ti游戏神卡2169元封神!
- IBM发布全新z16和LinuxONE 4的单机柜版本_观察
- 天天速看:iPhone 8以上都能用!中国广电5G已全面支持iPhone
- 森歌集成灶怎么样?三方面出发谈谈它的那些事儿 独家
- 小岛秀夫转发自己的《芭比》海报:谁不喜欢粉粉嫩嫩呢:天天简讯
- 谷歌Stadia服务关闭 项目负责人现已离开公司
- 全球观热点:XGP 5月首发游戏阵容 《红霞岛》领衔
- 【世界播资讯】《刺客信条:幻景》菜单栏截图 有令人兴奋的新功能
- 高华科技上交所公开招股
- 今日热讯:《守望先锋2》第四赛季预告 新英雄新皮肤新活动等
- 3D-Roguelite横版动作游戏《霓虹序列》Steam页面上线 4月21日发售
- 《RE4RE》佣兵模式已上线 未来或加入艾达王\威斯克
- 首届香港高等教育展4月15日举行 今日观点
- 索尼:CMA对微软收购暴雪一案态度转变令人惊讶 太不合理!
- 全球看点:美国男子承认掰断偷走兵马俑手指 检方或只进行轻判
- 天天观焦点:汾河二库开放吗(山西汾河二库是开放的吗)
- 雷蛇推出透明RGB滚轮游戏鼠标:搭载5G光学传感器 售价499元
- 环球观焦点:太极股份:拟提前赎回“太极转债”
- 天天快消息!超大外屏亮眼!摩托罗拉razr 40 Ultra获认证
- 百变星曜由你来定!星曜娘二创活动进入最终投票阶段
- 榨干《甄嬛传》价值?乐视将推85英寸甄嬛传限量电视
- 环球微资讯!首次进军海外!小米13 Ultra将全球上市
- 世界观天下!13888元起!大疆Mavic 3 Pro无人机曝光:升级三摄镜头、增加超广角
- 离谱!《最后生还者》泰丝与感染者之吻被提名:玩家很愤怒
- 《夏洛克·福尔摩斯:觉醒》发售宣传片公开
- 过半玩家从《生化危机123》开玩:你是从哪一代入坑的?
- 继《北欧女神》之后 SE移除《三角战略》D加密 环球微资讯
- 阴线阳线_史蒂夫尼森_阴线阳线
- 清蒸鲑鱼做法视频_清蒸鲑鱼做法|焦点消息
- 世界聚焦:Epic喜加一:《消逝的光芒:增强版》《异形工厂》免费领
- IU新剧片酬超宋慧乔、全智贤 获韩国女演员最高片酬
- 《最后生还者》获MTV电影电视奖5项提名:最佳男主、最佳吻戏等|每日视点
- 创伤小队出动!CDPR专业美工打造震撼CGI动画-每日热讯
- 《幻塔》等立大功!完美世界2022年净利润同比增长273% 全球热消息
- 三重峰耦合常数怎么算_三重峰耦合常数怎么算
- 超级小桀:索尼员工想帮我找任天堂恢复存档|世界时快讯
- iOS 17升级机型抢先看:最低iPhone X/8
- 苏炳添手机从小米换成iPhone 本人:合约到期
- 世界热文:小米下一个代言人或是张颂文
- Redmi K60 Pro宣布降价:立减300|通讯
- 世界微速讯:小米13 Ultra就要来了:小米王化亲自曝光
- 利维坦之斧闪现沙特街头 开天辟地神秘感十足
- 《泰坦尼克号》女主参演《阿凡达2》上热搜:她对大海有执念:今日讯
- 《原子之心》更新上线 为PS5和XS加入120Hz模式
- 女子突然呼吸困难地铁工作人员为她戴严口罩:网友竟然齐声叫好!
- 当前视讯!小米发布89元电动牙刷:Type-C充电 续航25天
- 小米正式开启2023米粉节,Redmi K60 Pro闪降300_天天快讯
- 肉夹馍店门口贴“雇托排队可耻”被指讽刺同行,律师:极有可能侵权:焦点快播
- 头条焦点:港任马里奥游戏促销中!《马车8》《马造2》等打折
- 《守望先锋2》新英雄背景介绍:故事很赞、没那么多buff
- 全球今亮点!特斯拉低价小型车曝光 目标销量4200万辆
- AI绘图二次元!iGame RTX 4090竟如此之快-世界即时看
- 展会回顾丨2023CCE亿嘉和智能清洁展位精彩大盘点
- 【世界新视野】腾讯QQ入选首批互联网应用适老化及无障碍改造优秀案例
- 原料价格腰斩,产业大洗牌,为啥锂企纷纷被调高目标价?
- 世界看热讯:增速双第一!中兴通讯交换机、路由器产品Q4国内份额跃升第二
- 艺术电影凭什么这么“硬气”-全球热点评
- 当前观察:坂本龙一女儿发旧照哀悼父亲:我想再回到小时候做他的小女孩
- 《堕落之主》重启将有额外设计 减少玩家的挫败感 世界热闻
- 无事发生!T2与《GTA》逆向工程模组团队和解:焦点速看
- 传《生化危机》新真人电影开发中 讲述生化0故事 天天快播报
- 《熔铁少女》公布全新宣传片 主机版今日发售:当前快报
- 每日热点:小米成立13周年 雷军晒高管合照:齐竖大拇指、清一色牛仔裤
- 天天滚动:类魂单机《深沉之火》正式版4月20日定档发售
- 当前关注:《小美人鱼》真人电影新剧照曝光 黑美人鱼救王子
- 环球微资讯!小米13 Ultra官宣本月发布、号称“移动影像的成人礼”
- 【新视野】元太科技推出取代纸质广告牌的革命性全新色彩电子纸E Ink Spectra (TM) 6
- 仅需89元!小米米家电动牙刷T200C上架:支持标准/轻柔双清洁模式
- 后盖配色绝了!realme Narzo N55手机定档4月12日
- 花生和它天生一对!每天吃10颗,一身轻松,2分钟就能学会!
- 小米13 Ultra将在本月正式发布 小米、徕卡联合研发
- 媒体自制PS新掌机概念图 PS5手柄风格搭配8英寸触摸屏
- Redmi显示器新品发布,1080P 75Hz仅售369元
- iPhone 15无缘高刷:再等2年! 焦点速讯
- 小米13 Ultra正式官宣,徕卡称“意义深远、历史级作品”,4月发布
- 本月发布!小米13 Ultra官宣:徕卡与小米联合研发的历史级作品
- 森歌新品再塑行业新标准,看到大清洁时代中国厨房重构的底层逻辑|世界速读