对于像淘宝这样上万台服务器集群环境的大型互联网应用,通常我们面临这样一种需求:我们需要一个集群管理者管理集群里的服务器,同一个集群中任何一台服务器宕机,其他服务器都能感知。如果是集群管理者宕机,集群中所有的服务器不能受任何影响,能实时切换到备份管理者上提供服务。
这个demo演示了如何利用Fourinone用简单几行代码实现上述功能:
❏ GroupManager:是一个集群管理者,它有master和slave两个实例,实际上你可以建立任意多的slave。
❏ GroupServer:代表一个集群中的server,它启动后会注册自己的信息到集群管理者,然后监控集群中其他机器的状况并实时反馈。它使用一个getLastest的API,这个API可以返回最新的集群状况,如果不是最新的就返回null。
pl.create("group", args[0], args[0], AuthPolicy.OP_ALL, true);
❏ 上面的方法进行节点的注册,其中前3个参数分别是domain、node、value,AuthPolicy.OP_ALL表示该节点的权限为公共,也就是可以被其他进程修改删除,true代表它是个保持连接节点,如果失去连接,该节点会被删除。