自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猿上生活

爱技术,爱生活,爱音乐

  • 博客(203)
  • 资源 (5)
  • 收藏
  • 关注

原创 RocketMQ源码解析汇总篇

原创不易,转载请注明出处前言到目前为止,RocketMQ源码解析博文已经发表了20+篇,初步打算是从两个纬度来解析RocketMQ的源码,分别是整体运行流程的源码解析,某些核心组件源码深度剖析。现在已经初步完成了RocketMQ核心链路,核心流程的源码剖析,从宏观上了解了RocketMQ的运作流程,这也是第一阶段的内容,后续的解析将以broker的核心组件展开,从微观上深度剖析各个组件的实现细节。1. 核心链路源码解析文章目录RocketMQ源码解析(搭建环境)RocketMQ源码解析之消息.

2020-12-13 23:19:53 132

原创 深度解析dubbo源码系列

以下文章均基于dubbo v2.6.1持续更新中…dubbo spi 扩展技术,框架基石《深度解析dubbo扩展技术dubbo spi(注解)》《深度解析dubbo扩展技术dubbo spi(实现二)》《深度解析dubbo扩展技术dubbo spi(自适应实现)》《深度解析dubbo扩展技术dubbo spi(自动激活实现)》服务暴露《深度解析dubbo服务本地暴露(injvm)》《深度解析dubbo服务远程暴露(一)》《深度解析dubbo服务远程暴露(二)》《深度解析dubbo

2020-07-27 16:48:33 1713

原创 SpringCloud全家桶从入门到放弃

SpringCloud一代全家桶从入门到放弃

2020-07-11 14:23:43 3950

原创 ThreadPoolExecutor源码解析

原创不易,转载请注明出处文章目录前言1.线程池参数解析2.运行原理3.ThreadPoolExecutor实例化4.位运算表示线程池状态与线程数5.提交任务任务6.执行任务7.keepalive清理的是core还是max总结前言1.线程池参数解析2.运行原理3.ThreadPoolExecutor实例化4.位运算表示线程池状态与线程数5.提交任务任务6.执行任务执行原理其实很简单,就是先讲每个worker里面自己的那个firstTask执行完成,接着就不断的从我们配置的那个队列中获.

2021-01-18 15:22:07 15

原创 深度解析kafka生产者发送消息(拉取元数据)

原创不易,转载请注明出处文章目录前言1.拉取元数据的时机2.业务线程等待元数据3.sender线程拉取元数据总结前言在之前的文章中我们介绍了,kafka 消息生产者端有2种线程,一种是业务线程,一种是sender线程,这个业务线程是支持多个的,也就是支持并发发送,然后这个sender 一个KafkaProducer实例就一个,业务线程不停的往一个内存缓冲区(消息累加器,因为这里要把多个消息打成batch)追加消息,然后sender线程干的事就多了,发送消息,接收响应,建立连接,获取元数据。在解析.

2021-01-15 16:28:00 16

原创 图解kafka中hw,leo,isr

原创不易,转载请注明出处文章目录前言1.hw leo isr的介绍2.图解hw leo isr 变化总结前言本文主要是介绍下kafka broker 中的hw leo isr分别是啥,然后介绍hw与leo在写入消息的时候,副本同步的时候在partition leader 副本与partition follower副本是怎样变化的,follower 副本要满足什么条件加入才能加入isr列表,又是在什么样的情况下被踢出isr列表。1.hw leo isr的介绍leo :log end offse.

2021-01-11 14:47:30 42

原创 深度解析kafka broker创建新日志段与更新LEO以及刷盘

原创不易,转载请注明出处文章目录前言1.当前日志段放不下消息集是怎样创建新的日志段的2.写入完leader副本后是怎样更新leo的3.是怎样刷盘的总结前言在《深度解析kafka broker处理发送消息请求并写入磁盘》一文中我们介绍了包括requestHandler对发送消息请求处理以及消息集是怎样被追加写入到.log 文件,稀疏索引是怎样被写入到.index文件的,由于主流程的原因我们有些比较重要的细节没有深入的解析,本文就创建新的日志段,更新leo,刷盘的一些细节问题展开源码级剖析。1.当.

