资源描述:
《fourinone分布式协调设计解析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、fourinone分布式协调设计解析分布式协同是分布式应用中不可缺少的,通常担任协调者的角色,或者说是将多机协同的职责从分布式应用中独立出来,以减少系统的耦合性和增强扩充性。Apache的Zookeeper,google的Chubby都是分布式协同的实现者。fourinone实际上可以单独当做Zookeeper用,它使用最少的代码实现了Zookeeper的所有功能,并且力图做到功能更强但是使用更简洁。一、实现原理fourinone对分布式协同的实现,是通过建立一个domain,node两层结构的节点信息去完成,domain可以是分类或者包,node可以是具体属性,domain和nod
2、e都是自己根据需求设计命名,比如可以将domain命名为“a.b.c...”表示一个树型类目。一个domain下可以有很多个node,每个node只指定一个domain,可以通过domain返回它下面所有的node。domain不需要单独建立,通常在建立node时,如果不存在domain会自动创建。如果domain下没有node了,该domain会自动删除。如果删除domain,该domain下面node也都会删除。每个node下可以存放一个值,可以是任意对象。所有的节点信息存放在parkserver里,parkserver提供协同者的功能。如下图所示:从上图可以看到,其他分布式进程
3、可以通过parkserver的用户接口ParkLocal,对节点进行增加、修改、删除、指定心跳、指定权限等操作,并且结合parkserver提供同步备份、领导者选举、过期时间设置等功能,共同来实现众多分布式协同功能,比如:1、分布式配置,多个机器的应用公用一个配置信息,并且挂掉能够领导者选举,详细见指南和demo2、分布式锁,多个机器竞争一个锁,当某个机器释放锁或者挂掉,其他机器可以竞争到锁继续,详细见指南和demo3、集群管理,集群内机器可以互相感知和领导者选举,详见指南和demo二、核心APIParkLocal核心api说明://创建node,可以根据是否需要权限和心跳属性调用不
4、同方法publicObjectBeancreate(Stringdomain,Serializableobj);//自动创建nodepublicObjectBeancreate(Stringdomain,Stringnode,Serializableobj);publicObjectBeancreate(Stringdomain,Stringnode,Serializableobj,AuthPolicyauth);publicObjectBeancreate(Stringdomain,Stringnode,Serializableobj,booleanheartbeat);publi
5、cObjectBeancreate(Stringdomain,Stringnode,Serializableobj,AuthPolicyauth,booleanheartbeat);//更新nodepublicObjectBeanupdate(Stringdomain,Stringnode,Serializableobj);//获取nodepublicObjectBeanget(Stringdomain,Stringnode);//获取最新node,需要传入旧node进行对照publicObjectBeangetLastest(Stringdomain,Stringnode,Obje
6、ctBeanob);//获取最新domainpublicListget(Stringdomain);//获取最新domain下所有node,需要传入旧的node集合对照publicListgetLastest(Stringdomain,Listoblist);//删除nodepublicObjectBeandelete(Stringdomain,Stringnode);//强行设置domain可删除publicbooleansetDeletable(Stringdomain);//删除domain及下所有node
7、publicListdelete(Stringdomain);//添加node的事件监听publicvoidaddLastestListener(Stringdomain,Stringnode,ObjectBeanob,LastestListenerliser);//添加domain的事件监听publicvoidaddLastestListener(Stringdomain,Listoblist,Lastes