locking - 动物园管理员的替代品? (集群协调服务)

标签 locking cluster-computing high-availability heartbeat apache-zookeeper

ZooKeeper是数据中心的高度可用的协调服务。它起源于Hadoop项目。人们可以在此基础上实现锁定、故障转移、领导者选举、组成员资格和其他协调问题。 有没有 ZooKeeper 的替代品? (当然是免费软件)

最佳答案

我广泛研究了 Zookeeper/Curator , Eureka , etcd和领事。如果您身处 Java 世界,Zookeeper/Curator 和 Eureka 在很多方面都是最完善且最容易集成的。 Etcd非常酷且非常灵活,但它实际上只是一个 HA key 存储,因此您必须编写大量代码才能将其变成固执己见的服务发现系统。

Consul (对我来说)是两全其美。这是一个写在 serf 之上的固执己见的服务发现系统。 ,使用 raft 进行集群共识,使用 gossip 进行通信。它使用记录良好的 REST api 公开发现/注册端点,还允许您使用 DNS SRV 记录发现服务,并使用配置注册服务(即,您可以注册无法与客户端集成的数据库或应用程序,或者如果您只是想让服务发现与应用程序解耦)

我写了一个blog post about consul您可以在其中了解更多信息并浏览我的“尝试一下”演示

我还讨论过service discovery with etcd & docker如果您想了解有关自定义代码的更多信息。

最后一件事! etcd 和 consul 是用 go 编写的,因此维护它们比像 Zookeeper 这样的 Java 解决方案要容易得多。您所需要的只是 consul/etcd 二进制文件。没有依赖项,没有链接库,没有jvm。

关于locking - 动物园管理员的替代品? (集群协调服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6047917/

相关文章:

amazon-web-services - EC2 t2.micro上的Redis Cluster 3.2.0(无Elasticache)

python - Redis Cluster模式比Standalone慢

sql-server - sp_getapplock 是否会导致 SQL Server 性能问题?

java - 无锁数组元素交换

c++ - MCS锁实现的问题

bash - 并行计算日志,如何防止交错写入? lockfile 还是 flock?

java - Vertx3 - EventBus 在集群中不工作

Hadoop HA Namenode 出现错误 : flush failed for required journal (JournalAndStream(mgr=QJM to [< ip >:8485, < ip > :8485, < ip >:8485]))

ruby-on-rails - 跨 AWS 扩展应用程序的单点故障

Hadoop HA active NN 不断崩溃,自动故障转移不起作用