- 博客(6)
- 资源 (3)
- 问答 (5)
- 收藏
- 关注
原创 美团开源分布式ID生成系统——Leaf源码阅读笔记(Leaf的号段模式)
Leaf 最早期需求是各个业务线的订单ID生成需求。在美团早期,有的业务直接通过DB自增的方式生成ID,有的业务通过redis缓存来生成ID,也有的业务直接用UUID这种方式来生成ID。以上的方式各自有各自的问题,因此我们决定实现一套分布式ID生成服务来满足需求。具体Leaf 设计文档见: leaf 美团分布式ID生成服务 。出于对该中间件的研究笔者建议下载源码阅读:github源码地址。L...
2019-10-31 22:14:51 2290 1
原创 高性能的异步处理框架Disruptor(五)——Disruptor2.0的应用
前文讲了那么多理论,原理。现在通过实际的代码,来看看Disruptor2.0的几种实际应用代码。Event事件定义:/** * Event,RingBuffer的数据 * @author wangxi * @date 2019-10-16 16:31 */@Slf4jpublic class DisruptorEvent implements Serializable { ...
2019-10-18 15:33:21 1084
原创 高性能的异步处理框架Disruptor(四)——Disruptor2.0的优化
现在读者应该能理解如下运行流程图了。如何还看不懂,则需要回顾上篇文章 Disruptor消费者的依赖关系Disruptor2.0主要变化有 3 点:更贴切的命名;把 producer barrier(生产者屏障)整合进了 ring buffer;将 Disruptor Wizard 加入了主代码库。对于上图的实现方案,在新版本的结构图大概如下:可以看到新版本更加简约,Pro...
2019-10-14 14:29:14 738
原创 高性能的异步处理框架Disruptor(三)——Disruptor消费者的依赖关系
前文解释了Disruptor的生产者,消费者的简单工作流程。接下来学习当Disruptor的多个消费者存在依赖关系时,Disruptor对RingBuffer中的消息如何按照消费者的依赖关系来处理。Disruptor系统的最初设计是为了支持需要按照特定的顺序发生的阶段性类似流水线事件,这种需求在企业应用系统开发中很常见。如上图所示,对于独立的一个生产者和三个消费者。一个比较常见的依赖结构是:...
2019-10-09 22:08:45 1218
原创 高性能的异步处理框架Disruptor(二)——Disruptor对RingBuffer的读写策略
前文了解了Disruptor与RingBuffer的基础知识后,接下来了解Disruptor对 ringbuffer的访问控制策略。Disruptor对RingBuffer的读取策略假设消费者(Consumer)是一个想从 Ring Buffer 里读取数据的线程,它可以访问 ConsumerBarrier对象——这个 对象由 RingBuffer 创建并且代表消费者与 RingBuffer ...
2019-10-09 11:01:35 809
原创 高性能的异步处理框架Disruptor(一)——认识RingBuffer与Disruptor
Disruptor是什么Disruptor 是一个高性能的异步处理框架。可以认为是最快的消息框架(轻量的 JMS),也可以认为是一个观察者模式的实现,或者事件监听模式的实现。它允许开发者使用多线程技术去创建基于任务的工作流。Disruptor 能用来并行创建任务,同时保证多个处理过程的有序性。Disruptor 的目标就是快,高效。ArrayBlockingQueue也是一个非常优秀的有界队...
2019-10-09 10:31:51 1174
关于java网络编程中获取输入流中数据的问题?
2016-01-26
ServletContext().getRealPath("/");获取路径的问题
2015-12-04
linux给用户root权限的方法
2015-06-01
TreeSet的Iterator遍历问题
2015-04-29
子类强制转换为父类是不是只能转第一父类????
2014-12-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人