zookeeper作为分布式集群广泛使用的应用程序协调服务集群。它的特点就不说了,很多人分析过。前段时间微博上说到zk有一些问题,其实只是某些场合下zk使用需要小心,这里列举一下:
- zk不适合做大数据量的存储,简单来说就是不适合做公用存储。原因很简单,每个数据要同步到所有server才返回,既慢,而且消耗带宽,client还容易阻塞。所以这种应用对zk来说太“重”了。
- watch机制是paxos所没有的,是zk为了应用而自己加上的。这个功能有许多陷阱,最根本的原因就是zk的watch事件是单向传递的,并不保证通知一定能到达客户端,因此网络不稳定或者client挂掉都会导致丢失watch事件。举个例子,hbase使用zk来获知rs是否挂掉。如果某台rs挂掉,master也跟着挂掉的话,是没有办法知道这个事件的。必须在代码层做处理。
- 另一种陷阱是client对于watch是一次性接收的,所以一次watch通知后,下一次watch接收必须等到client发出下一次watch请求。所以在处理期间如果有新的watch事件发生,会丢失这些事件。
- client提交请求时,有可能收到connection_loss的异常,很不幸收到这种异常的时候,client无从得知请求是否成功。因为这个异常的引起是因为连接断开,而连接是在提交请求时断开还是请求正在处理时断开,无从获知。所以应用层如果特别care一致性问题,就必须带上sessionId重连或者重试。
以后想到再继续写吧,因为最近越来越多的项目开始依赖zookeeper了,所以逐渐开始研究zk。不过进度还是远远赶不上前辈,大家可以在http://rdc.taobao.com/team/jm/archives/category/rpc-soa 看到更有质量的文章。
分享到:
相关推荐
ZooKeeper是一个分布式的,开放源码的分布式应用程序...本文简单分析zookeeper的工作原理,对于如何使用zookeeper不是本文讨论的重点。Zookeeper中的角色主要有以下三类,如下表所示:系统模型如图所示:1.最终一致性
本指南的前四节对各种ZooKeeper概念进行较高层次的讨论。这些概念对于理解ZooKeeper是如何工作的,以及如何使用ZooKeeper来进行工作都是必要的。这几节没有代码,但却要求读者对分布式计算相关的问题较为熟悉。本文...
毕业设计是高等教育阶段学生完成学业的一个重要环节...学术规范: 毕业设计要求学生按照学术规范完成研究,包括文献综述、研究设计、数据采集与分析、结论和讨论等环节。学生需要撰写一篇完整的毕业论文,并进行答辩。
本章详细讨论struts架构。我们将看到struts是如何清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序过程的。我们还将介绍struts提供的类如何使得开发工作更加简单,这些类包括: 控制程序流程的类...
接上一篇的《业务方对消息中间件的需求》,在可用性和可靠性的基础上,讨论各种架构的优缺点,最后给出自己关于消息中间件的架构思考。首先还是来看Kafka的系统架构(做消息中间件逃不开要去了解Kafka)。...
深入理解 RPC : 基于 Python 自建分布式高并发 RPC 服务 本小册代码运行环境为Mac和Linux,如果是windows用户,建议安装虚拟机 小册代码均基于Python2.7编写,...代码上如有任何问题,可以在官方的微信交流群里进行讨论
在本文中,我将向您展示如何使用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脚手架项目 构建 Zookeeper + Dubbo + Spring Boot 的分布式调用项目 安装 Zookeeper 并启动 Zookeeper 服务 安装 Dubbo 服务端 ...技术讨论 & 如果对项目有任何疑问或者建议,欢迎到我的博客留言!
用户提交一段代码后,我们将讨论操作。 :star-struck: 系统设计 前端(角度)<==>服务器(GIN)<==>消息队列(兔子MQ)<==>裁判 判断器->(许多)机器->调度程序->编译器->运行器->回调 :high-speed_...
数据类型自动提升(注意以下讨论的是二元操作符) 16 【基础】switch支持的类型 17 【基础】当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是...
这是 Apache HBase的官方文档, Hbase是一个分布式,版本化(versioned),构建在 Apache Hadoop和 Apache ZooKeeper上的列数据库. 我(译者)熟悉Hbase的源代码,从事Hbase的开发运维工作,如果有什么地方不清楚,欢迎...
base是在各个实例之间使用的主映像ci包含此仓库的CI / CD脚本德鲁伊是分析服务器kafka包含kafka集群的图像构建器zookeeper包含zookeeper的图像构建器群集(利用参展商)脚本包含基本安装程序及其各自的数据/配置 ...
然后是演示中讨论的四个服务发现工具的示例:ZooKeeper,Eureka,Consul和etcd。 在示例中,我使用两个快速演示服务:报价和订购。 Quote是一个简单的Spring Boot应用程序,它以/ quotes / {symbol}(预先定义的...
与作者讨论框架技术问题可以发邮件到: 项目构建情况介绍 以常见电商微服务为模型,本工程是自建微服务系统核心架构,利用Zookeeper做服务治理,用Hystrix做服务容错保护。 工程中业务代码没有编写,但是详细的框架...
兼容Kafka:registered:,不需要Zookeeper:registered:,不需要JVM,也不需要更改代码。 使用所有您喜欢的开源工具-快10倍。 我们正在为现代应用程序构建实时流引擎-从企业到在她的笔记本电脑上为React应用程序制作...
来开启讨论。谢谢 :) 总结 清单 [DB Migration](#db migration) Server - Scalable Open Source PostgreSQL-based Database Cluster. - - - Scalable PostgreSQL cluster for real-time workloads. - Open source ...
其中讨论了多种Storm概念和抽象,提供了范例代码以便你可以运行一个Storm Topology。开发过程中,可以用本地模式来运行Storm,这样就能在本地开发,在进程中测试Topology。一切就绪后,以远程模式运行 Storm,提交...