中间件集群实现和使用说明
关键字: Master 主控制器
节点机
节点探针
功能目标
a、 扩展中间件负载能力,
b、 在全系统内实现资源调度,
c、 对外屏蔽中间件的工作,
实现方案
其他实现方案
以下是我以前的思路和想法,放在这里仅做参考;
体系结构和功能分层
模块、接口、系统运行
类、数据、模型
计算模型
主控制器Master
CLUSTER中总是有一个机器或一个机器的一个中间件节点担任主控制器,其他的节点之间可以知道别的节点的信息,也可以不知道,但主控制器必须知道其他节点的信息,并在CLUSTER的集体事务中担任协调者和仲裁者;
共享数据区(进程间通信模型)
共享数据区在不同的进程间担任共享内存的角色,CLUSTER通过其他的机制保证数据的完整性和一致性;
资源管理器:将对共享数据的操作抽象成对有可能竞争的资源,CLUSTER通过资源管理器管理共享的数据和资源,当一个节点宕掉的时候,其他的节点接管资源管理器,资源管理器把数据、资源和对数据、资源的操作封装在一起,也将是支持分布式事务的两阶段提交协议的主要模型;
中间件运行监控(进程间通信模型)
一个进程中的一个线程监听另一个进程的运行状态;
负载调度(负载计算模型)
负载调度包括四个方面:如何选取计算机的负载参数;
计算机负载状况评估;
任务分配方案;
任务分配;
节点探测(剩余计算模型)
节点探测包括:如何选取计算机的计算能力参数;
剩余计算能力的评估;
节点信息监控和节点信息数据传输;
使用过场
a、 启动中间件;
在prop.xml文件中设置
b、如果prop.xml文件中的设置
c、Master裁决和讨论;系统结构支持对Master的选举产生和独裁指定的两种方式,目
前系统采用后种,默认Master不会宕掉,如果Master宕掉的时候,监控线程重启80端口并重设80端口为Master;其余的节点机当发现Master 宕掉时,暂时不讨论重选Master,等待Master重启;
d、 共享数据区的使用;个个节点机调用统一的接口ClusterTool.getShareDataArea().setToMasterShareData(id,obj);将数据写到Master的共享数据区里去,再有Master定时写到所有的节点机器的共享数据区里去,只有Master自己才调用ClusterTool.getShareDataArea().setShareData(id,obj);的方法,
e、 节点信息探测;
在每一个节点机器都有一个动态的采集系统节点的信息的线程;
f、 负载调度;
负载的任务调度是通过Master调用负载分配器,分发客户的请求;并监控节点机的负载情况,负载分配器共实现以下分配方式:
Typical:典型的
根据机器的静态的配置情况,计算其应有的计算能力,并根据其计算的结果和比例分配任务;推荐使用该配置,
Round:单循环的
根据Cluster的节点列表,依次调用,如果是Master 跳过;
Random:随机的
随机选取,如果是Master 跳过;
WeightBased:剩余计算能力的
根据机器的动态的负载情况,计算其剩余的计算能力,为其分配负载,
各个分配模式中强制使Master不参与调度,并在且只在其他节点机都宕掉时才接管所有的任务;
负载调度实现的体系结构支持以下几个方面的独立扩展,不影响整个系统的结构:
1、计算机计算能力评估的数学模型;
2、计算机计算能力参数的获取;
3、计算机负载状况评估的数学模型;
4、计算机负载参数的获取;
f、系统登陆;
系统登陆时在注册本节点机的服务环境的同时,将信息登记到Master的机器上去,如果客户端在请求原url没有成功的时候,会重定向到Master上面,并带有客户端的唯一标识(李充蒲写的)和不是新登陆的标志(NoLogin),请求Master 重新分配一个新的url,如果Master
连接不上,线程重试,连续失败10次,说明Master宕掉,客户进程终止,Master发现不是新登陆的用户,会查找该用户的注册服务器的信息,一同分配到一个新的节点机,并恢复其用户的服务器环境;调用负载分配模块得到一个新的url 写回客户端,客户端得到这个url ,到本地
的
ClusterNode
数
组
里
将
这
个
Node
找
回
,
set
到
RemoteUrlFactory.lastUseClusterNode 的属性中,以完成一次url 节点的转换。
also:
该计算模型支持系统的使用过程中的无缝连接,不必重新登陆;
g、 节点之间的远程调用;
将远程调用扩展到Cluster之间,一个机器可以远程操作其他的节点,通过修改RemoteUrlFactory;
h、 系统故障自动恢复;
当系统内有节点发生故障时,cluster系统自动将任务分到另一个节点继续对外提供服务,系统重新启动一个与发生故障的节点相同的节点代替它,继续重新对外提供服务。系统不必重新登陆,只是回滚当前的事务,对用户来说屏蔽系统故障和内部工作场景。
现存问题
参考文献
SUN_CLUSTER方案
因篇幅问题不能全部显示,请点此查看更多更全内容