有没有办法找到属于Web应用程序集群的所有节点?我知道在JBoss上,我可以使用HAServiceMBeanSupport获取有关所有节点(主机名、IP地址)的信息,但是如何在Tomcat、WebSpere、Glassfish、Oracle AS、Jetty、WebLogic上实现类似的功能呢?最好是一个适用于所有这些服务器的接口。
@Startup @Singleton
来联系拓扑发现服务(例如您的redis服务器),提供有关您的实例的信息并查询已经激活的其他实例的信息。如果需要领导者选举,则可以使用许多算法,例如先到先得或基于投票。然后,您需要订阅并积极监听拓扑的更改,并可能提供某种健康度量-例如定期让其他人知道您的实例仍处于活动状态。需要按顺序或仅在单个节点上执行的函数可以提取到专用服务中,例如批处理作业服务、调度器服务等。
大多数 JEE 服务器供应商都提供了一些自定义解决方案,例如 JBoss HASingleton 服务或 HA 单例部署(应用程序始终只在集群的单个实例上运行),同时还处理故障转移。
但是,如果节点崩溃并且没有从此表中删除其条目,则可能会损坏此表。表:NODES
HOST| IP
as1.cluster | < ip >
as2.cluster | < ip2 >
如果只插入了一行到该DB中,则没有集群。