zookeeper分布式锁

大数据核心技术

北城以北 提交于 2019-11-29 20:49:16
原地址:http://bigdata.idcquan.com/dsjjs/159544.shtml 大数据 技术的体系庞大且复杂,基础的技术包含数据的采集、数据预处理、分布式存储、NoSQL数据库、数据仓库、机器学习、并行计算、可视化等各种技术范畴和不同的技术层面。首先给出一个通用化的大数据处理框架,主要分为下面几个方面:数据采集与预处理、数据存储、数据清洗、数据查询分析和数据可视化。 一、数据采集与预处理 对于各种来源的数据,包括移动互联网数据、社交网络的数据等,这些结构化和非结构化的海量数据是零散的,也就是所谓的数据孤岛,此时的这些数据并没有什么意义,数据采集就是将这些数据写入数据仓库中,把零散的数据整合在一起,对这些数据综合起来进行分析。数据采集包括文件日志的采集、数据库日志的采集、关系型数据库的接入和应用程序的接入等。在数据量比较小的时候,可以写个定时的脚本将日志写入存储系统,但随着数据量的增长,这些方法无法提供数据安全保障,并且运维困难,需要更强壮的解决方案。 Flume NG作为实时日志收集系统,支持在日志系统中定制各类数据发送方,用于收集数据,同时,对数据进行简单处理,并写到各种数据接收方(比如文本,HDFS,Hbase等)。Flume NG采用的是三层架构:Agent层,Collector层和Store层,每一层均可水平拓展。其中Agent包含Source

分布式系统理论基础 - 选举、多数派和租约

帅比萌擦擦* 提交于 2019-11-29 17:19:47
选举(election)是分布式系统实践中常见的问题,通过打破节点间的对等关系,选得的leader(或叫master、coordinator)有助于实现事务原子性、提升决议效率。 多数派(quorum)的思路帮助我们在网络分化的情况下达成决议一致性,在leader选举的场景下帮助我们选出唯一leader。租约(lease)在一定期限内给予节点特定权利,也可以用于实现leader选举。 下面我们就来学习分布式系统理论中的选举、多数派和租约。 选举(electioin) 一致性问题(consistency)是独立的节点间如何达成决议的问题,选出大家都认可的leader本质上也是一致性问题,因而如何应对宕机恢复、网络分化等在leader选举中也需要考量。 Bully算法[1]是最常见的选举算法,其要求每个节点对应一个序号,序号最高的节点为leader。leader宕机后次高序号的节点被重选为leader,过程如下: (a). 节点4发现leader不可达,向序号比自己高的节点发起重新选举,重新选举消息中带上自己的序号 (b)©. 节点5、6接收到重选信息后进行序号比较,发现自身的序号更大,向节点4返回OK消息并各自向更高序号节点发起重新选举 (d). 节点5收到节点6的OK消息,而节点6经过超时时间后收不到更高序号节点的OK消息,则认为自己是leader (e).

分布式服务协调员zookeeper - 应用场景和监控