2021-01-11 00:10:54 35

原创 深度解析kafka broker处理发送消息请求并写入磁盘

原创不易,转载请注明出处文章目录前言1.requstHandler拿到请求找到对应处理方法2.ReplicaManager是怎样appendMessages的总结前言在《深度解析kafka broker从连接建立到接收请求发送响应》或者更往前介绍kafka broker 网络组件的文章中,我们介绍了broker处理与消息生产者(客户端)建立连接,processor接收请求,写回响应,requestHandler处理请求信息等流程,我们已经知道了一个请求过来是怎样运转的了,本文接着消息生产者发送消.

2021-01-10 23:22:49 45

原创 深度解析kafka broker消息存储组件初始化流程

原创不易,转载请注明出处文章目录前言1.LogManager2.Log3.LogSegment4.FileMessageSet5.OffsetIndex总结前言本文主要介绍下kafka 消息(日志)存储模块涉及到的核心组件是怎样初始化的,各个组件之前的联系与关系,各个组件对应到磁盘上是什么样的,比如说Log 对应到磁盘上就是某个分区(partition)的文件夹(topic-partition),这个文件夹下面那堆文件是怎样与LogSegment 对应起来的等等。1.LogManager先介.

2021-01-10 14:32:17 12

原创 深度解析kafka broker从连接建立到接收请求发送响应

原创不易,转载请注明出处kafka 网络模块相关文章1.《深度解析kafka broker网络模型运行原理》2.《深度解析kafka broker网络组件初始化流程》文章目录前言1.建立连接2.接收请求3.处理请求4.发送响应总结前言我们在前几篇kafka网络模块相关的文章中分别介绍了kafka broker 网络模型,运行流程,以及核心组件的初始化流程,本文我们将贴合实际场景出发,以消息生产者发送消息为例,看看acceptor是怎样处理新连接建立的,processor是怎样接收请求信息交.

2021-01-09 23:39:11 32

原创 深度解析kafka broker网络组件初始化流程

原创不易,转载请注明出处文章目录前言1.SocketServer初始化2.acceptor初始化3.processor初始化4.RequestChannel初始化5.RequestHandler初始化总结前言在《深度解析kafka broker网络模型运行原理》一文中我们介绍了kafka broker 网络模型,并且大体上介绍了各个核心组件的运行原理,在第二小节中对比了一下RocketMQ网络模型与kafka的网络模型,发现其实差不多样子。本文主要是从源码角度出发,看看kafka那几个网络组件是.

2021-01-08 15:07:33 31

原创 深度解析kafka broker网络模型运行原理

原创不易,转载请注明出处文章目录前言1.kafka网络模型运行原理2.对比一下RocketMQ的网络模型总结前言本文将介绍下kafka broker 端的网络模型,会从宏观角度介绍下kafka broker网络模型是啥样子的,都有哪些组件,组件之间的运作流程是啥样子的,里面涉及到的一些比较重要的参数,接着就是将RocketMQ网络模型拿出来与kafka 的比较一下。1.kafka网络模型运行原理kafka broker 在启动的时候,会根据你配置的listeners 初始化它的网络组件,用来.

2021-01-07 16:23:22 65

原创 深度解析Kafka中CopyOnWriteMap实现原理

原创不易,转载请注明出处文章目录前言1. 加锁copy写2. 无锁并发读总结前言Kakfa消息生产者端 业务在发送消息的时候,会将消息追加写到RecordAccumulator这个内存缓冲区的队列中,在追加的时候首先会根据消息的topic与partition 去一个map中获取对应的Deque队列,如果对应的队列不存在,就会创建一个,并添加到map中,然后才会将消息追加到队列队尾的batch元素中,我们知道,Kafka发送消息是支持多线程并发的,也就是往内存缓冲区中追加也是多线程并发的,其实在往.

2021-01-05 18:46:03 47 1

原创 深度解析kafka生产者发送消息(业务线程将消息追加到缓冲区)

