Overview
Shoal是Glassfish的群集子项目,和Geronimo拼命整合现有开源项目相反,Glassfish在拼命拆分可独立使用的子项目。
Shoal很好的抽象了集群的两个最重要功能--群集节点管理和共享状态数据,而且,这一切是作为一个类库来提供,可以嵌入到任意的Java应用中。
集群的目标无外伸缩性与高可靠性,实现无外Load Balancer与Failover,而Shoal对这两点实现提供了很好的支持。可关注此项目的发展与应用,也可以基于它来学习一下群集的实现。
集群管理SPI
毫无例外地基于JXTA/JGroups。
- 节点可以加入,退出集群。
- 节点可以收到其他节点加入,退出(由节点主动发布),怀疑失效,确认失效(由心跳系统发出)的消息。
- 实现了FailureRecoveryAction的节点可以收到虚拟管理器发来的接手某个失效服务器的指示。
- 节点可以群发或一对一发送消息。
基于上面的功能,可以....
- 可以做负载均衡分发器(仍然要自己实现),根据有效的群集节点来进行分发,节点还可以用sendMessage()接口发送自己的负载情况。
- 可以做FailOver,当系统不是SNA架构时,接手处理的节点会根据指示,完成某些初始化工作,比如从共享内存中获取前任的数据,以保证自己能接手工作。
- 如果共享数据只读或者多数为读,可以不用共享内存,而是各自在本地建立对象,然后通过群集管理SPI的sendMessage函数来通知更新。
状态数据共享SPI
使用专有的API进行读写,基于使用集群内机器循环备份算法。
对比其他分布式缓存方案,是分布式内存方案,共享数据不会基于某种规则失效(如总内存大小1G,先进先出),也不会自动清空过时数据。
示例代码
完整示例代码 ,比如启动GMS的代码如下:
GMSFactory.startGMSModule(serverName,
groupName, GroupManagementService.MemberType.CORE, null);
分享到:
相关推荐
Shoal是一个基于java的动态集群框架,为构建容错、可靠和可用的JavaEE 应用服务器提供了基础架构支持。它还可以插入到需要集群和分布式系统支持的 任何java应用中。Shoal是GlassFish(v2及后续版本)和JonAS应用...
Java集群框架Shoal支持容错及分布式状态缓存.zip
groovy-slf4j-ndc.zip,使用映射诊断上下文(mdc)模拟slf4j和groovy中的嵌套诊断上下文(ndc)。
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
官方版本,亲测可用
丹特拉兰浅滩场景 这是使用进行的实验。 当时的想法是将鱼从带到Metaverse。...cd decentraland-shoal-scene 现在安装/构建/运行服务器 cd server npm install npm run build npm start 最后,在另一个终端上,回