zookeeper分布式锁

Zookeeper 分布式锁原理

≯℡__Kan透↙ 提交于 2020-04-18 01:57:22
Zookeeper节点类型 持久节点:PERSISTENT: 创建后,一直存着,直至手动删除。 临时节点:EPHEMERAL 临时节点的生命周期和客户端会话绑定。 临时节点不能创建子节点 特殊属性:SEQUENTIAL属性。 节点被创建的时候,Zookeeper自动在节点名后的追加整数数字,由父节点维护的自增节点 因此有可以划分出两类: 持久顺序节点:PERSISTENT_SEQUENTIAL 临时顺序节点:EPHEMERAL_SEQUENTIAL zookeeper分布式锁的原理 锁分:排它锁(X 锁),共享锁(S 锁); 示例:/exclusive_lock/lock 该节点被定义为锁 排它锁(X 锁)的核心:保证当前有且只有一个事务获得锁,并且锁被释放后,所有正在等待锁的事务能被通知到。 X锁获取过程:所有客户端通过create()创建锁,在该锁位置下创建临时节点/exclusive_lock/lock。但有且只有一个能够创建成功。该客户端获得锁,其他客户端到该节点上注册节点变更Watcher监听。 X锁释放过程:由于是临时节点,通过2种方式释放锁 当前获取锁的客户端会话失效,Zookeeper删除该临时节点 正常执行完业务逻辑,客户端主动删除该临时节点 当锁释放后,通知所有注册Watcher的客户端,重新开始竞争锁 注:红色字体已避免"羊群效应" 共享锁 (S 锁)的核心

五分钟学后端技术:一篇文章教你读懂大数据技术栈!

青春壹個敷衍的年華 提交于 2020-04-06 08:22:52
作者:网易云 链接: https://www.zhihu.com/question/27696290/answer/381993207 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 什么是大数据 近几年,市场上出现了很多和大数据相关的岗位,不管是数据分析、数据挖掘,或者是数据研发,都是围绕着大数据来做事情,那么,到底什么是大数据,就是我们每一个要学习大数据技术的朋友要了解的事情了,根据百度百科的介绍 大数据(big data),IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》 [1] 中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。 [2] 思维导图 大数据方面核心技术有哪些? 大数据的概念比较抽象,而大数据技术栈的庞大程度将让你叹为观止。 大数据技术的体系庞大且复杂,基础的技术包含数据的采集、数据预处理、分布式存储、NoSQL数据库、数据仓库、机器学习、并行计算

五分钟学后端技术:如何学习分布式系统和相关技术

倾然丶 夕夏残阳落幕 提交于 2020-04-06 05:21:46
转载自 https://www.cnblogs.com/wetest/p/6806506.html 和 https://www.cnblogs.com/dudu0614/p/8821811.html 什么是分布式系统 分布式这一概念,一直都是后端工程师绕不过去的一个坎,今天,我们就一起来看看到底什么是分布式系统,又有哪些分布式技术世我们需要学习的。 根据百度百科的介绍,分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。 从分布式系统的诞生说起 我们常常会听说,某个互联网应用的服务器端系统多么牛逼,比如QQ、微信、淘宝。那么,一个互联网应用的服务器端系统,到底牛逼在什么地方?为什么海量的用户访问,会让一个服务器端系统变得更复杂?本文就是想从最基本的地方开始,探寻服务器端系统技术的基础概念。 承载量是分布式系统存在的原因 当一个互联网业务获得大众欢迎的时候,最显著碰到的技术问题,就是服务器非常繁忙。当每天有1000万个用户访问你的网站时,无论你使用什么样的服务器硬件,都不可能只用一台机器就承载的了。因此,在互联网程序员解决服务器端问题的时候,必须要考虑如何使用多台服务器,为同一种互联网应用提供服务,这就是所谓

分布式协调服务——Zookeeper

