Hadoop(一)HDFS设计思想与架构

要想深入学习HDFS就要先了解其设计思想和架构,这样才能继续深入使用HDFS或者深入研究源代码。懂得了“所以然”才能在实际使用中灵活运用、快速解决遇到的问题。下面这篇博文我们就先从一般的分布式谈起,在宏观上逐步去探究HDFS的设计思想和架构实现。 一、先谈分布式 分布式是近几年非常火的技术概念,无论是云计算、大数据还是高并发的互联网架构话题都会频频出现这个词语,特别是这个大谈“大规模”的时代,分布 […]

Java8(二)Lambda语言

本文介绍了 Java SE 8 中新引入的 lambda 语言特性以及这些特性背后的设计思想。这些特性包括: lambda 表达式(又被成为“闭包”或“匿名方法”) 方法引用和构造方法引用 扩展的目标类型和类型推导 接口中的默认方法和静态方法 1. 背景 Java 是一门面向对象编程语言。面向对象编程语言和函数式编程语言中的基本元素(Basic Values)都可以动态封装程序行为:面向对象编程语 […]

Java8(一)FunctionalInterface

主要内容 什么是函数式接口(Functional Interface) 函数式接口用途 关于@FunctionalInterface注解 函数式接口里允许定义默认方法 函数式接口里允许定义静态方法 函数式接口里允许定义java.lang.Object里的public方法 JDK中的函数式接口举例  1、什么是函数式接口(Functional Interface) 其实之前在讲Lambda […]

Disruptor(五)DSL相关实战

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

Disruptor(四)RingBuffer多生产者写入

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

Disruptor(三)RingBuffer单生产者写入

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

Disruptor(二)RingBuffer读取

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

Redis(二)ShardedJedis一致性哈希

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

Redis(一)基础数据类型

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

深入理解Disruptor

fengjing

Disruptor是LMAX公司开源的一个高效的内存无锁队列,一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件-监听模式的实现,直接称disruptor模式。disruptor最大特点是高性能,其LMAX架构可以获得每秒6百万订单,用1微秒的延迟获得吞吐量为100K+。理解Disruptor的原理,可以帮助我们更好的理解内存无锁,CA […]