原创不易,转载请注明出处文章目录前言1.回顾业务线程都经历哪些核心步骤2.源码解析前言在《深度解析kafka生产者发送消息(原理篇)》一文中,我们主要介绍了kafka消息生产者端业务线程与sender线程主要工作流程,业务线程是将消息追加到一个内存缓冲区中,而sender线程就是不断从内存缓存去中获取消息,然后进行消息的请求封装,消息发送,接收响应,创建连接,断开连接等等。本文主要是从分析一下业务线程将消息追加到内存缓冲区这块的源码1.回顾业务线程都经历哪些核心步骤当我们业务线程调用Kaf.

2021-01-05 17:46:47 37

原创 深度解析kafka生产者发送消息(原理篇)

原创不易,转载请注明出处文章目录前言1.回顾kafka生产者核心组件2.图解kafka发送消息原理总结前言1.回顾kafka生产者核心组件2.图解kafka发送消息原理总结

2021-01-05 10:41:58 21

原创 深度解析kafka生产者启动流程

原创不易,转载请注明出处文章目录前言1.生产者demo介绍2.启动流程分析总结前言从本文开始,我们将开启kafka源码解析的征程,都知道1.生产者demo介绍2.启动流程分析总结

2020-12-31 00:22:29 49

原创 Sentinel源码解析之滑动窗口

原创不易,转载请注明出处文章目录前言1.sentinel滑动窗口实现原理2.sentinel使用滑动窗口都统计啥3.滑动窗口源码实现3.1 MetricBucket3.2 WindowWrap3.3 LeapArray前言本文主要是介绍下sentinel指标收集统计的一个重要基础组件那就是滑动窗口,将分为三个小节介绍,首先是大体介绍下sentinel滑动窗口的基本实现原理,心里先有个大概的印象,然后我们在看下sentinel使用这个滑动窗口用来统计哪些指标,最后就是进行源码剖析,看看代码是怎样实.

2020-12-28 00:50:44 123

原创 mac安装protobuf

本文主要是记录一下自己mac 安装protobuf 的过程安装过程如下:下载地址:github解压 tar -zxvf 压缩包终端中进入解压好的文件夹执行命令./configure --prefix=/Users/mac/Downloads/protobuf 这个–prefix 后面的文件夹就是你要安装的路径执行命令 make && make install配置环境变量 vi ~/.bash_profile我这里是安装到 /Users/mac/Downloads/pro

2020-12-26 22:46:01 44

原创 深度解析nacos源码之注册中心(基于raft 协议的数据一致性)

原创不易,转载请注明出处本文基于nacos1.4.0文章目录前言1. 回顾一下服务注册流程2. 基于raft的写操作同步3. 它这个raft协议最终一致是怎样实现的前言在《深度解析nacos源码之注册中心(raft协议选举与心跳)》一文中我们着重介绍了nacos 对于raft协议实现的落地,介绍了它的选举,它的心跳是怎样运转的,其实重要的还是term 与随机时间这块还有获得半数+1票,本文就要看看基于这套raft 协议的数据同步是怎样进行的,主要是写操作。1. 回顾一下服务注册流程当一个服.

2020-12-25 18:05:28 68

原创 深度解析nacos源码之注册中心(raft协议选举与心跳)

原创不易,转载请注明出处本文基于nacos1.4.0文章目录前言1. 成员1. 选举2. 心跳3. 数据同步总结前言1. 成员1. 选举2. 心跳3. 数据同步总结

2020-12-20 13:13:42 77 2

原创 深度解析nacos源码之注册中心(服务发现下篇)

原创不易,转载请注明出处本文基于nacos1.4.0深度解析nacos源码系列文章目录《深度解析nacos源码之注册中心(服务注册)》《深度解析nacos源码之注册中心(服务注册流程图补充)》《深度解析nacos源码之注册中心(服务主动下线)》《深度解析nacos源码之注册中心(服务续约与故障下线)》《深度解析nacos源码之注册中心(服务发现上篇)》文章目录前言1. 服务端异步通知2.客户端处理通知总结前言1. 服务端异步通知2.客户端处理通知总结...

2020-12-19 15:19:56 53

原创 深度解析nacos源码之注册中心(服务发现上篇)

