自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猿上生活

爱技术,爱生活,爱音乐

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

原创 深度解析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 1108

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

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

2020-07-11 14:23:43 3901

原创 Dockerfile入门教程
原力计划

dockerfile入门教程

2020-06-20 23:51:01 10748 4

原创 docker容器高级操作

1.

2020-06-16 12:59:55 15061 5

原创 docker命令入门教程
原力计划

docker入门教程(三)

2020-06-09 22:00:07 9059 44

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

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

2020-12-03 01:23:32 54

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

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

2020-12-02 01:47:27 38

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

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

2020-12-01 12:40:21 53

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

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

2020-11-30 01:24:18

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

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

2020-11-29 20:56:55 34

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

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

2020-11-29 13:11:42 23

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

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

2020-11-29 00:56:24 63

原创 图解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 38

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

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

2020-11-25 21:31:44 54

原创 Sentinel源码解析之一次请求走进Sentinel

原创不易,转载请注明出处文章目录前言1.整合Sentinel与Spring MVC2.走进Sentinel的Servlet适配项目总结前言本篇开始,我们就正式进入Sentinel源码解析了,本篇主要是介绍下Sentinel与SpringMVC整合,发送批量请求去Sentinel控制台看看效果,最后我们就要揭秘一下Sentinel是怎样做到能够统计请求的。1.整合Sentinel与Spring MVC2.走进Sentinel的Servlet适配项目总结...

2020-11-25 00:53:10 493

原创 RocketMQ源码解析之broker文件清理

原创不易,转载请注明出处文章目录1. broker 清理文件介绍1.1 哪些文件需要清理1.2 RocketMQ文件清理的机制2.源码解析2.1 清理commitlog2.2 ConsumeQueue 与indexFile 清理总结1. broker 清理文件介绍1.1 哪些文件需要清理首先我们需要介绍下在RocketMQ中哪些文件需要清理,其实可以想一想,在RocketMQ中哪些文件是一直在往里面写入东西的,最容易想到的就是commitlog 了,因为在一个broker 进程中,所有的普通消.

2020-11-24 23:50:12 57

原创 RocketMQ源码解析之namesrv(获取topic信息)

文章目录前言1. 回顾消息生产者向namesrv获取topic信息2. namesrv处理获取topic信息请求总结前言我们在《RocktMQ源码解析之namesrv启动流程》介绍namesrv的时候,说过消息生产者与消息消费者要向namesrv获取topic信息,不然的话消息消费者和消息生产者不知道要把消息发个哪个broker 或者是不知道找哪个broker 要消息进行消费,本文将介绍下namesrv是如何处理消息消费者或者消息生产者获取topic 请求的。1. 回顾消息生产者向namesrv获取

2020-11-20 21:59:38 35

原创 Sentinel源码解析之源码阅读环境搭建

原创不易,转载请注明出处文章目录前言1.sentinel介绍2.源码环境搭建总结前言从本篇开始我们将更新关于sentinel源码解析的文章,本篇主要是介绍下sentinel是什么,以及sentinel的主要功能,然后搭建源码阅读环境1.sentinel介绍对于sentinel的介绍,我们这里先引入官方的说法分布式系统的流量防卫兵随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。然后.

2020-11-20 13:03:31 61

原创 RocketMQ源码解析之namesrv启动流程

文章目录前言1.关于nameserv的介绍2.nameserv启动源码解析总结前言1.关于nameserv的介绍2.nameserv启动源码解析总结

2020-11-18 23:59:37 54 2

原创 RocketMQ源码解析之broker消息存储流程(BuildIndex)

文章目录### 前言### 1.BuildIndex### 2. BuildIndex源码解析### 总结

2020-11-12 14:14:18 52

原创 RocketMQ源码解析之broker消息存储流程(Reput ConsumeQueue)

原创不易,转载请注明出处文章目录前言1. reput到consumeQueue工作流程介绍1.1 消息写入commitlog流程回顾1.2 consumeQueue流程介绍2.reput到consumeQueue源码解析总结前言我们在《RocktMQ源码解析之broker消息存储流程(最最最硬核一)》一文中介绍解析了broker接收到消息,然后写入到commitlog中,将写入结果返回给消息生产者这么一个过程,这个其实就是普通消息send到broker的一个过程了,到这,消息生产者就可以任务它这.

