`
lc_koven
  • 浏览: 349743 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

关于zookeeper的讨论

 
阅读更多
    zookeeper作为分布式集群广泛使用的应用程序协调服务集群。它的特点就不说了,很多人分析过。前段时间微博上说到zk有一些问题,其实只是某些场合下zk使用需要小心,这里列举一下:
  1. zk不适合做大数据量的存储,简单来说就是不适合做公用存储。原因很简单,每个数据要同步到所有server才返回,既慢,而且消耗带宽,client还容易阻塞。所以这种应用对zk来说太“重”了。
  2. watch机制是paxos所没有的,是zk为了应用而自己加上的。这个功能有许多陷阱,最根本的原因就是zk的watch事件是单向传递的,并不保证通知一定能到达客户端,因此网络不稳定或者client挂掉都会导致丢失watch事件。举个例子,hbase使用zk来获知rs是否挂掉。如果某台rs挂掉,master也跟着挂掉的话,是没有办法知道这个事件的。必须在代码层做处理。
  3. 另一种陷阱是client对于watch是一次性接收的,所以一次watch通知后,下一次watch接收必须等到client发出下一次watch请求。所以在处理期间如果有新的watch事件发生,会丢失这些事件。
  4. client提交请求时,有可能收到connection_loss的异常,很不幸收到这种异常的时候,client无从得知请求是否成功。因为这个异常的引起是因为连接断开,而连接是在提交请求时断开还是请求正在处理时断开,无从获知。所以应用层如果特别care一致性问题,就必须带上sessionId重连或者重试。

    以后想到再继续写吧,因为最近越来越多的项目开始依赖zookeeper了,所以逐渐开始研究zk。不过进度还是远远赶不上前辈,大家可以在http://rdc.taobao.com/team/jm/archives/category/rpc-soa 看到更有质量的文章。
分享到:
评论
3 楼 alexanderdai 2012-04-03  
嗯 zk watch不可靠,本身就不能强依赖zookeeper,hbase中的强依赖zk的用法是结构上的问题。必须具备定期向zk fetch最新新数据merge到hbase使用zk的 mem中才能保证数据与持久化的一致性。
例如一个很典型的用例场景就是hmaster分配region multi assgin多次都是因为这个引起的。理应当获取不到watch事件的时候达到标准去zk中主动fetch一下最新数据并与内存中cache的数据做比较然后当做本地event处理。
2 楼 lc_koven 2011-12-19  
x-rip 写道
我们搭了一个zookeeper集群,运行3天后,存放dataLogDir的目录将硬盘撑爆了,查看全是乱码,请教一下这个目录下存放的是什么?是不是应用的输出Log也会存放在这个里面?

是的。数据和log都在里面。所以要用zk自带的工具定期删。也可以参见我之前的blog
1 楼 x-rip 2011-12-19  
我们搭了一个zookeeper集群,运行3天后,存放dataLogDir的目录将硬盘撑爆了,查看全是乱码,请教一下这个目录下存放的是什么?是不是应用的输出Log也会存放在这个里面?

相关推荐

    Zookeeper原理

    ZooKeeper是一个分布式的,开放源码的分布式应用程序...本文简单分析zookeeper的工作原理,对于如何使用zookeeper不是本文讨论的重点。Zookeeper中的角色主要有以下三类,如下表所示:系统模型如图所示:1.最终一致性

    ZooKeeper程序员指南

    本指南的前四节对各种ZooKeeper概念进行较高层次的讨论。这些概念对于理解ZooKeeper是如何工作的,以及如何使用ZooKeeper来进行工作都是必要的。这几节没有代码,但却要求读者对分布式计算相关的问题较为熟悉。本文...

    运用spring boot框架、dubbo+zookeeper的分布式电影院售票网页开发.zip

    毕业设计是高等教育阶段学生完成学业的一个重要环节...学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。

    strtus整体架构及核心标签库的介绍

    本章详细讨论struts架构。我们将看到struts是如何清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序过程的。我们还将介绍struts提供的类如何使得开发工作更加简单,这些类包括:  控制程序流程的类...

    消息中间件架构讨论

    接上一篇的《业务方对消息中间件的需求》,在可用性和可靠性的基础上,讨论各种架构的优缺点,最后给出自己关于消息中间件的架构思考。首先还是来看Kafka的系统架构(做消息中间件逃不开要去了解Kafka)。...

    juejin_rpc_py:juejin rpc python书的代码

    深入理解 RPC : 基于 Python 自建分布式高并发 RPC 服务 本小册代码运行环境为Mac和Linux,如果是windows用户,建议安装虚拟机 小册代码均基于Python2.7编写,...代码上如有任何问题,可以在官方的微信交流群里进行讨论

    KafkaSleepingBarberProblem:卡夫卡·阿帕奇(Kafka Apache)和迪杰斯特拉(Dijkstra)的沉睡理发师问题

    在本文中,我将向您展示如何使用Kafka Apache消息代理解决Dijkstra的Sleeping Barber问题,我们已经在上一篇文章中进行了讨论。 安装Kafka $ tar -xzf kafka_2.10-0.8.2.0.tgz $ cd kafka_2.10-0.8.2.0 启动单...

    SpringBoot-Dubbo:SpringBoot整合Dubbo服务

    SpringBoot-Dubbo脚手架项目 构建 Zookeeper + Dubbo + Spring Boot 的分布式调用项目 安装 Zookeeper 并启动 Zookeeper 服务 安装 Dubbo 服务端 ...技术讨论 & 如果对项目有任何疑问或者建议,欢迎到我的博客留言!

    Rabbit-OJ-Backend:使用Go和MySQL,Docker和Web Socket,gRPC,Kafka,Zookeeper和Protobuf。 分布式可扩展的算法开放式评判系统

    用户提交一段代码后,我们将讨论操作。 :star-struck: 系统设计 前端(角度)<==>服务器(GIN)<==>消息队列(兔子MQ)<==>裁判 判断器->(许多)机器->调度程序->编译器->运行器->回调 :high-speed_...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    数据类型自动提升(注意以下讨论的是二元操作符) 16 【基础】switch支持的类型 17 【基础】当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是...

    HBase 官方文档

    这是 Apache HBase的官方文档, Hbase是一个分布式,版本化(versioned),构建在 Apache Hadoop和 Apache ZooKeeper上的列数据库. 我(译者)熟悉Hbase的源代码,从事Hbase的开发运维工作,如果有什么地方不清楚,欢迎...

    packer:Packing for Koding的模板

    base是在各个实例之间使用的主映像ci包含此仓库的CI / CD脚本德鲁伊是分析服务器kafka包含kafka集群的图像构建器zookeeper包含zookeeper的图像构建器群集(利用参展商)脚本包含基本安装程序及其各自的数据/配置 ...

    service-discovery-demo:2015年9月16日向开普敦Spin组提供了有关服务发现的演示和资料

    然后是演示中讨论的四个服务发现工具的示例:ZooKeeper,Eureka,Consul和etcd。 在示例中,我使用两个快速演示服务:报价和订购。 Quote是一个简单的Spring Boot应用程序,它以/ quotes / {symbol}(预先定义的...

    CloudShop-MicroService-Architecture:电商微服务架构--服务治理、服务隔离;

    与作者讨论框架技术问题可以发邮件到: 项目构建情况介绍 以常见电商微服务为模型,本工程是自建微服务系统核心架构,利用Zookeeper做服务治理,用Hystrix做服务容错保护。 工程中业务代码没有编写,但是详细的框架...

    redpanda:Redpanda是现代应用程序的实时引擎

    兼容Kafka:registered:,不需要Zookeeper:registered:,不需要JVM,也不需要更改代码。 使用所有您喜欢的开源工具-快10倍。 我们正在为现代应用程序构建实时流引擎-从企业到在她的笔记本电脑上为React应用程序制作...

    北京一路捞java笔试题-FantasticPostgres:开源关系型数据库PostgreSQL生态系列资源^_^

    来开启讨论。谢谢 :) 总结 清单 [DB Migration](#db migration) Server - Scalable Open Source PostgreSQL-based Database Cluster. - - - Scalable PostgreSQL cluster for real-time workloads. - Open source ...

    漫谈大数据第四期-storm

    其中讨论了多种Storm概念和抽象,提供了范例代码以便你可以运行一个Storm Topology。开发过程中,可以用本地模式来运行Storm,这样就能在本地开发,在进程中测试Topology。一切就绪后,以远程模式运行 Storm,提交...

Global site tag (gtag.js) - Google Analytics