摘要:
1 前言 今儿利用 Lua脚本以及 Guava 里的 RateLimiter 来结合写一个接口的限流器,顺便复习一下学过的知识。大家可以看看如果哪里有不对的地方或者有更好的方式欢迎大家在下边评论,一起交流学习。 2 实践 2.1 代码逻辑 限流实现的是:某个接口在时间段内的请求次数限制,比如60秒内 阅读全文
摘要:
1 前言 最近在复习 Tomcat 的请求处理过程,之前也看过一些局部的细节,【SpringBoot + Tomcat】【一】请求到达后端服务进程后的处理过程-连接器的创建和执行、【SpringBoot + Tomcat】【二】请求到达后端服务进程后的处理过程-连接的处理细节,但是没看完整,这节我们 阅读全文
摘要:
1 前言 上周有个项目,客户说请求报错,我看了一下 HTTP 状态码发现是 400,4XX开头的说明是客户端请求错误,常见的状态码错误可以参考我这篇:【网络】【HTTP】HTTP报文格式以及常见状态码。然后我把请求的 CURL 复制出来,贴到 Postman 里看,是个 GET 请求,请求参数也就几 阅读全文
摘要:
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 基本概念 适配器模式,适配两个字最能体现其思想,也可以理解为协调、转换,有点类似我们平时见到的各种转换头的作用,它就是一种东西转变为另一 阅读全文