2020-11-08 19:53:03 63

原创 RocketMQ源码解析之broker消息存储流程(PutMessage)

原创不易,转载请注明出处文章目录前言1. 消息存储流程2. commitLog写入消息源码解析总结前言本文主要是解析下broker 的消息存储部分,看下broker是怎样存储消息的,比如说我消息生产者发送过来一个消息,然后broker 是怎样存储的,需要注意的是在RocketMQ集群架构中只有master角色的broker是可以接收消息生产者消息的,slave角色的broker只能是master同步给它,但是消息消费者是有机会从slave角色上面拉取消息的,这个是要看slave同步情况与mast.

2020-11-07 14:03:44 75

原创 RocketMQ源码解析之消息生产者(顺序消息)

文章目录前言1. 关于全局有序与分区有序2. 我们应该怎样发送和消费3. 整个运作流程4. 生产者源码解析总结前言本篇主要是介绍下RocketMQ顺序消息的实现,包括全局有序与分区有序的介绍,我们想要使用它的顺序消息功能,那么我们消息生产者与消息消费者应该怎样子编程,以及从发送到消费整个运作流程。1. 关于全局有序与分区有序这里我摘官方文档上面的一段话:消息有序指的是可以按照消息的发送顺序来消费(FIFO)。RocketMQ可以严格的保证消息有序,可以分为分区有序或者全局有序。顺序消费的原理

2020-11-01 23:50:08 31

原创 RocketMQ源码解析之消息生产者(事务消息源码篇)

文章目录1. 一张图回滚事务消息的原理1. 一张图回滚事务消息的原理(图片可能不太清楚,可以访问我画的原图:process on 地址 ,方便的话给点个赞!谢谢)这里文字再描述下这个流程,首先是我们生产者端先向broker发送事务消息,这个broker 收到事务消息之后,然后将这个消息存储到系统的一个topic里面就是RMQ_SYS_TRANS_HALF_TOPIC, 然后封装响应结果给消息发送者,需要注意的是这个一来一回 发送的是同步消息,然后 这个消息生产者收到sendResult,也就是收到这

2020-10-31 23:57:59 36

原创 RocketMQ源码解析之消息生产者(事务消息原理篇)

文章目录前言1. 怎样发送一个事务消息2. 原理解释3. 源码解析前言之前我们解析了RocketMQ消息生产者发送普通消息的流程,其实事务消息跟普通消息差不多,它也是使用了同步发送的方式,只不过它引入了一个half消息的概念,这东西对用户是透明的,如果单单是编程的话不需要过多的关心,接下来我先介绍下RocketMQ事务消息发送的一个编程模型,知道RocketMQ是怎样发送事务消息的,然后就是使用介绍它的实现原理,最后就是进行消息生产者端的源码解析,其实事务消息很多事情都是broker来做的,本篇提及到原

2020-10-31 14:32:49 43

原创 RocketMQ源码解析之消息生产者(容错)

我们在介绍生产者消息发送的时候

2020-10-29 23:31:05 33

原创 RocketMQ源码解析之消息生产者(异步发送)

1.前言我们在《RocketMQ源码解析之消息生产者(同步发送与单向发送)》一文中解析了RocketMQ生产者同步发送消息与单向发送消息,这个异步发送消息其实很多地方与同步发送一样,不过有一点是你在编程的时候需要提供SendCallback 对象,用来发送响应来的时候进行回调使用,我们知道同步发送是等待broker响应到来,然后将响应往上返回,这个异步调用就是响应来的时候,对你提供的回调对象进行调用,你这个回调对象可以写一些自己的逻辑等等。2.源码解析在源码解析之前我们要先看一下异步发送消息是怎样编程

2020-10-29 19:19:46 48

原创 RocketMQ源码解析之消息生产者(同步发送与单向发送)

