雷迪斯vs Zookeeper


25

考虑到这两个服务器的用途完全不同,将它们进行比较似乎很愚蠢。但是,如果您考虑一下,他们可以做很多类似的事情:存储配置数据,分布式锁定,排队等。

我有一个Redis实例,该实例用于一些与生产相关的事情,但是想在服务器之间进行一些简单的同步(大多数配置更改不需要推升代码,也不需要在服务器之间进行简单锁定)。什么是动物园管理员给我的Redis不会?


Redis(不是专门用于配置)。它们是完全不同的产品。
Rein Henrichs

4
为什么?我们正在使用PostgreSQL进行配置。是什么使配置与业务逻辑如此不同?
德米特里·涅哥达

Answers:


26

我们在工作中同时使用Redis和Zookeeper,所以这是第一手经验

Redis速度很快;真的,真的很快。它也立即保持一致,因此对于快速移动的数据集非常有用。缺点是,在一台服务器上运行时,如果失败,则您将失去写访问权,直到另一台服务器取代它为止。除非您自己自动化,否则更换服务器是手动操作。(如果配置从属实例,您仍然可以对数据进行读取访问)。

Zookeeper还具有立即一致性的功能。它的速度不是一半,但是它会在出现故障时自动(在可能的情况下)恢复,因此,即使您的服务器出现故障,如果您需要连续的写访问权限,您也将需要使用Zookeeper。

我的建议是,使用Zookeeper进行协调:跟踪哪些节点处于活动状态,在组中进行领导者选举等。将Redis用于需要快速写入但偶尔中断不会造成灾难的数据集。例如,网页点击计数器。


我目前正在研究一个项目,并认为Zookeeper将会成为发展之路。如果您有更多可以在某个地方共享的信息,那就太好了。我们正在处理多个广告交易,每天跟踪约40亿个事件。我们正在寻求重新设计前端服务器,并正在寻找zookeeper来存储有关跟踪计数,最小权重等信息。我可以证明redis的速度,但是我的经验却缺乏我们希望与zookeeper一起使用的层次结构。自2012年以来的三年中,您的立场有变化吗?
克里斯·欣肖

@ChrisHinshaw我面临着同样的问题。将Redis和Zookeeper都考虑作为分布式资源管理器,这既需要分布式锁又需要性能。你有反馈么?
拉斐尔·萨拉瓦

我现在正在完成对此的重写。由于速度原因,我选择了redis。Zookeeper存在一些性能问题,但我不记得这些问题。我们正在根据指标和计数存储时间序列数据。我正在使用lua脚本来更新每个时间段的计数,以限制通话次数。一个示例是,我们以br:1:2:3:4的形式为出价请求提供了一个哈希键,其中的数字代表metric:agency:advertiser:campaign:ad的层次结构。在哈希中,值是year:month:day:hour:minute。在我的lua脚本中,我将更新每个计数
Chris Hinshaw

的时间片。因此,我的脚本按冒号分割了y:m:d:h并更新了每个切片的总数。这样,我可以使用hscan或获取任何时间片的键列表。Redis中最重要的事情是为密钥设计一个层级模型。在将来的某个时候,我想将所有这些转移到一家Cassandra商店来激发rdd。如果有时间,我将实施Spark Streaming进行基准测试。我认为它将与redis并驾齐驱,并提供了进行分析的灵活性。
克里斯·欣肖
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.