首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zookeeper和托管复制数据库服务之间的区别

Zookeeper和托管复制数据库服务之间的区别
EN

Stack Overflow用户
提问于 2018-05-21 02:40:23
回答 2查看 1.2K关注 0票数 8

我刚刚遇到了Zookeeper,我想知道Zookeeper和一个可用的、一致的、持久的、分布式的、复制的数据库服务,比如亚马逊DynamoDB,甚至亚马逊S3(存储服务)有什么不同。配置管理、分布式同步等关键功能可以通过像亚马逊DynamoDB这样的数据库产品很好地实现。我知道Zookeeper和像DynamoDB这样的产品在架构上会有所不同。但是,从功能的角度来看,这两者之间有什么主要区别吗?有什么理由使用Zookeeper而不是其他的吗?

EN

回答 2

Stack Overflow用户

发布于 2019-10-22 10:19:04

简而言之,Zookeeper如果是一个分布式内核,它提供了低级原语,您可以使用这些原语进一步构建复杂的分布式系统。

1) Zookeeper提供有序消息,分布式锁非常需要有序消息(一般是分布式系统)。Dynamo db不提供每个客户端的有序消息保证。

2) Sequential znode提供了原子方式,以有序的方式添加具有公共前缀字符串的元素。与临时节点和有序通知相结合,它们可以让您创建通知。

假设你想锁定一个锁来执行一项工作,每台机器都可以写Create (‘/ customerABCD /customerABCD-’,Sequential)如果有两个节点在Create上面执行,那么形成的znode将是/customerABCD/customerABCD-1& /customerABCD/ lock -2。

要决定谁是领导者,您可以简单地查询Get('/customerABCD')键,然后确定键值最小的领导者。现在假设创建lock-1的节点死了,lock-2将收到来自zookeeper的通知消息,然后它可以声明customerABCD的所有权。有关此类分布式任务的更多示例,请参阅https://learning.oreilly.com/library/view/zookeeper/9781449361297/ch02.html

在创建了/customerABCD/ lock -2的Dynamo机器中,znode必须进行轮询才能知道锁是否存在。这是获取锁的慢方法,因为它需要基于超时的轮询,这是低效的,因为还需要计算来执行轮询,并且还增加了系统的轮询负载。

3)当znode被添加/删除时,zxid版本会递增。这构成了版本控制的基础,分布式系统可以使用它来实现带有隔离的锁,如link https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html中的“使用隔离使锁安全”中所述。

同样,Dynamo似乎没有类似的自动递增父序列号工具。

票数 1
EN

Stack Overflow用户

发布于 2018-05-21 17:16:10

首先,让我告诉你一些你可能已经知道的关于zookeeper的基础知识:

Zookeeper不是一个database

  • Zookeeper,它是一个协调service

  • Zookeeper具有很高的可用性,能够管理一个cluster.

  • Zookeeper中的4000多个节点将所有的信息存储在max.

  • Zookeeper中,每个可以是1mb的
  • 提供了三种类型的Znode :临时的,顺序的和持久的

现在,来回答你的问题:

Zookeeper用于为具有主从架构的服务提供独占锁,并且您只需要一个服务处于活动状态并执行所有读/写操作。

Zookeeper也可以用于会话。就像为会话为每个用户生成一个临时节点一样,当用户注销时,该节点将自动从zookeeper内存中删除。

Zookeeper是可靠的和容错的,并执行内存中的操作,这使得它更快。

因此,这就是为什么zookeeper被认为高于任何其他提供协调的服务的主要原因。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50438214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档