原创不易,转载请注明出处本文基于nacos1.4.0深度解析nacos源码系列文章目录《深度解析nacos源码之注册中心(服务注册)》《深度解析nacos源码之注册中心(服务注册流程图补充)》《深度解析nacos源码之注册中心(服务主动下线)》《深度解析nacos源码之注册中心(服务续约与故障下线)》文章目录深度解析nacos源码系列文章目录前言1. 客户端服务订阅源码分析2. 服务端处理服务订阅源码分析总结前言1. 客户端服务订阅源码分析2. 服务端处理服务订阅源码分析总结.

2020-12-18 00:57:15 104

原创 深度解析nacos源码之注册中心(服务续约与故障下线)

原创不易,转载请注明出处本文基于nacos1.4.0文章目录前言1.心跳1.1 客户端发送心跳1.2 服务端接收心跳2.故障下线前言其实这个服务续约词是来自eureka里面,也就是renew,就是告诉服务注册中心我这服务还活着,你别把我删了,然后这个服务故障下线就是,服务注册中心在一定范围内没有收到某个服务的心跳信息,就认为你这个服务发生故障了,就会从注册表中将这个服务剔除掉,在nacos中心跳就是服务续约,同样也有服务故障下线功能。本文将先解析下nacos客户端心跳实现源码,与服务端接收心跳.

2020-12-16 23:56:34 99

原创 深度解析nacos源码之注册中心(服务主动下线)

原创不易,转载请注明出处本文基于nacos1.4.0文章目录前言1.客户端请求服务下线2.服务端处理服务主动下线前言nacos作为注册中心,支持两种服务下线,一种是客户端主动调用api向服务端发送服务下线,然后实现服务下线,第二种就是服务故障,然后服务端很长时间没有收到某个实例的心跳信息,服务端就会将这个服务健康状态设置成false,也就是标志不健康状态(这个时间默认是15s,也就是15s服务端没有收到某个服务的心跳信息),如果更长时间没有收到心跳信息,直接就会将这个服务摘除(默认是30s)。.

2020-12-16 22:52:35 182

原创 深度解析nacos源码之注册中心(服务注册流程图补充)

原创不易,转载请注明出处文章目录前言1.客户端服务注册流程图2.服务端服务注册流程图3.异步事件通知修改注册信息前言我们在《深度解析nacos源码之注册中心(服务注册)》一文中从源码级别分析了nacos客户端与服务端的服务注册流程,其实这个nacos服务注册有个很值得学习的点,那就是异步注册,我们在上文分析源码的时候并没有体现出来(其实也不好体现,我们在源码分析的时候,只是注重整个服务注册的流程,从流程的微观出发,一步一步跟着源码走,并没有把握好nacos异步注册这个点),所以我们本篇我将nac.

2020-12-16 11:50:34 72

原创 深度解析nacos源码之注册中心(服务注册)

原创不易,转载请注明出处本文基于nacos1.4.0文章目录前言1.服务注册client端2.服务注册server端前言1.服务注册client端2.服务注册server端

2020-12-16 01:42:44 123 1

原创 Sentinel源码解析之slotchain

原创不易,转载请注明出处

2020-12-14 00:49:32 35

原创 RocketMQ源码解析之延迟消息实现原理

原创不易,转载请注明出处文章目录前言1.延时消息的demo2.实现的原理前言今天要谈论的话题其实非常轻松,但是我们有些业务场景是离不开它的,其实说到延迟消息,不知道大家有没有想到它的业务场景,我这里说几个,比如我们购物下单,然后多长时间没有付款就会取消,或者我们下单打车,多长时间没有调度到车订单取消,不知道大家怎样实现这些业务场景,比如说我一个线程,然后一直扫订单表,扫出过期的订单啥的,但是这种方式会有一个问题,那就是订单量大的时候会给数据库带来很大的压力,而且很low,这种场景我们完全可以交给.

2020-12-09 00:30:23 75

原创 RocketMQ源码解析之broker(FastFailure)

