设计美好的服务器(5)--Shoal集群框架
来源:互联网 发布:自己制作二维码软件 编辑:程序博客网 时间:2024/04/28 11:24
Overview
- Shoal
- Shoal Overview
- Clustering with the Shoal Framework(java.net)
- Shoal JXTA Overview Presentation
- 作者Blog
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);
- 设计美好的服务器(5)--Shoal集群框架
- 设计美好的服务器(5)--Shoal集群框架
- 设计一个美好的服务器--MINA、CXF、Mule、JBoss/Geronimo
- 设计美好的服务器II--站在JBoss MicroKernel上
- 设计美好的服务器(4)--Mule ESB笔记
- 设计美好的服务器(6)--SEDA架构笔记
- 设计一个美好的服务器--MINA、CXF、Mule、JBoss/Geronimo
- 设计美好的服务器II--站在JBoss MicroKernel上
- 设计一个美好的服务器--MINA、CXF、Mule、JBoss/Geronimo
- 设计美好的服务器(4)--Mule ESB笔记
- 设计美好的服务器(6)--SEDA架构笔记
- 服务器集群架构的设计与选择
- 服务器集群架构的设计与选择
- 服务器集群架构的设计与选择
- 服务器集群架构的设计与选择
- 应用服务器集群的伸缩性设计
- 应用服务器集群的伸缩性设计
- 一个redis集群的框架设计
- 双向循环链表的c++模板类
- 在网上安个家
- 该做点啥事儿?
- 好妻子的15条标准。。。(转载)
- 一道C考试逻辑题
- 设计美好的服务器(5)--Shoal集群框架
- 打破你对12星座的误解
- SQL一个存储过程调用另一个存储过程 获得返回值问题
- .net框架发展公式
- 双子的孤独是一种绝症
- 安定门--蚝友汇
- something about memory and studying English
- OGRE初学者引导
- C10 Web Part