文章目录1. 概述2.源码分析2.1 同步发送2.2 单向发送2.3 异步发送1. 概述我们在之前关于RocketMQ生产者文章里面介绍了发送消息分为三种模式,分别是同步发送,异步发送和单向发送,这里简单的介绍下,单向发送,这个就是发送之后不用接收结果的,就是你发出去一个消息,然后就返回了,就算有结果返回也不会接收了,这是站在消息生产者的角度;同步发送的话,就是发出去一个消息,这个线程要等着它返回消息发送结果,然后你这个线程再根据这个消息发送结果再做一些业务操作等等;异步发送,这个就是在你发送消息之前要

2020-10-28 21:41:47 41

原创 RocketMQ源码解析之消息生产者(获取topic路由信息)

文章目录1.获取topic信息2.发送消息2.1 单向发送2.2 同步发送2.3 异步发送3.延迟容错1.获取topic信息在介绍获取topic之前这里要先介绍下我发送某个消息的时候指定的那个topic不存在(就是之前没有创建过)消息生产者是怎样处理的,默认的话如果topic不存在的话,消息生产者会先去nameserv拉下topic信息,要是还不存在的话,就获取一下默认topic的路由信息,这个默认topic是TBW102,发送消息就选择TBW102这个topic的broker发送,broker收到消息

2020-10-22 22:45:21 77

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

文章目录1.消息生产者一些原理1.1 介绍本篇内容2.启动流程3.获取topic4.发送消息流程5.发送模式5.1 同步发送5.2异步发送5.3单向发送4.延时容错1.消息生产者一些原理在上篇《RocketMQ源码解析(搭建环境)》我们主要介绍了读源码的一些知识储备与源码环境搭建,在读源码的一些知识储备中介绍了一下RocketMQ的架构,我们知道RocketMQ 分为nameserv 与broker ,再就是客户端 也就是我们说的消息生产者与消息消费者。接下来我们分别来介绍下:nameserv :玩

2020-10-15 22:15:28 63

原创 RocketMQ源码解析(搭建环境)

文章目录1.读源码前必备1.1 读源码的勇气与毅力1.2 关于MQ的理解1.3 RocketMQ架构2.环境搭建2.1从github上面拉项目2.2 导入到idea2.3 配置broker2.4 配置nameserv2.5 启动1.读源码前必备不管是读哪个开源项目的源码,在这之前我们都需要能够知道它是个什么东西,它都有哪些功能,还要熟练的使用它,最好知道它的一些实现原理,这样就能从源码中找到这些原理的影子。1.1 读源码的勇气与毅力dubbo应该是我第一个正式阅读源码的框架,我还清晰的记得,当时阅读

2020-10-12 23:02:20 117

原创 大白话讲解JVM调优(ParNew+CMS)

原创不易,如果喜欢的点个赞支持一下吧文章目录1.ParNew+CMS1.1 回收流程1.2 回收过程涉及的JVM参数1.ParNew+CMS我们在《大白话讲解JVM调优(基础篇)》一文介绍了JVM的运行时数据区域与垃圾回收的一些基础知识,在本文中我们将介绍下ParNew+CMS 垃圾回收的流程与一些JVM参数的介绍。1.1 回收流程我们先从ParNew+CMS组合回收器垃圾回收过程说起,当我们在创建一个对象的时候,比如说new User()这行代码,JVM会到Eden中申请一块内存存放这个Us.

2020-09-26 21:15:39 70

原创 大白话讲解JVM调优(基础篇)

原创不易,喜欢的话动动发财的小手点个赞,收个藏吧文章目录1.概述2.涉及的知识点2.1 JVM内存划分2.2 回收算法2.2.1 垃圾回收的介绍2.2.2 标记清除2.2.3 标记整理2.2.4 复制算法2.2.5 分代回收1.概述在开始之前先来说下咱们JVM调优主要是调的啥?毫无疑问,调优就是调的咱们JVM运行时内存大小+gc垃圾回收细节,要想调整JVM运行时内存大小,需要我们知道JVM内存划分知识,要想调整gc垃圾回收的一些细节,需要我们知道一些垃圾回收器工作原理,以及它们使用的垃圾回收算法,.

2020-09-24 23:02:42 94

原创 一次网络请求都经历了什么

