Zookeeper 的视图结构跟标准的 Unix 文件系统很像,都有一个根节点 / .在根节点下面就是一个个的子节点,我们称为 ZNode.ZNode 是 Zookeeper 中最小数据单位,在 ZNode 下面又可以再挂 ZNode,这样一层层下去就形成了一个层次化命名空间 ZNode 树,我们称为 ZNode Tree.对于 ZNode 节点,我们可以增删改查操作,其实有很多的开源缓存框架和 Zookeeper 相似,只是数据结构不一样.像 Redis.Memcache 等,都有自己的数据操…
10.1 zookeeper特性 1.Zookeeper:一个leader,多个follower组成的集群. 2.全局数据一致:每个server保存一份相同的数据副本,client无论连接到哪个server,数据都是一致的 3.分布式读写,更新请求转发,由leader实施 4.更新请求顺序进行,来自同一个client的更新请求按其发送顺序依次执行 5.数据更新原子性,一次数据更新要么成功(半数以上节点成功),要么失败 6.实时性,在一定时间范围内,client能读到最新数据 10.2 zooke…
0. 说明 记录 ZooKeeper 数据结构 & 命令 1. ZooKeeper  数据结构 ZooKeeper 特性: ZooKeeper 文件系统以 / 为根目录,文件系统为树形结构,每一个目录我们称之为结点 ZooKeeper 不存文件,只存数据 每个结点 (znode) 存放的数据最多 1M 2. ZooKeeper 命令 # 进入ZooKeeper 客户端 zkCli.sh # 查看帮助 help # 列出根结点下的子结点 ls / # 查看结点上存储的数据 get / # 获取指定…
Time in ZooKeeper ZooKeeper跟踪时间的多种方式 1)Zxid:每个ZooKeeper状态变化将会接收到一个zxid(ZooKeeper Transaction Id)的时间戳.ZooKeeper通过该字段了解所有变化的顺序.每次变化都会有一个唯一的zxid,如果zxid1小于zxid2,说明zxid1发生在zxid2之前. 2)Version numbers:每个对节点的变化都会对这个节点的版本号加1.有3个版本号他们分别是version\cversion\aversi…
Zookeeper作为一个分布式协调系统提供了一项基本服务:分布式锁服务,分布式锁是分布式协调技术实现的核心内容.像配置管理.任务分发.组服务.分布式消息队列.分布式通知/协调等,这些应用实际上都是基于这项基础服务由用户自己摸索出来的. 1.Zookeeper在大数据系统中的常见应用 zookeeper作为分布式协调系统在大数据领域非常常用,它是一个很好的中心化管理工具.下面举几个常见的应用场景. 1.1.HDFS/YARN HA(分布式锁的应用):Master挂掉之后迅速切换到slave节点.…
Redis基础知识 1).测试redis服务的性能: redis-benchmark 2).查看redis服务是否正常运行: ping 如果正常---pong 3).查看redis服务器的统计信息: info 查看redis服务的所有统计信息 info [信息段] 查看redis服务器的指定的统计信息,如:info Replication 4).redis的数据库实例:作用类似于mysql的数据库实例,redis中的数据库实例只能由redis服务来创建和维护,开发人员不能修改和自行创建数据库实例…
一.前言 最近一年了吧,总是忙于特定项目的业务分析和顶层设计,很少花时间和精力放到具体的技术细节,感觉除了架构理念和分析能力的提升,在具体技术层次却并没有多大的进步.因为一些原因,总被人问及一些技术细节,很多细节都模糊了,花点时间,温习一下吧.技术部分将作为下一个阶段的工作重点. 二.操作说明 查看Zookeeper内部HBase相关数据,有两个主要的渠道:一.通过Hbase shell命令zk_dump查看:二.通过zk_cli.sh查看: 三.zk_dump HBase is rooted…
分布式锁就是多台机器,分布在不同的JVM中,这些不同JVM内的方法需要获取一个唯一锁,比如获取锁之后要把数据写入数据库,保证数据在同一时刻只有一台机器写入数据库. 分布式锁的实现有多种实现方法,除了今天聊到的ZK实现的分布式锁还有Redis通过SETNXPX或Lua脚本实现,还可以通过数据库的锁实现,但今天咱们主要聊一下ZK的分布式锁的原理实现. zookeeper可以创建两种节点,一种是永久型的,一种是临时型还可以是有序的,当机器与zk失去连接的时候临时节点会自动删除,这个功能非常强大以至于很…
一.字符串: redis中最为基础的存储类型,以二进制存储,value的字符串最多512M,Key做多1024字节. 常用命令:赋值(set).取值(get).删除(del),递增(incr/incrby keyname 5).递减(decr/decrby keyname 5).追加(append返回值是长度). 二.哈希 可以看作是一个String的key和String的value的map容器.非常适合存储对象的属性. 常用的命令:赋值(hset eg : hset myhash name n…
本文基于JDK-8u261源码分析 本文原创首发于 奇客时间(qiketime) 1 简介 HashMap是一个使用非常频繁的键值对形式的工具类,其使用起来十分方便.但是需要注意的是,HashMap不是线程安全的,线程安全的是ConcurrentHashMap(Hashtable这种过时的工具类就不要再提了),在Spring框架中也会用到HashMap和ConcurrentHashMap来做各种缓存.从Java 8开始,HashMap的源码做了一定的修改,以此来提升其性能.首先来看一下HashM…