Redis(三)使用Docker Compose部署基于Sentinel的高可用Redis集群

大家一定非常熟悉如何利用Docker启动单个Redis容器用于开发环境,本文将介绍如何利用Docker Compose模板在本机和云端部署基于Sentinel的高可用Redis 3集群。 Redis集群可以在一组redis节点之间实现高可用性和sharding。今天我们重点围绕master-slave的高可用模式来进行讨论,在集群中会有1个master和多个slave节点。当master节点失效时,应选举出一个slave节点作为新的master。然而Redis本身(包括它的很多客户端)没有 ...

Disruptor(五)DSL相关实战

本文主要讲解使用Disruptor的DSL演示生产者和消费者的数据交换,和以往的线程间通信不同,disruptor使用消息传递的方式,通过RingBuffer进行线程间的数据传递和通信,下面分别从一对一和多对一的模型进行讲解。 下面主要通过计算区间[0 , 100000000)中的所有数值相加为例子讲解Disruptor中的dsl使用。 1、一对一 一个生产者和一个消费者之间进行数据传递,使用disruptor主要涉及到RingBuffer中的ValueEvent定义,Va ...

Disruptor(四)RingBuffer多生产者写入

上一章主要介绍了单个生产者如何向RingBuffer数据写入数据,如何不要让Ring重叠,写入后通知消费者,生产者一端的批处理,以及多个生产者如何协同工作,本章主要介绍多生产者向RingBuffer数据写入数据。 1、多生产者MultiProducerSequencer申请下一个节点 和单生产者不同的是在next方法中会直接通过cursor.compareAndSet(current, next)设置生产者的游标cursor的sequence。大家很可能会问设置了生产者 ...

Disruptor(三)RingBuffer单生产者写入

上一章主要介绍了消费者从RingBuffer读取数据,本章主要介绍单个生产者如何向RingBuffer数据写入数据。在RingBuffer数据写入过程中如何不要让Ring重叠,写入后通知消费者,生产者一端的批处理,以及多个生产者如何协同工作。 在RingBuffer写入数据的过程涉及到两阶段提交(two-phasecommit) 1)生产者需要申请buffer里的下一个节点。 2)当生产者向节点写完数据,需要调用调用publish发布数据。 1、单个生产者SingleP ...

Disruptor(二)RingBuffer读取

上一章主要介绍Ring Buffer的数据结构,本章主要讲解如何使用Disruptor从Ring Buffer中读取数据。 1、消费者通过ProcessingSequenceBarrier读取数据 能够读取数据的前提是数据已经写入到Ring Buffer中,关于数据的写入,后面一章节会详细讲解。 RingBuffer的元素的大小是2的n次方(上面ringBufferSize为8,从序号0开始)。消费者(Consumer)是一个想从RingBuffer里读取数据的线 ...

Redis(二)ShardedJedis一致性哈希

本文主要介绍一致性哈希的概念,以及在Redis中的ShardedJedis一致性哈希实现原理 1、非一致性哈希 在讨论一致性哈希之前,先认识下"非一致性哈希",例如HashMap。 当使用HashMap时,key被均匀地映射到数组之上,映射方法就是利用key的hash与数组长度取模(通过&运算)。 当put的数据超过负载因子loadFactor×2Len时,HashMap会按照2被的容量扩容。 新put进来的数据会通过与新数组的长度取模的方式进行映射。那之前 ...

Redis(一)基础数据类型

REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。 ...

深入理解Disruptor

Disruptor是LMAX公司开源的一个高效的内存无锁队列,一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件-监听模式的实现,直接称disruptor模式。disruptor最大特点是高性能,其LMAX架构可以获得每秒6百万订单,用1微秒的延迟获得吞吐量为100K+。理解Disruptor的原理,可以帮助我们更好的理解内存无锁,CAS,volatile,缓冲行等并发原理。 本文主要从以下方面介绍disruptor: ...