回眸只為那壹抹淺笑 提交于 2020-04-06 03:39:01
Zookeeper常用的应用场景 分布式协调: 简单来说就是有人对Zookeeper中的数据做了监听,如果修改了Zookeeper中被监听的数据,Zookeeper反过来就会告诉发起监听的人数据变更。比如在kafka的设计中,kafka的一个节点在Zookeeper中创建了一个数据,kafka的策略是谁创建了这个数据谁就是kafka集群的主节点,其余的节点都会去监听这个数据。如果主节点宕机了,这Zookeeper对应的数据就会发送变更,即而监听这个数据的其余节点就会感知到主节点宕机,然后重新进行选举。 元数据管理: 很多分布式的程序需要集中式管理自己的元数据,这个时候Zookeeper就是一个很好的选择。比如kafka、Storm等分布式的工具就会把集群里核心的元数据存放在Zookeeper中。 高可用: 很多分布式项目都是主从架构(一个主节点+多个从节点)。如果只有一个主节点的话,程序就会有单点故障问题,那么这个时候就需要部署多个从节点实现高可用。如HDFS就是靠Zookeeper实现高可用的 分布式锁: 注意的是Zookeeper不支持高并发,在高并发的情况建议使用Redis实现分布式锁,并发不太高的情况下使用Zookeeper实现分布式锁比较方便。 Zookeeper架构 在Zookeeper集群中,集群的服务角色分为leader和learner

Zookeeper入门及单机及集群环境搭建

♀尐吖头ヾ 提交于 2020-03-17 07:28:27
1.Zookeeper简介 Zookeeper是一个分布式服务框架,以前是Apache Hadoop 的一个子项目,现在是Apache的一个独立顶级项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。有关分布式的相关问题请查阅上篇博客: 分布式系统问题及解决方案 2.设计目标 ZooKeeper简单。ZooKeeper允许分布式进程通过共享的分层名称空间相互协调,该命名空间的组织方式类似于标准文件系统。名称空间由数据寄存器(在ZooKeeper看来,称为znode)组成,它们类似于文件和目录。与设计用于存储的典型文件系统不同,ZooKeeper数据保留在内存中,这意味着ZooKeeper可以实现高吞吐量和低延迟数。 ZooKeeper特性还包括高性能、高可用性、严格有序。ZooKeeper的性能方面意味着它可以在大型的分布式系统中使用。可靠性方面使它不会成为单点故障。严格有序意味着可以在客户端上实现复杂的同步原语。 ZooKeeper可复制。像它协调的分布式进程一样,ZooKeeper本身也可以在称为集合的一组主机上进行复制。组成ZooKeeper服务的服务器都必须彼此了解。它们维护内存中的状态图像,以及持久存储中的事务日志和快照。只要大多数服务器可用,ZooKeeper服务将可用

ZooKeeper的作用、应用场景和替代品

狂风中的少年 提交于 2020-03-09 07:39:33
ZooKeeper 我想大家应该都略有耳闻,可能你在开发中没有直接使用过,但常用的 Hadoop、HBase、Kafka、Dubbo 等都有使用到 ZooKeeper。那 ZooKeeper 到底起到了什么样的作用,为什么这些框架、系统需要使用 ZooKeeper呢,我们在开发过程中应该如何使用 ZooKeeper,又是否有 ZooKeeper的替代品呢。本文将围绕以上问题,从以下三方面说起: 来源与作用; 经典应用场景; 替代品。 1. 来源与作用 ZooKeeper 的设计初衷是什么?这要从雅虎的一个研究小组说起。当时,研究人员发现雅虎内部的很多分布式系统都需要依赖一个组件进行分布式协调,但是这些组件往往都存在分布式单点问题。所以雅虎便组织开发了 一个通用的无单点问题的分布式协调框架 ,那就是 ZooKeeper,一方面解决 单点问题 ,另一方面,将 分布式协调 从分布式系统中 抽离 出来,让开发者更专注于业务逻辑。 下面分别对 “单点问题” 和 “分布式协调” 进行讲述。 1.1 单点问题 单点问题(又叫单点故障,Single Point of Failure,SPOF)是指在系统中一旦失效就会让整个系统无法运作的部件。举个例子,将系统只部署在机器 A 一台机器上,如果机器 A 失效,则整个系统将无法运作。而为了解决该问题,一般采用冗余的方式,增加多台机器

zookeeper之基础简介

