分布式
老马啸西风
Github: https://github.com/houbb
Email:houbinbin.echo@gmail.com
展开
-
java 实现跳表(skiplist)及论文解读
什么是跳跃表跳表由William Pugh发明。他在论文 《Skip lists: a probabilistic alternative to balanced trees》中详细介绍了跳表的数据结构和插入删除等操作。跳表是一种可以用来代替平衡树的数据结构,跳表使用概率平衡而不是严格执行的平衡,因此,与等效树的等效算法相比,跳表中插入和删除的算法要简单得多,并且速度要快得多。为什么需要?性能比较好。实现相对于红黑树比较简单。占用更少的内存。论文解读为了学习第一手的资料,我们先学习一.原创 2020-11-02 21:46:49 · 1168 阅读 · 3 评论 -
面试经典 ConcurrentHashMap 源码你读过吗?
HashMap 的线程安全性HashMap 是线程不安全的。为了使用线程安全的数据结构,多线程条件下,可使用 Collections.synchronizedMap 方法构造出一个同步Map,或者直接使用线程安全的 ConcurrentHashMap。Java 7基于分段锁的ConcurrentHashMap注:本章的代码均基于JDK 1.7.0_67数据结构Java 7中的ConcurrentHashMap的底层数据结构仍然是数组和链表。与HashMap不同的是,ConcurrentHas原创 2020-10-29 23:38:20 · 536 阅读 · 0 评论 -
java 从零实现属于你的 redis 分布式锁
点赞再看,已成习惯。为什么需要分布式锁在 jdk 中为我们提供了加锁的方式:(1)synchronized 关键字(2)volatile + CAS 实现的乐观锁(3)ReadWriteLock 读写锁(4)ReenTrantLock 可重入锁等等,这些锁为我们变成提供极大的便利性,保证在多线程的情况下,保证线程安全。但是在分布式系统中,上面的锁就统统没用了。我们想要解决分布式系统中的并发问题,就需要引入分布式锁的概念。上一节我们已经对分布式锁原理进行了详细讲解,参见:red.原创 2020-10-17 21:24:42 · 496 阅读 · 0 评论 -
java 手写并发框架(二)异步转同步框架封装锁策略
序言上一节我们学习了异步查询转同步的 7 种实现方式,今天我们就来学习一下,如何对其进行封装,使其成为一个更加便于使用的工具。思维导图如下:拓展阅读java 手写并发框架(1)异步查询转同步的 7 种实现方式异步转同步的便利性实现方式循环等待wait & notify使用条件锁使用 CountDownLatch使用 CyclicBarrierFutureSpring EventListener上一节我们已经对上面的 7 种实现方式进行了详原创 2020-10-12 21:51:04 · 624 阅读 · 0 评论 -
从零手写 cache 之 redis expire 过期实现原理
前言我们在 从零手写 cache 框架(一)实现固定大小的缓存 中已经初步实现了我们的 cache。本节,让我们来一起学习一下如何实现类似 redis 中的 expire 过期功能。过期是一个非常有用的特性,比如我希望登录信息放到 redis 中,30min 之后失效;或者单日的累计信息放在 redis 中,在每天的凌晨自动清空。代码实现接口我们首先来定义一下接口。主要有两个:一个是多久之后过期,一个是在什么时候过期。public interface ICache<K, V>原创 2020-09-28 20:11:15 · 1694 阅读 · 0 评论 -
面试官:谈一谈你对 redis 分布式锁的理解
为什么需要分布式锁在 jdk 中为我们提供了多种加锁的方式:(1)synchronized 关键字(2)volatile + CAS 实现的乐观锁(3)ReadWriteLock 读写锁(4)ReenTrantLock 可重入锁等等,这些锁为我们变成提供极大的便利性,保证在多线程的情况下,保证线程安全。但是在分布式系统中,上面的锁就统统没用了。我们想要解决分布式系统中的并发问题,就需要引入分布式锁的概念。锁的准则首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:.原创 2020-09-10 22:38:45 · 1161 阅读 · 0 评论 -
【分布式】load balance 04-java 从零手写实现负载均衡
负载均衡系列专题01-负载均衡基础知识02-一致性 hash 原理03-一致性哈希算法 java 实现04-负载均衡算法 java 实现本节我们来看一下如何实现一负载均衡框架。源码核心接口定义public interface ILoadBalance { /** * 选择下一个节点 * * 返回下标 * @param context 上下文 * @return 结果 * @since 0.0.1 */ I原创 2020-06-20 10:50:22 · 10619 阅读 · 0 评论 -
【分布式】load balance 03-一致性哈希算法 java 实现
负载均衡系列专题01-负载均衡基础知识02-一致性 hash 原理03-一致性哈希算法 java 实现04-负载均衡算法 java 实现本节我们来看一下如何实现一个一致性 hash 框架。源码普通 hash我们首先定义一下 hash 接口,以及最简单的 jdk 实现:IHashpublic interface IHash { /** * 计算 hash 值 * @param text 文本 * @return 结果 * @since原创 2020-06-20 10:49:33 · 10589 阅读 · 0 评论 -
【分布式】load balance 02-consistent hash algorithm 一致性哈希算法原理详解
负载均衡系列专题01-负载均衡基础知识02-一致性 hash 原理03-一致性哈希算法 java 实现04-负载均衡算法 java 实现概念一致哈希是一种特殊的哈希算法。在使用一致哈希算法后,哈希表槽位数(大小)的改变平均只需要对 K/n个关键字重新映射,其中K是关键字的数量, n是槽位数量。然而在传统的哈希表中,添加或删除一个槽位的几乎需要对所有关键字进行重新映射。有什么用现在想来,很多分布式中间件,在增删节点的时候都需要进行 re-balance。借助一致性 hash,感觉可以避免原创 2020-06-20 10:49:02 · 10787 阅读 · 0 评论 -
【分布式】load balance 01-负载均衡基础知识
负载均衡系列专题01-负载均衡基础知识02-一致性 hash 原理03-一致性哈希算法 java 实现04-负载均衡算法 java 实现负载均衡负载均衡是高可用网络基础架构的关键组件,通常用于将工作负载分布到多个服务器来提高网站、应用、数据库或其他服务的性能和可靠性。传统架构在这里用户是直连到 web 服务器,如果这个服务器宕机了,那么用户自然也就没办法访问了。另外,如果同时有很多用户试图访问服务器,超过了其能处理的极限,就会出现加载速度缓慢或根本无法连接的情况。引入负载均衡而通过在原创 2020-06-20 10:47:36 · 10778 阅读 · 0 评论