文档章节

zookeeper中请求顺序性问题的考虑

writeademo
 writeademo
发布于 02/25 17:15
字数 674
阅读 42
收藏 0

顺序性保障

 

连接丢失时的顺序性

zookeeper会取消等待的请求,同步方法会抛出异常,对于异步请求调用,回调函数会返回结果码来标示连接丢失,这种情况下依赖客户端解决后续的操作,而不能依赖zk承担这些操作

考虑连接丢失的影响,考虑以下顺序事件

1应用程序提交请求,执行op1操作

2客户端检测到了连接丢失,取消op1操作请求

3客户端在会话过期前重新连接

4应用程序提交请求,执行op2操作

5op2执行成功

6po1返回connectionloss事件

7应用程序重新提交op1请求

这种情况下op2先与op1成功,如果op1重试,还有失败的可能,不断重试是不行的,所以要设置重试的次数;

如果op2的执行要在op1之后,需要保证执行请求的先后顺序,这种可能会使应用程序性能 下降,程序并不能并行执行

 

摆脱connectionloss事件会怎么样

在zookeepere设计上,它标示一个连接丢失的事件,重连后,客户端可以重新查询断链之前提交请求的执行情况,可以从服务器缓存中获取执行结果

 

 

同步api和多线程执行的问题

多线程中同步调用多个请求,这种情况下,并不能保证顺序性,可能后提交的请求先执行,在有执行顺序的请求中,这种方式并不能直接使用

 

同步和异步混合调用的形式

异步调用了aop1,aop2,在aop1的异步回调中执行了sop1,如果这个同步调用阻塞了客户端的分发线程,这样线程的执行顺序为aop1,sop1,aop2;

而实际提交的顺序为aop1,aop2,sop1;

 

 

数据字典和子节点的限制

zookeeper上限制了可以存储的数据大小和一个父节点下的子节点数,这个值在数据量大的应用中可以修改

应用中嵌入zookeeper服务,将服务的实例化放在应用当中,这样会耦合到一起,使系统复杂化

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

© 著作权归作者所有

writeademo
粉丝 26
博文 679
码字总数 255284
作品 0
东城
私信 提问
Zookeeper的一致性协议:Zab

Zookeeper使用了一种称为Zab(Zookeeper Atomic Broadcast)的协议作为其一致性复制的核心,据其作者说这是一种新发算法,其特点是充分考虑了Yahoo的具体情况:高吞吐量、低延迟、健壮、简单...

小报童
2013/01/06
523
0
Zookeeper是如何保证顺序一致性的

本文适用于对Zookeeper有一定了解且想要了解源码或正在了解源码的同学,花费大约五分钟 前几天看了一个帖子,讲Zookeeper的顺序一致性,比划了一通数学解释,看的云山雾罩的,在此讲下自己对...

68号小喇叭
2018/05/28
0
0
分布式技术 -- ZooKeeper特点以及数据结构

1、Zookeeper特点: Zookeeper:一个领导者(Leader) ,多个跟随者(Follower) 组成的集群。这与Redis的集群概念一样的,Redis是一主多从。 集群中只要有半数以上(必须大于集群数量的一半,等...

猫狗熊
09/04
22
0
大数据教程(3.6):zookeeper的命令行客户端+znode数据结构类型+监听等功能_

上一篇文章,博主介绍了zookeeper集群的搭建全过程;今天博主将为大家分享的是zookeeper的命令行客户端使用、zookeeper的数据结构和监听功能。 zookeeper启动与关闭服务的命令: 一、zookeep...

em_aaron
2018/07/30
110
0
Zookeeper Introduction

问题思考 对于 hadoop 生态系统来说,有几个问题需要通过分布式协调服务来解决: 高可用性的主节点选举。对于集群各服务,如 HDFS、YARN、HBASE、SPARK 等如何保证同一时间只有一个主节点对外提...

Yulong_
2017/08/09
22
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周六乱弹 —— 如果是个帅小伙你愿意和他出去吗

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 小小编辑推荐:《Ghost 》游戏《死亡搁浅》原声 《Ghost 》游戏(《死亡搁浅》原声) - Au/Ra / Alan Walker 手机党少年们想听歌,请使劲儿戳...

小小编辑
38分钟前
57
5
java通过ServerSocket与Socket实现通信

首先说一下ServerSocket与Socket. 1.ServerSocket ServerSocket是用来监听客户端Socket连接的类,如果没有连接会一直处于等待状态. ServetSocket有三个构造方法: (1) ServerSocket(int port);...

Blueeeeeee
今天
6
0
用 Sphinx 搭建博客时,如何自定义插件?

之前有不少同学看过我的个人博客(http://python-online.cn),也根据我写的教程完成了自己个人站点的搭建。 点此:使用 Python 30分钟 教你快速搭建一个博客 为防有的同学不清楚 Sphinx ,这...

王炳明
昨天
5
0
黑客之道-40本书籍助你快速入门黑客技术免费下载

场景 黑客是一个中文词语,皆源自英文hacker,随着灰鸽子的出现,灰鸽子成为了很多假借黑客名义控制他人电脑的黑客技术,于是出现了“骇客”与"黑客"分家。2012年电影频道节目中心出品的电影...

badaoliumang
昨天
16
0
很遗憾,没有一篇文章能讲清楚线程的生命周期!

(手机横屏看源码更方便) 注:java源码分析部分如无特殊说明均基于 java8 版本。 简介 大家都知道线程是有生命周期,但是彤哥可以认真负责地告诉你网上几乎没有一篇文章讲得是完全正确的。 ...

彤哥读源码
昨天
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部