原创不易,转载请注明出处文章目录1.FastFailure1.1 FastFailure是啥1.2 什么时候会发生2.源码分析总结1.FastFailure1.1 FastFailure是啥FastFailure从字面意思上就能猜出来,其实就是快速失败,什么是快速失败呢,就是broker感觉自己不行(繁忙)的时候,接下来的一些请求就会直接返回失败,如果有用过dubbo的小伙伴,可能会知道dubbo服务提供者端有个快速失败机制,就是线程池满的时候,再来调用请求就会直接拒绝掉,为啥会有这个机制呢?.

2020-12-08 01:01:13 88

原创 RocketMQ源码解析之broker(pullMessage)

原创不易,转载请注明出处文章目录前言1.broker处理消费请求的流程2.源码解析总结前言我们在之前的消费者文章中介绍了消息消费者消费整体流程,包括rebalance,pullMessage,consumeMessage这个三个重要的步骤,其中pullMessage这个步骤处理拉取消息请求,然后从broker上面拉取请求,接下来我们就看下broker是怎样处理消费请求的,本文还是老套路,先介绍下broker 处理消费请求的整体流程,然后就是从源码角度触发,看看源码是怎样实现的。1.broker.

2020-12-07 21:05:42 67

原创 RocketMQ源码解析之broker(事务消息处理)

原创不易,转载请注明出处文章目录前言1.broker事务消息处理流程2.源码分析2.1 broker事务消息处理组件初始化2.2 接收事务消息2.3 提交事务或者是回滚事务2.4 定时检查本地事务执行结果总结前言我们在《RocketMQ源码解析之消息生产者(事务消息原理篇)》一文中介绍过RocketMQ事务消息的原理,但是主要是介绍的消息生产者使用事务消息最佳姿势以及事务消息设计思想,并没有对broker处理事务消息这块进行深入的解读,然后本文就是为了补上broker对事务消息处理这块的,主要是.

2020-12-06 01:15:38 73

原创 RocketMQ源码解析之消息消费者(consume Message)

原创不易,转载请注明出处文章目录前言1.消息流程介绍2.源码解析总结前言我们在《RocketMQ源码解析之消息消费者(pullMessage)》一文中介绍了消息消费者push模式拉取消息的流程,消息从broker拉取回来之后,将消息放入对应的ProcessQueue的treeMap中,接着就是提交消费请求了,本文主要是介绍下RocketMQ提供的2种消费模式(并发消费,顺序消费)的执行流程与源码剖析。1.消息流程介绍RocketMQ支持并发消费与顺序消费,这个采用顺序消费还是并发消费,是与你.

2020-12-03 01:23:32 176

原创 RocketMQ源码解析之消息消费者(pullMessage)

原创不易,转载请注明出处文章目录前言1.pullMessage原理介绍2.pullMessage源码解析总结前言在《RocketMQ源码解析之消息消费者(rebalance)》一文中我们介绍了消息消费者push模式的一个rebalance的实现,关于这个rebalance 其实就是解决多个消息消费者实例怎么分配多个MessageQueue的问题,这边默认实现是平均分配的方式,当然RocketMQ还提供了很多种其他分配算法,分配完之后,要对新分配的MessageQueue创建对应ProcessQu.

2020-12-02 01:47:27 91

原创 RocketMQ源码解析之消息消费者(rebalance)

原创不易,转载请注明出处文章目录前言1.rebalance原理介绍2.源码剖析总结前言从本文开始我们就进入消息消费者核心机制介绍了,其实消息消费就三大核心步骤,第一就是rebalance,第二就是拉取消息,第三就是消费,对消息消费中出现的异常做一些处理。在阅读本篇文章之前最好阅读一下《RocketMQ源码解析之消息消费者(发送心跳给broker)》这篇文章,这篇主要介绍了消息消费者向namesrv拉取topic路由信息与向broker 进行注册这两个功能,其实这个向broker注册是比较重要的,.

2020-12-01 12:40:21 99

原创 Sentinel源码解析之初始化过程