两盒软妹~` 提交于 2019-11-29 17:16:18
https://www.cnblogs.com/bangerlee/p/4427331.html zookeeper在分布式系统中作为协调员的角色,可应用于Leader选举、分布式锁、配置管理等服务的实现。以下我们从zookeeper提供的API、应用场景和监控三方面学习和了解zookeeper(以下简称ZK)。 ZK API ZK以Unix文件系统树结构的形式管理存储的数据,图示如下: 其中每个树节点被称为znode,每个znode类似一个文件,包含文件元信息(meta data)和数据。 以下我们用server表示ZK服务的提供方,client表示ZK服务的使用方,当client连接ZK时,相应创建session会话信息。 有两种类型的znode: Regular: 该类型znode只能由client端显式创建或删除 Ephemeral: client端可创建或删除该类型znode;当session终止时,ZK亦会删除该类型znode znode创建时还可以被打上sequential标志,被打上该标志的znode,将自行加上自增的数字后缀 ZK提供了以下API,供client操作znode和znode中存储的数据: create(path, data, flags):创建路径为path的znode,在其中存储data[]数据,flags可设置为Regular或Ephemeral

Zookeeper内部实现分布式数据一致性(底层系统模型)(一)

女生的网名这么多〃 提交于 2019-11-29 14:20:32
Zookeeper的几个概念:(接下来将从这几个概念书写Zookeeper的内部工作流程) 数据模型 节点特性 版本 Watcher ACL   <1> 数据模型 :   Zookeeper的视图很热Unix文件系统很像。但没有引入文件和文件目录相关概念;而是使用“数据节点”概念,称为ZNode;   ZNode是ZK中最小的数据单元,每个ZNode上可以保存数据,也可以挂载子节点;即形成了一种层次化空间树;   事务ID : ZK中,事务是指能够改变zk服务器状态的操作,一般包括数据节点创建与删除,数据节点内容更新和客户端会话创建与失效等操作;对于每一个事务请求,zk都会为其分配一个全局唯一的事务ID,用ZXID表示,是一个64位的数字;每一个ZXID对应一个事务操作; <2> 节点特性:    ZK中每个数据节点都是有生命周期;具体取决于数据节点的类型;   节点类型可以分为:持久节点,临时节点,顺序节点;   在节点的创建过程中,可以组合使用,于是有以下四种组合:     (1)持久节点:该节点一旦被创建,就会一直存在于ZK服务器上,直到有删除操作来主动清除这个节点;     (2)持久顺序节点:ZK中,每个父节点会为其第一级子节点维护一份顺序,用于记录下每个节点的先后顺序。     (3)临时节点:临时节点生命周期和客户端会话绑定在一起,客户端会话失效,这个节点被自动清理掉

Zookeeper简介

心不动则不痛 提交于 2019-11-29 05:51:47
Zookeeper简介 产生背景 当今是个分布式、集群、云计算等名词满天飞的时代。造成这种局面的一个重要因素就是,单一机器的处理能力已经不能满足我们的需求,不得不采用由多台机器组成的服务集群。 服务集群对外提供服务的过程中,可以分解处理压力,在一定程度上打破性能瓶颈,并提高服务的可用性(不会因为一台机器宕机而造成服务不可用)。 假设有三台机器,每台机器跑同样的一个应用程序。然后我们将这三台机器通过网络将其连接起来,构成一个系统来为用户提供服务,对用户来说这个系统的架构是透明的,他感觉不到这个系统是一个什么样的架构。那么我们就可以把这种系统称作一个分布式系统。 那么,问题来了: (1)程序的运行往往依赖很多配置文件,比如数据库地址、黑名单控制、服务地址列表等,而且有些配置信息需要频繁地进行动态变更,这时候怎么保证所有机器共享的配置信息保持一致? (2)如果有一台机器挂掉了,其他机器如何感知到这一变化并接管任务?如果用户激增,需要增加机器来缓解压力,如何做到不重启集群而完成机器的添加? (3)用户数量增加或者减少,会出现有的机器资源使用率繁忙,有的却空闲,如何让每台机器感知到其他机器的负载状态从而实现负载均衡? (4)在一台机器上要多个进程或者多个线程操作同一资源比较简单,因为可以有大量的状态信息或者日志信息提供保证,比如两个A和B进程同时写一个文件,加锁就可以实现

Zookeeper 分布式协调服务介绍

巧了我就是萌 提交于 2019-11-29 01:11:36
公众号原文: Zookeeper 分布式协调服务介绍 博客原文: Zookeeper 分布式协调服务介绍 分布式系统 分布式系统的简单定义:分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 分布式系统的特征: 分布性:系统中的计算机在空间上随意分布和随时变动 对等性:系统中的计算机是对等的,没有主从之分 并发性:并发性操作是非常常见的行为 缺乏全局时钟:系统中的计算机具有明显的分布性,且缺乏一个全局的时钟序列控制,所以很难比较两个事件的先后 故障总是会发生:任何在设计阶段考虑到的异常情况,一定会在系统实际运行中发生,并且还会遇到很多在设计时未考虑到的异常故障 随着分布式架构的出现,越来越多的分布式应用会面临数据一致性问题。 选择Zookeeper Zookeeper是一个典型的分布式数据一致性解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、master选举、分布式锁和分布式队列等功能。 Zookeeper致力于提供一个高性能、高可用,具有严格的顺序访问控制能力的分布式协调服务;其主要的设计目标是简单的数据模型、可以构建集群、顺序访问、高性能。Zookeeper已经成为很多大型分布式项目譬如Hadoop、HBase、Storm、Solr等中的核心组件,用于分布式协调。

02分布式协调服务-zookeeper(一)

空扰寡人 提交于 2019-11-29 01:10:25
分布式协调服务-zookeeper 分布式环境的特点 分布式环境下面临的问题 经典的CAP/BASE理论 CAP BASE 初步认识zookeeper zookeeper是什么 zookeeper能做什么 zookeeper的特性 顺序一致性 原子性 可靠性 实时性 zookeeper安装 单机环境安装 集群环境 分布式环境的特点 分布性 并发性 程序运行过程中,并发性操作是很常见的。比如同一个分布式系统中的多个节点,同时访问一个共享资源。数据库、分布式存储 无序性 进程之间的消息通信,会出现顺序不一致问题 分布式环境下面临的问题 网络通信 网络本身的不可靠性,因此会涉及到一些网络通信问题 网络分区(脑裂) 当网络发生异常导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式架构的所有节点,只有部分节点能够正常通信 三态 在分布式架构里面,除了成功、失败、超时 分布式事务 ACID(原子性、一致性、隔离性、持久性) 冷备或者热备 分布式架构里面,很多的架构思想采用的是:当集群发生故障的时候,集群中的人群会自动“选举”出一个新的领导。 最典型的是: zookeeper / etcd 经典的CAP/BASE理论 CAP C(一致性 Consistency) : 所有节点上的数据,时刻保持一致 可用性(Availability) :每个请求都能够收到一个响应

62-分布式协调工具-基于ZooKeeper实现分布式锁

亡梦爱人 提交于 2019-11-29 01:09:53
文章目录 1.分布式锁常见解决方案 2. 基于zookeeper实现分布式锁原理 2. zookeeper实现分布式锁代码 1.分布式锁常见解决方案 分布式锁解决方案(目的:为了保证在分布式领域中共享数据安全问题) 数据库实现分布式锁(不推荐、效率特别低) 基于redis实现分布式锁 setNX(非常麻烦 考虑死锁、释放问题) redsession分布式锁 基于Zookeeper实现分布式锁(强烈推荐) SpringCloud内置实现全局锁 zookeeper实现分布式锁非常简单,使用临时节点释放锁(效率高)、失效时间容易控制 2. 基于zookeeper实现分布式锁原理 2. zookeeper实现分布式锁代码 创建接口 public interface Lock { //获取到锁的资源 public void getLock ( ) ; // 释放锁 public void unLock ( ) ; } 创建ZookeeperAbstractLock抽象类 //将重复代码写入子类中.. public abstract class ZookeeperAbstractLock implements Lock { // zk连接地址 private static final String CONNECTSTRING = "127.0.0.1:2181" ; // 创建zk连接

分布式协调服务zookeeper总结

那年仲夏 提交于 2019-11-29 01:09:12
1.zookeeper简介 1.1简介 Zookeeper是一个分布式协调服务,换言之,就是为用户的分布式应用程序提供协调服务 - zookeeper是为别的分布式程序服务的 - Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务) - Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务 - 虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能(管理数据和监听数据): 管理(存储,读取)用户程序提交的数据; 并为用户程序提供数据节点监听服务; 1.2 Zookeeper集群的角色: Leader 和 follower Zookeeper在配置文件中并没有指定master和slave,启动之后通过内部的选举机制选举出leader和follower,而且只有一个leader,其他则为follower。zookeeper集群中只要有半数以上节点存活,集群就能提供服务。 2.zookeeper集群机制 半数机制:集群中半数以上机器存活,集群可用。 zookeeper适合装在奇数台机器上!!! 2.zookeeper安装与配置 2.1zookeeper安装 安装到3台虚拟机上(需要提前安装好JDK) 将zookeeper压缩包上传至/apps/package目录并解压 tar

分布式协调服务 ( 服务治理 ).

感情迁移 提交于 2019-11-29 00:25:10
分布式协调服务 ( 服务治理 ). 1. 问题所在 主要用于解决分布式环境中多个进程之间的同步控制, 让他们有序的去访问某种临界资源, 防止造成脏数据的后果. 订单服务JVM1->商品服务(库存五个): 我要五个 订单服务JVM2->商品服务(库存五个): 我要五个 订单服务JVM3->商品服务(库存五个): 我要五个 商品服务(库存五个)-->订单服务JVM1:给你五个 商品服务(库存五个)-->订单服务JVM2:给你五个 商品服务(库存五个)-->订单服务JVM3:给你五个 这个时候就造成了脏数据的问题, 库存变成了 \(-10\) 个 2. 解决方案 分布式锁: 在第一个订单服务访问到商品服务的时候, 我们将商品服务加锁. 这个时候 第二个订单服务去访问 商品服务的时候会被拒绝. 分布式协调的核心就是 实现分布式锁, 而Zookeeper就是分布式锁的实现框架. 分布式锁 1. 目的 为了防止分布式系统中的多个进程之间的相互干扰, 我们需要一种分布式协调技术去对这些进程进行调度, 而这个分布式协调技术的核心就是来实现这个分布式锁, 而Zookeeper 就是分布式锁的实现框架 . 2. 完备条件 在分布式系统环境下, 一个方法在同一时间只能被一个机器的一个线程执行. 高可用的获取锁和释放锁. 高性能的获取锁和释放锁. 具备非阻塞特性 , 即没有获取到锁将直接放回获取锁失败.