摘要:
1 前言 为什么要看这个异步回调呢?是因为我上节在看 RocektMQ 发送消息的时候,它支持同步、异步、一次性的模式,后两者不会阻塞当前线程,但是看这两者都没用到线程池,那它是如何处理的呢?我们看下三者最后的落点,都是在 NettyRemotingAbstract 这个类里: // NettyRe 阅读全文
摘要:
1 前言 上节我们主要看了下消息生产者的启动以及消息的发送过程,内容比较多,篇幅比较长,有一些细节没看到,比如 Broker 的故障延迟机制,所以这节我们就单独来看一下这块内容。 还有我们要知道的是,这个机制默认是关闭的: // ClientConfig /** * 开启消息发送的客户端容错机制 * 阅读全文
摘要:
1 前言 上节我们主要看了下 NameServer 的启动以及与 Broker 之间的通信比如路由的注册、发现与删除,那么本节我们将从消息的数据结构开始,逐步介绍生产者的启动流程和消息发送的流程。 看之前可以先准备个测试发送消息的,一方面不懂的可以随时调试,另一方面可以帮助更好的理解: public 阅读全文
摘要:
1 前言 上节我们准备了源码以及环境的运行,其中我们启动的时候,会首先启动 NameServer,那么这节我们先看下组件 NameServer,看看它主要是干什么的,在整个生产消费的链路中充当了什么角色,发挥着什么作用。 2 NameServer RocketMQ路由管理、 服务注册及服务发现的机制 阅读全文
摘要:
1 前言 本节我们开始看一下 RocketMQ 相关的东西,我们主要看一条链路,大致如下: (1)环境的搭建,源码的下载 (2)NameServer 以及 Broker 之间的通信 (3)消息的生产以及发送过程 (4)消息的消费过程 大概看这四方面的内容,本节主要看下源码的下载以及环境的搭建。 在看 阅读全文
摘要:
1 前言 本节主要记录下基于 AQS 衍生出来的一些常用锁比如:CountDownLatch、ReentrantLock、Semaphore、ReentrantReadWriteLock 等他们在源码中的一些应用,好记性不如烂笔头。 2 CountDownLatch 2.1 RocketM 阅读全文
摘要:
1 前言 最近看源码的时候,经常看到适配器模式的出现,所以本文来记录一下什么是适配器模式,它的结构特点是什么呢?以及它在源码中的一些应用。 2 适配器模式 2.1 基本概念 适配器模式,适配两个字最能体现其思想,也可以理解为协调、转换,有点类似我们平时见到的各种转换头的作用,它就是一种东西转变为另一 阅读全文
摘要:
1 前言 上节我们看了【SpringBoot】@Validated @Valid 参数校验概述以及使用方式,对于 @Valid 以及 @Validated 有了大概的认识,并也尝试了集中校验方式,那么本节我们重点看一下 SpringBoot 中 @Valid @Validated 的校验实现原理。 阅读全文
摘要:
1 前言 最近在思考 SpringBoot 中的参数校验,比如我们写一段业务代码,首要的就是校验参数,单据编码空不空,数量空不空,客户空不空等,最简单的就是单独抽个方法逐个进行 if else 校验,高级点的整个校验工厂,当需要校验某种业务的时候,拿到校验器来校验,可以是简单工厂或者工厂方法都可以实 阅读全文
摘要:
1 前言 最近有个线上系统的 CPU 比较高,当然我们可以去线上导一份快照,然后分析快照。最近发现 JProfiler 可以直接连接你线上的集群然后分析某个服务,直接可以在本地看到你服务的各种运行情况,当然这可能会拖慢你的服务,因为它也是通过 JVM 本身提供的远程加载 Agent 继而收集各种信息 阅读全文