邮差的信 提交于 2020-03-09 00:13:38
文章目录 1 zookeeper简介 1.1 数据发布与订阅(配置中心) 1.2 负载均衡 1.3 命名服务(Naming Service) 1.4 分布式通知/协调 1.5 集群管理与 Master 选举 1.6 分布式锁 1.7 分布式队列 1 zookeeper简介 ZooKeeper 是一个高可用的分布式数据管理不系统协调框架。基于对 Paxos 算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得 ZooKeeper 解决很多分布式问题。 网上对 ZK 的应用场景也有不少介绍,本文将系统地对 ZK 的应用场景迚行一个分门归类的介绍。 值得注意的是, ZK 并非天生就是为这些应用场景设计的,都是后来众多开发者根据其框架的特性,利用其提供的一系列 API 接口,摸索出来的典型使用方法。 1.1 数据发布与订阅(配置中心) 发布不订阅模型,即所谓的 配置中心 ,顾名思义就是发布者将数据发布到 ZK 节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。 应用中用到的一些配置信息放到 ZK 上迚行集中管理。这类场景通常是这样:应用在启劢的时候会主动来获取一次配置,同时,在节点上注册一个 Watcher ,这样一来,以后每次配置有更新的时候,都会实时通知到订阅的客户端

zookeeper分布式锁实现原理

落爺英雄遲暮 提交于 2020-03-02 04:40:38
文章转载自 https://blog.csdn.net/koflance/article/details/78616206 1、互斥锁mutex lock 顾名思义就是排它锁,同一时间只允许一个客户端执行。 实现步骤: 首先,创建一个lock node,例如“ locknode ” 其次,客户端lock执行以下方式: 创建(create)一个有序临时节点,例如“ locknode /guid-lock-”,其中guid可以是你客户端的唯一识别序号,如果发生前面说的创建失败问题,需要使用guid进行手动检查。 调用getChildren(watch=false)获取获取子节点列表,注意wtach设置为false,以避免羊群效应(Herd Effect),即同时收到太多无效节点删除通知。 从这个列表中,判断自己创建的节点 序号是否是最小 ,如果是则直接返回true,否则继续往下走。 从步骤2中获取的list中选取排在当前节点前一位的节点,调用exist(watch=true)方法。 如果exist返回false,则回到步骤2; 如果exist返回true,则等待exist的哨兵(watch)回调通知,收到通知后再执行步骤2. 最后,客户端unlock只需要调用delete删除掉节点即可。 节点操作示意图: 流程图: 优点 : 避免了轮询和超时控制 每次一个子节点的删除动作

Zookeeper(一)简介

老子叫甜甜 提交于 2020-03-01 16:04:34
个人认为,zookeeper,总就会被nacos取代,就像已经被抛弃的eureka一样。 无奈,面试造飞机。 Zookeeper两大作用: 1、服务注册与发现,类似于Eureka,nacos。 2、用作分布式锁,也就是分布式协调 Zookeeper简介: ZooKeeper 是一种分布式协调服务,用于管理大型主机。 在分布式环境中协调和管理服务是一个复杂的过程。 ZooKeeper 通过其简单的架构和 API 解决了这个问题。 ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。 来源: CSDN 作者: 子 ★ 诚 链接: https://blog.csdn.net/qq_40634246/article/details/104591738

2016年总结与2017年展望

不打扰是莪最后的温柔 提交于 2020-02-29 03:05:14
时间过的真快,2017年已经过去17天了,晚一点的2016年总结与2017年展望。 2016的收获: 工作上: 1.基于zookeeper的配置管理.分布式锁.分布式队列。 2.基于dubbo分布式服务框架。 3.消息系统和分布式的事务提交。 4.spring.spirngmvc.mybatis源码学习 5.redis分布式存储。 6.数据结构和设计模式 项目:上海证券的掌厅系统 生活上: 收获了"她" 2017年展望: 1.大数据spark 2.大学数学 3.至少学习一种新的语言。 生活上: 陪着"她" 成功在于自己一点一滴的坚持,相信自己。 来源: https://www.cnblogs.com/zxf330301/p/6292951.html