原创不易,转载请注明出处文章目录前言1.关于spi技术2.初始化过程介绍3.源码解析总结前言我们这篇文章要介绍下sentinel初始化的这么一个过程,在上一篇《Sentinel源码解析之一次请求走进Sentinel》我们也介绍过,你项目启动sentinel是不会初始化的,只有你发起请求经过sentinel(就是需要sentinel进行流控的时候,才会触发它的初始化工作),本文准备以sentinel与servlet适配的那个CommonFilter 为切入点,看看sentinel初始化都干些什么事.

2020-11-30 01:24:18 101

原创 RocketMQ源码解析之消息消费者(发送心跳给broker)

原创不易,转载请注明出处文章目录前言1. 关于路由信息的拉取2. 发送心跳到broker并锁定总结前言我们都知道RocketMQ的架构设计,broker 启动的时候,会向namesrv 注册一下,然后会将本地的一些信息告诉namesrv ,其中就有这个broker里面存储了哪些topic,然后哪些queue在这个broker上面,同时broker要隔一段时间向namesrv发送心跳,然后消息消费者,消息生产者 在发送消息,拉取消息的时候会向namesrv 拉取一下topic的路由信息,这个样子才.

2020-11-29 20:56:55 105 5

原创 笔记 | 线上cpu飙高排查

思路: 首先定位出哪个进程到这cpu飙高不下,定位到进程之后,就要找出这个进程中那个线程导致cpu飙高,找到线程之后,其实就是定位代码位置了,通过线程定位出问题代码。

2020-11-29 13:11:42 62

原创 RocketMQ源码解析之消息消费者(启动流程)

原创不易,转载请注明出处文章目录前言1.写一个消息消费者2.源码分析2.1 创建DefaultMQPushConsumer 的流程2.2 启动流程分析总结前言RocketMQ支持pull与push两种模式,从字面上是拉模式与推模式,可能会误认为拉模式是消息消费者主动管broker 要消息,然后推模式是broker主动推消息给消息消费者,其实在RocketMQ中不是这个样子的,在RocketMQ中push模式本质上还是消息消费者管broker 要消息,本文主要先写一个push模式的消息消费者来感受.

2020-11-29 00:56:24 116

原创 图解RocketMQ HA同步原理

当broker 启动的时候,会创建存储器,并初始化它存储器,在存储器中有个HA服务也会被创建并初始化在HA服务里有3个组件:AcceptSocketService组件,是个serverSocket,监听 broker 监听端口号+1 那个端口号,用来接受slave broker 连接请求的,创建与slave broker连接的作用。GroupTransferService 组件,就是个看看消息同步到slave没有HAClient组件,这个就是slave连接master 的客户端。这个时候我们

2020-11-27 11:37:51 78

原创 深度解析Eureka的自我保护机制

原创不易,转载请注明出处文章目录1.自我保护机制介绍2.实现原理3.源码解析总结1.自我保护机制介绍2.实现原理3.源码解析总结

2020-11-25 21:31:44 149 4

JAVA核心知识点整理

JAVA核心知识点整理 这个涵盖了老多的JAVA知识点, 面试前看看有好处,可以说是JAVA的面试宝典,从jvm到各种框架,看完无敌了,如果你没有积分你可以联系我,就当交个朋友

2020-10-19

nexus私服下载包3.20版本的

这个是nexus的安装包,然后里面有win ,linxu,mac os 的,是3.20版本的,我花了不少积分下载的,你没有积分的可以联系我

2020-10-20

RocketMQ可视化控制台

RocketMQ的可视化控制台,不为赚积分,你自己可以上github 搜rocketmq-externals这个项目,然后自己clone下来,到console子项目中打个包可以了,你要是下载了我这个,用的时候自己用360解压打开这个jar,修改一下application.properties 这个里面的配置,然后jave -jar 打开就可以了

2020-10-19

dubbo服务监控工具dubbo-admin

dubbo-admin 是诊断dubbo服务问题的利器,由阿里开源,忍受不了github龟速的可以这里下载

2020-07-04

java线上诊断工具arthas

arthas 是阿里开源的线上诊断工具,它能够快速定位线上问题,这里上传主要是为了用的时候直接下载,而不需要到github上下载,忍受不了github龟速的可以下载本资源,解压就可以使用

2020-07-03

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除