摘要:
Redis低级数据结构 简单动态字符串 一般的可变字符串用的都是这个,好处就是返回长度和剩余的长度都是O(1)的复杂度,另外自动提供扩容,不会溢出,另外因为free扩容后会自动预分配一些,阈值在不同情况下是不同的,最大多分配1MB的空间,因此减少了重分配次数,另外减少字符串长度时,除了清掉buf[] 阅读全文
摘要:
分布式Barrier 解决线程同步问题 jdk中的Barrier 分布式的Barrier(根据等待线程数量触发,同时进入 and 同时退出) 阅读全文
摘要:
分布式计数器介绍 和分布式锁类似,下面是实现分布式计数器的功能 代码 每个DistributedAtomicXXX里面都有一个AtomicValue,这个是分布式的核心实现类。 阅读全文
摘要:
分布式锁介绍 分布式执行一些不需要同时执行的复杂任务,curator利用zk的特质,实现了这个选举过程。其实就是利用了多个zk客户端在同一个位置建节点,只会有一个客户端建立成功这个特性。来实现同一时间,只会选择一个客户端执行任务 代码 InterProcessMutex 是一个可重入的排他锁,获取锁 阅读全文
摘要:
Master选举介绍 分布式执行一些不需要同时执行的复杂任务,curator利用zk的特质,实现了这个选举过程。其实就是利用了多个zk客户端在同一个位置建节点,只会有一个客户端建立成功这个特性。来实现同一时间,只会选择一个客户端执行任务 代码 选举是无限循环的,可以看到下面的值,会依次增加 阅读全文
摘要:
监控节点值的变化 通过NodeCache 来监控节点值的变化。 代码 监控子节点值的变化 还有另外一个类可以监控子节点的变化,就是PathChildrenCache 代码 上面代码可以发现,监控的是p1节点,但是只有p2节点更改才会收到通知,ephe_nd节点变化是没有通知的。所以,只能监控子节点, 阅读全文
摘要:
代码 概念 1.inBackground() 该方法就是添加一个异步的回调方法,参数是BackgroundCallback接口,是一个函数式接口。 2.BackgroundCallback的接口参数为client(当前客户端实例)及event(服务端事件) 3.事件类型,CuratorEventTy 阅读全文
摘要:
前言 记录下ZK客户端的使用学习,初步想法是从几个方面来记录 1. 如何开始使用及api介绍(创建会话以及增删查改) 2. 异步调用 3. 事件监听 4. Master选举 5. 分布式锁 6. 计数器 7. Barrier 仓库介绍 GroupID/Org | ArtifactID/Name | 阅读全文