分布式协同是分布式应用中不可缺少的,通常担任协调者的角色,或者说是将多机协同的职责从分布式应用中独立出来,以减少系统的耦合性和增强扩充性。Apache 的 Zookeeper, google 的 Chubby 都是分布式协同的实现者。fourinone 实际上可以单独当做 Zookeeper 用,它使用最少的代码实现了 Zookeeper 的所有功能,并且力图做到功能更强但是使用更简洁。 一、实现原理 ................................................................................................................................... 1 二、核心 API .................................................................................................................................... 2 三、权限机制: ............................................................................................................................... 2 四、相对于 zookeeper 的优势 ........................................................................................................ 3 五、演示 demo ................................................................................................................................ 4 一、实现原理 fourinone 对分布式协同的实现, 是通过建立一个 domain,node 两层结构的节点信息去完成,domain 可以是分类或者包,node 可以是具体属性,domain 和 node 都是自己根据需求设计命名,比如可以将 domain 命名为“a.b.c...”表示一个树型类目。 一个 domain 下可以有很多个 node,每个 node 只指定一个 domain,可以通过 domain 返回它下面所有的 node。 domain 不需要单独建立,通常在建立 node 时,如果不存在 domain 会自动创建。 如果 domain 下没有 node 了,该 domain 会自动删除。 如果删除 domain,该 domain 下面 node 也都会删除。 每个 node 下可以存放一个值,可以是任意对象。 所有的节点信息存放在 parkserver 里,parkserver 提供协同者的功能。如下图所示: 从上图可以看到,其他分布式进程可以通过 parkserver 的用户接口 ParkLocal,对节点进行增加、修改、删除、指定心跳、指定权限等操作,并且结合 parkserver 提供同步备份、领导者选举、过期时间设置等功能,共同来实现众多分布式协同功能,比如:...