ZooKeeper的替代品? (集群协调服务)
ZooKeeper是一个高度可用的数据中心协调服务。 它起源于Hadoop项目。 可以实现locking,故障切换,领导选举,团体成员等协调问题。 ZooKeeper有没有其他的select? (当然免费软件)
我曾经广泛地看过Zookeeper / Curator , Eureka , etcd和领事。 Zookeeper / Curator和Eureka在很多方面都是最精致和最容易集成的,如果你在Java世界。 Etcd非常酷,非常灵活,但它实际上只是一个HA密钥库,所以你必须编写大量的代码才能将其变成一个自发的服务发现系统。
领事对我来说是两全其美的。 这是一个在农奴之上编写的有意识的服务发现系统,使用木筏进行集群共识和八卦沟通。 它公开发现/注册端点与一个良好的loggingREST api,并且还允许您发现服务与DNS SRVlogging,并注册服务的configuration(即,所以你可以注册一个数据库或应用程序,你不能集成一个客户端,或者如果你只是想保持你的服务发现从你的应用程序解耦)
我写了一篇关于领事的博客文章 ,你可以从中学到更多东西,并通过我的“试用”演示
如果您想了解更多关于自定义代码的信息,我还讨论了使用etcd和docker进行服务发现 。
最后一件事! etcd和consul都写进去了,所以维护它们比像zookeeper这样的java解决scheme要容易得多。 所有你需要的是consul / etcd二进制文件。 没有依赖关系,没有链接库,没有jvm。
由CoreOS团队编写的ZooKeeper被称为etcd(github.com/coreos/etcd)是一个非常有前途的替代scheme。 不像Doozerd,etcd正在积极开发。
刚刚发现的Accord (C)和OpenReplica / ConCoord (Python)可能是有趣的解决scheme
[编辑] Vagrant和Packer成名的Hashicorp船员正在做“服务发现和编排的分散式解决scheme”,称为Serf 。
[编辑2] Hashicorp再次袭击! 他们刚刚释放了build于塞尔夫之上的领事 。 “这是一个服务发现和configuration解决scheme,完全分布式,高度可用,可跨多个数据中心扩展到数千个节点和服务”。
是的,还有Doozerd(https://github.com/ha/doozerd); 。 仔细看看,它是由Heroku开发的一个很好的,单一的二进制分布式协调服务。 用于java / python / ruby / node的绑定/库。 很容易开始和玩耍。
看看Serf 。 这里有一个vs Zookeeper的比较。
来自我的研究小组的OpenReplica是数据中心的高度可用的FOSS协调服务。 它可以用来实现locking,故障转移,领导选举,组员等协调服务。 它与ZooKeeper在两个关键方面有所不同:
-
它使用了一个面向对象的API。 这使编写协调服务变得更容易。 OpenReplica的同步代码看起来与其教材相同; 没有必要像ZooKeeper和Chubby那样掌握基于文件和upcall的API。
-
它启用dynamic成员资格更新副本集。 不需要静态configuration文件。 该系统被集成到DNS(权威,OpenReplica从属,或亚马逊路线53)。
我们积极支持该系统,如果您有进一步的问题,请不吝告诉我们。
在github上有一个名为Noah的项目,看起来很有趣,它说“它基于Apache ZooKeeper松散” https://github.com/lusis/Noah,REST支持是一个关键特性(ZK把它作为一个贡献/选项)比内置)。;
有不同的工具可以针对不同的工程权衡进行优化。
- ZooKeeper为了读取而略微缩放; 写很多观察者可能会很慢。 它被certificate,并有一个相当大的社区。
- 雅阁似乎对写入密集型应用感兴趣,但是典型的用例已经有了特定领域的解决scheme(即日志logging,遥测)。
其他人有些有趣,但一般未经证实。 如果打算用于生产用途,请不要误解。
我发现Zookeeper,etcd和Doozer的这个比较: http ://devo.ps/blog/zookeeper-vs-doozer-vs-etcd/
Serf(serfdom.io)也是一个很好的解决scheme,因为它很简单! 但是您必须考虑,SERF只是一个集群pipe理器,它使您能够将自定义事件发送到所有集群节点。 这很好,但你必须编写自己的shell脚本(又名事件)。 看到这个例子:“ https://www.digitalocean.com/community/articles/how-to-set-up-a-serf-cluster-on-several-ubuntu-vps ”
好处是,您正在获得一个非常简单的集群pipe理器,并且可以将其与您最喜欢的configuration,部署或持续集成工具结合使用。
看来Corosync也像ZooKeeper。
我知道这个post是相当老的,但是有人正在寻找所有可能的select,我还想build议JGroups库,它已经足够成熟,可以在生产环境中使用。 我在我的一个项目中成功地使用了它,主要用于分布式协调以及在集群之间共享消息。 除了灵活的架构外,它还支持AWS支持,您可以在其中定制堆栈以获得所需的内容。 我build议你看一看