VB_*_*VB_ 14 distributed-computing redis hazelcast apache-zookeeper
我在多个资源中找到了不同的zookeeper定义.也许其中一些是脱离背景,但看看它们:
我曾与Redis和Hazelcast合作,通过与Zookeeper进行比较,我更容易理解Zookeeper.
你能比较Zookeeper与内存数据网格和Redis吗?
Rob*_*ser 36
https://zookeeper.apache.org/doc/current/zookeeperOver.html
默认情况下,Zookeeper会将所有数据复制到每个节点,并允许客户端监视数据以进行更改.变更会很快(在有限的时间内)发送给客户.您还可以创建"临时节点",如果客户端断开连接,则会在指定时间内删除它们.ZooKeeper针对读取进行了高度优化,而写入速度非常慢(因为一旦写入,它们通常会被发送到每个客户端).最后,Zookeeper中"文件"(znode)的最大大小为1MB,但通常它们是单个字符串.
总而言之,这意味着zookeeper并不意味着存储大量数据,而且绝对不是缓存.相反,它用于管理心跳/知道哪些服务器在线,存储/更新配置,以及可能的消息传递(尽管如果你有大量的消息或高吞吐量需求,像RabbitMQ这样的任务会更好).
基本上,ZooKeeper(以及基于它构建的Curator)有助于处理集群的机制 - 心跳,分发更新/配置,分布式锁等.
它与Redis并不具有可比性,但针对具体问题......
它不支持任何计算,并且对于大多数数据集,将无法以任何性能存储数据.
它被复制到集群中的所有节点(没有像Redis集群那样可以分布数据).所有消息都以原子方式完整处理并排序,因此没有真正的事务.可以使用它来为您的服务实现群集范围的锁(实际上它非常好),并且在znode本身上有许多锁定原语来控制哪些节点访问它们.
当然,但ZooKeeper填补了一席之地.它是一种使分布式应用程序在多个实例中运行良好的工具,而不是用于存储/共享大量数据.与为此目的使用IMDG相比,Zookeeper将更快,以可预测的方式管理心跳和同步(有许多API使这部分变得简单),并且具有"推送"范例而不是"拉",因此节点是很快就通知了变化.
来自链接问题的引文......
Zookeeper使用的典型示例是分布式内存计算
......是IMO,有点误导.您可以使用它来编排计算,而不是提供数据.例如,假设您必须处理表的1-100行.您可以放置10个ZK节点,名称如"1-10","11-20","21-30"等.客户端应用程序将自动通知ZK此更改,并且第一个将抓住" 1-10"并设置一个短暂的节点clients/192.168.77.66/processing/rows_1_10
下一个应用程序会看到这个,然后去下一个要处理的组.要计算的实际数据将存储在别处(即Redis,SQL数据库等).如果节点在计算的中途失败,另一个节点可以看到(30-60秒后)并再次获取作业.
我会说ZooKeeper的典型例子是领导者选举.假设你有3个节点 - 一个是主节点,另外两个是从节点.如果主站发生故障,从站节点必须成为新的领导者.这种类型的东西非常适合ZK.
| 归档时间: |
|
| 查看次数: |
7560 次 |
| 最近记录: |