互联网的发展给人们的生活带来了极大的便利… ,就像我们生活工作中遇到问题就百度一下,打开浏览器,然后在地址栏输入www.baidu.com ,然后enter一下就出来了百度的页面看似很简单的一个操作,但是背后牵扯的知识却非常的复杂,作为技术人,我们需要对背后知识有所了解,接下来我们就以这个案例来了解下浏览器是怎样通过网络获得这个页面的。1.我们在浏览器地址栏输入www.baidu.com,然后enter一下,浏览器会访问自身的DNS缓存信息,通过域名来查找对应的ip,如果没找到,就去操作系统的DNS缓

2020-09-22 05:28:17 59

原创 深度解析dubbo网路传输层ChannelHandler

本文基于dubbo v2.6.x1. ChannelHandlerChannelHandler 是dubbo 对于Channel事件处理的抽象,它抽象了五个事件,分别是连接的时候,断开连接的时候,消息发送完成的时候,接收到消息的时候,发生异常的时候,我们来看下它的定义@SPIpublic interface ChannelHandler { /** * on channel connected. * @param channel channel. */

2020-09-16 23:27:16 79

原创 深度解析dubbo网络传输层Channel

本文基于dubbo v2.6.x1. ChannelChannel可以理解为通道,两端传输数据的一个通道。在这里我们介绍的Channel是dubbo的channel,是dubbo对于各种io框架数据通道的封装。它主要提供了操作属性的方法与获取远端地址的方法public interface Channel extends Endpoint { InetSocketAddress getRemoteAddress();//获取远程地址 boolean isConnected();//是否已

2020-09-10 21:52:33 92

原创 深度解析dubbo网络传输层Client

本文基于dubbo v2.6.x1.ClientClient接口是dubbo 网络传输层客户端抽象,主要抽象了reconnect重连方法,同时继承Endpoint ,Channel, Resetable接口,先来看看Client接口定义:Endpoint主要是代表一个端点,可以理解为网络的一端,它抽象了send发送方法,端点关闭方法以及获取该端点的地址信息与channelhandlerChannel是dubbo框架对通道的抽象,它主要是抽象了对通道属性的操作,可以设置,获取,移除属性,同时还可以获

2020-09-08 22:57:21 103

原创 使用jmap分析内存泄漏

文章目录1.jmap介绍2.MAT3.案例4. 总结1.jmap介绍jmap(Java Memory Map)是jdk自带的java内存映像工具,使用jmap能够系统运行时的内存信息,同时能够将内存dump下来,分析内存泄露的问题。这里我们使用它 -dump 选项,将内存信息dump到服务器某个地方,然后传到本地使用内存分析工具MAT进行内存分析。jmap -dump:live,format=b,file=文件路径/文件名 pidlive:就是只dump 活着的对象format=b 使用

2020-09-03 23:19:57 298

原创 深度解析dubbo网络传输层Server

本文基于dubbo v2.6.x文章目录1.Server2.AbstractServer3.NettyServer1.Server我们在《深度解析dubbo网络传输层Transporter》介绍Transporter的时候,在其实现类中都创建了个对应的Server实现类对象返回,Server是它们的抽象接口,我们来看下Server都抽象了哪些功能public interface Server extends Endpoint, Resetable { /** * is bound.

2020-09-02 22:34:11 96

原创 深度解析dubbo网络传输层Transporter

本文基于dubbo v2.6.x1.传输层dubbo网络传输层的一个介绍(dubbo 官方文档:链接):抽象 mina 和 netty 为统一接口,以 Message 为中心,扩展接口为 Channel, Transporter, Client, Server, Codec2. TransporterTransporter是一个接口,抽象了客户端连接connect与服务端的端口绑定bind方法。Transporter是dubbo spi一个扩展点,默认实现类为netty,这里这个netty

2020-09-01 21:48:10 103

JAVA核心知识点整理|JAVA核心知识点整理.pdf

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

2020-10-19

nexus私服下载包3.20版本的|nexus.zip

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

2020-10-20

RocketMQ可视化控制台|rocketmq-console-ng-2.0.0.jar

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的粉丝

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