New Boy

a new blog for a new boy

rocketmq源码阅读(7)——store模块

前言 在rocketmq中,store模块,也就是底层存储模块,是最为核心的部分,也在很大程度上决定了rocketmq的性能。rocketmq借鉴了kafka的设计,采用了文件存储。 整体介绍 消费模型 先看看rocketmq的存储架构(图来源于此博文) 可以看到在broker接收到消息后,首先会把消息写入到commitLog中,之后会异步将消息分发给ConsumerQueue...

rocketmq源码阅读(6)——remoting模块

前言 本文中,会看看rocketmq中remoting模块中的代码。remoting模块主要对netty进行了一层封装,至于netty的细节本文中就不细讲了,建议对netty有一些基本的了解再来看此文会比较好。我们其实可以看看像rocketmq这种成熟的消息队列中间件是如何使用netty这种高性能网络通信框架。 从功能上来看,分为NettyRemotingClient和NettyRemo...

rocketmq源码阅读(5)——消费者消费流程

前言 在消费者初始化过程中,我们看到了PullRequest的分发,接下来就是看看具体的消费流程。大体的流程是这样的: PullRequest的处理 回调PullCallBack处理pullResult ConsumeMessageService处理消息 PullRequest的处理 PullMessageService在拿到PullRequest后,直接转发给Def...

rocketmq源码阅读(4)——mq负载均衡服务

前言 上一文在消费者初始化中,提到了客户端的负载均衡服务。再简单介绍一下负载均衡服务 rebalance服务主要用于每个消费者实例匹配一个或者多个queue,以保证broker端的queue只对应一个实例,避免多个实例消费相同的queue。 rebalance主要包括RebalancePullImpl和RebalancePushImpl,位于org.apache.rocketmq.cl...

rocketmq源码阅读(3)——mq消费者初始化

写在前面 最近开始看了一些rocketmq的源码,在正式讲消费者初始化过程之前先写写自己的感受吧。虽说已经写了两篇了,但阅读以及整理的时候,还是感觉有很多问题。之前看源码更多的是去了解相关的流程。在写文章时,还是能体会到自己太弱,无法理解相关设计的精妙之处,仅仅是能看明白流程。说到精妙之处,比如说其中设计模式的应用,相关锁的使用原因,带着问题去看才会发现不懂的还有很多。另外,在整理的时候,...

rocketmq源码阅读(2)——MQClientInstance的初始化

前言 上篇在读mq生成者相关的代码时。在DefaultMQProducer的初始化最后一步时,代码是mQClientFactory.start();。至于MQClientInstance的关键性在上篇文章中也提到了。这篇就从mQClientFactory.start();开始吧。先放上相关的代码吧 ###字段分析 先来看看MQClientInstance中的重要的变量吧 //该cli...

rocketmq源码阅读(1)——生产者初始化与消息的发送

前言 其实这开头还是在全部写完才加上去的。其实这篇文章也不是那么入门了,毕竟也涉及到源码了。不说熟练掌握rocketmq的架构,至少得熟悉rocketmq的整体流程,包括broker,queue,namesrv。当然,本文并未涵盖事务消息,VIPChannel,延迟消息,队列选择算法的选择等,一些高级用法的源码会在之后慢慢补充起来。不过话说,估计也没人看——、 先放个最简单的produc...

java中的时间

工欲善其事,必先利其器 工程中其实对时间的使用是非常多的。Java中的time其实一直都是一个比较蛋疼的问题。我看网上也是对其诟病已久。Java8也推出了java.time包以便于统一时间相关的管理,就此对Java中的时间进行一个简单的总结。主要是各种类型之间的转换,在此做一个简单的记录总结。 概括 这次主要包含了四种对象的相互转换,包括Date,Java8推出的LocalDateTi...

[转]深入理解Java Stream流水线

来本文转载于http://www.cnblogs.com/CarpenterLee/p/6637118.html,十分感谢CarpenterLee写出如此棒的文章。 来到了毕业后真正意义上的第一家公司,要说这近两个月在技术层面最大的感受,一是授权方式的演变,这里暂不讨论。第二个就是java8引入的Lambda,Stream,彻底改变了我对编程的理解。不过,在开始接触时,对于写下的...

[转]Java Stream API进阶篇

来本文转载于http://www.cnblogs.com/CarpenterLee/p/6550212.html,十分感谢CarpenterLee写出如此棒的文章。 来到了毕业后真正意义上的第一家公司,要说这近两个月在技术层面最大的感受,一是授权方式的演变,这里暂不讨论。第二个就是java8引入的Lambda,Stream,彻底改变了我对编程的理解。不过,在开始接触时,对于写下的...