自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猿上生活

~~~~~

  • 博客(154)
  • 资源 (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 660

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

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

2020-07-11 14:23:43 3859

原创 Dockerfile入门教程
原力计划

dockerfile入门教程

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

原创 docker容器高级操作

1.

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

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

docker入门教程(三)

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

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

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

2020-10-29 23:31:05 13

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

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

2020-10-29 19:19:46 19

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

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

2020-10-28 21:41:47 22

原创 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 36

原创 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 49

原创 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 102

原创 大白话讲解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 42

原创 大白话讲解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 70

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

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

2020-09-22 05:28:17 47

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

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

2020-09-16 23:27:16 43

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

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

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

2020-09-08 22:57:21 90

原创 使用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 214

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

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

原创 深度解析dubbo信息交换层请求与响应

本文基于dubbo v2.6.x1. ExchangeChannel在《深度解析dubbo信息交换层Exchanger》解析了信息交换层的Exchanger,在解析过程中或多或少的提及到ExchangeChannel,在HeaderExchangeClient中就将client包装成了ExchangeChannel,在HeaderExchangeServer中将channel包装成了ExchangeChannel,Channel字面意思通道,可以将它理解为客户端与服务端的连接。接下来看下Exchange

2020-08-31 22:32:09 68

原创 深度解析dubbo信息交换层Exchanger

本文基于dubbo v2.6.x1.信息交换层介绍我们先来看下信息交换层的位置:

2020-08-30 21:05:39 54

原创 深度解析dubbo monitor默认实现

本文基于dubbo v2.6.x文章目录1. DubboMonitor原理2. DubboMonitorFactory3. DubboMonitor4. 自己实现一个监控服务1. DubboMonitor原理在《深度解析dubbo monitor(api)》一文中我们解析了dubbo Monitor 与MonitorFactory 的抽象接口,以及继承关系。在本文中我们将讲解下在当前版本的默认实现(也是唯一实现),就是DubboMonitor。 DubboMonitor 的原理就是将收集到的调用指标信

2020-08-29 22:08:01 69

原创 深度解析dubbo过滤器之MonitorFilter

本文基于dubbo v2.6.x1. Monitor与MonitorFilter的关系首先介绍下Monitor,Monitor字面是监控的意思,在dubbo中可以通过Monitor实时监控(不能算是实时,你要是将上报周期缩小可以接近实时)到服务的调用情况(粒度为方法级别),包括请求成功数,请求失败数,吞吐量,当前并发数,响应时长等等。而Monitor这些调用统计指标是MonitorFilter 来采集的,MonitorFilter就相当于咱们的source。当我们配置了monitor,这个Monito

2020-08-28 21:18:00 132

原创 深度解析dubbo monitor(api)

本文基于dubbo v2.6.x1. 监控模块继承关系首先看下监控工厂的继承关系图2.MonitorFactoryMonitorFactory 是monitor工厂抽象,里面提供了一个getMonitor的方法。我们来看下MonitorFactory定义:我们看到MonitorFactory 接口是dubbo spi 的扩展点,而且 getMonitor方法能够根据url的protocol自适应选择对应的实现类,下面是它的继承关系图。2.Monitor与MonitorServiceMon

2020-08-27 21:33:15 81

原创 深度解析dubbo zk客户端实现

本文基于dubbo v2.6.x文章目录一、ZookeeperTransporter二、ZookeeperClient三、AbstractZookeeperClient一、ZookeeperTransporterZookeeperTransporter其实就是使用dubbo spi获取zk客户端的接口我们看下它的2个实现类CuratorZookeeperTransporter 与ZkclientZookeeperTransporterZkclientZookeeperTransporter:

2020-08-25 22:33:15 98

原创 深度解析dubbo注册中心zookeeper实现

本文基于dubbo 2.6.x文章目录一、ZookeeperRegistryFactory二、ZookeeperRegistry2.1 class与成员变量2.2 构造2.3 doRegister2.4 doUnregister2.5 doSubscribe2.6 doUnsubscribe三、总结一、ZookeeperRegistryFactoryZookeeperRegistryFactory是注册中心zookeeper工厂的实现,代码比较简单,我们直接来看下。可以看到ZookeeperRe

2020-08-24 21:21:15 109

原创 深度解析dubbo注册中心抽象实现

文章目录一、AbstractRegistryFactory一、AbstractRegistryFactoryAbstractRegistryFactory 是注册中心工厂RegistryFactory接口的抽象实现,首先看下它的class定义:public abstract class AbstractRegistryFactory implements RegistryFactory {...}这个没啥好说的实现RegistryFactory接口,接下来看下静态成员与成员变量// 日志pr

2020-08-22 23:21:07 83

原创 深度解析dubbo集群路由之标签路由

本文基于dubbo v2.6.x1.标签路由介绍官方对于标签路由的解释(官方文档地址:链接):一次 dubbo 调用能够根据请求携带的 tag 标签智能地选择对应 tag 的服务提供者进行调用。这个标签路由可以理解为给应用或者是一次调用打标签,然后具有相同标签的会被访问到,如果没有相同标签的服务提供者,你只要没有设置 dubbo.force.tag为true也就是强制使用标签,它就会去标签为null的服务提供者,dubbo管这个操作叫服务降级。其实这个标签路由是dubbo自动装配的,不需要咱们

2020-08-20 21:21:56 283

原创 深度解析dubbo集群路由之脚本路由

本文基于dubbo v2.6.x1.脚本路由介绍脚本路由,顾名思义,就是使用脚本语言进行路由处理,脚本路由规则支持 JDK 脚本引擎的所有脚本,比如:javascript, jruby, groovy 等,通过 type=javascript 参数设置脚本类型,缺省为 javascript。这里拿官网文档上的例子介绍下(官方文档:链接)脚本路由的url示例:"script://0.0.0.0/com.foo.BarService?category=routers&dynamic=false

2020-08-19 22:57:01 56

原创 深度解析dubbo集群路由API

本文基于dubbo v2.6.x1. Router介绍

2020-08-18 23:40:09 74

原创 深度解析dubbo集群之并发调用与安全失败实现

本文基于dubbo v2.6.x1.介绍本文将解析下dubbo 集群的两个实现,分别是并发请求与安全失败,首先说下这个并发请求,并发请求就是将同一个请求信息使用多线程发送到多个不同的服务提供者上,然后获取第一个响应回来的结果,其实就是并发调用服务提供者们,取最快响应回来的那个结果。再来说下这个安全失败(实在找不到合适的词语),在《深度解析dubbo集群之快速失败与广播调用实现》 一文中,我们讲过快速失败,这个快速失败就是调用一次,如果异常就抛出异常,而这个安全失败与快速失败差不多,不过在异常处理上有差距

2020-08-17 21:25:51 47

原创 深度解析dubbo集群之Directory

本文基于dubbo 2.6.x1. DirectoryDirectory 主要是服务调用者获取服务提供者列表的抽象,可以把它

2020-08-16 16:11:58 64

原创 深度解析dubbo集群之失败恢复

本文基于dubbo v2.6.x文章目录1. 介绍2. 配置3. FailbackClusterInvoker 源码解析1. 介绍本文主要讲解dubbo集群失败恢复功能的实现,在文章《深度解析dubbo集群之API》讲解了关于FailbackCluster的源码,在join方法实现中就是创建了一个FailbackClusterInvoker 返回,具体源码看下图:在FailbackClusterInvoker 类中,是对调用过程中失败恢复功能的实现,在这里稍微说下dubbo是怎样做的失败恢复,在服

2020-08-15 12:07:08 50

原创 深度解析dubbo集群之快速失败与广播调用实现

本文基于dubbo v2.6.x文章目录1. 介绍2. 配置3. FailfastClusterInvoker源码解析4. BroadcastClusterInvoker源码解析5.总结1. 介绍本文主要是讲解下dubbo集群 快速失败与广播 实现(为了节省文章资源,咱们一块讲解,),首先说下快速失败怎么一回事,比如说服务调用者在进行远程调用的时候,如果出现了异常,它不像我们在《深度解析dubbo集群之失败重试实现》一文中讲解的失败重试一样,而是失败就抛出异常,达到快速失败的效果,其对应的invoke

2020-08-15 10:07:13 145

原创 深度解析dubbo集群之失败重试实现

本文基于dubbo 2.6.x1. 介绍在《深度解析dubbo集群之抽象实现》文中我们讲解了集群invoker的公共抽象类AbstractClusterInvoker,它主要是实现类invoke方法,与select方法(从服务提供者列表中获取一个合适的服务提供者供本次调用),今天我们再来看下它的一个实现类FailoverClusterInvoker,FailoverClusterInvoker类继承AbstractClusterInvoker抽象类,实现了其doInvoke方法,主要是实现类失败重试的功

2020-08-14 21:29:45 74

原创 深度解析dubbo集群之抽象实现

本文基于dubbo v2.6.x文章目录1. 介绍2. AbstractClusterInvoker源码解析3. 总结1. 介绍在《深度解析dubbo集群之API》一文中,我们介绍Cluster 接口以及它的实现类与实现类的功能,通过上文学习,我们知道它每个实现类的join方法里面都会创建一个与之功能对应的invoker, 本文我们就来介绍下invoker是怎样实现对应功能的。首先我们先来看看那些invoker的继承关系我们可以看到,它们继承AbstractClusterInvoker 这个抽象类

2020-08-13 21:59:31 57

原创 深度解析dubbo集群之API

本文基于dubbo v2.6.x文章目录1. Cluster接口2. Cluster实现类讲解2.1 FailoverCluster2.2 AvailableCluster2.3 BroadcastCluster2.4 FailbackCluster2.5 FailfastCluster2.6 FailsafeCluster2.7 ForkingCluster2.8 MergeableCluster2.9 MockClusterWrapper3.总结1. Cluster接口我们在讲解服务引用com.a

2020-08-11 22:02:37 66

原创 深度解析dubbo负载均衡之ConsistentHashLoadBalance

本文基于dubbo v2.6.x文章目录1. 一致性hash2. ConsistentHashLoadBalance源码解析1. 一致性hash在分布式系统中解决负载均衡问题的时候可以使用hash算法来将固定的一部分请求落在同一台机器上,这样每台服务器会固定的处理同一部分请求。来起到负载均衡的作用。但是普通的余数的hash(hash(key)%机器数)算法伸缩性很差,每当新增或者下线机器的时候,某个key与机器的映射会大量的失效,一致性hash则利用hash环对其进行了改进。我们举个例子,比如我现

2020-08-09 21:33:30 86

原创 深度解析dubbo负载均衡之LeastActiveLoadBalance

本文基于dubbo v2.6.x1. 最小活跃数介绍本文主要是讲解dubbo负载均衡的最少活跃数(并发数)算法,在阅读本文之前建议读者学习下这篇文章《深度解析dubbo过滤器之ActiveLimitFilter》了解这个活跃数是怎么来的,当然不了解这个活跃数是怎样算出来的可以,但是需要知道这个活跃数其实就是在当前这个服务调用者中当前这个时刻 某个invoker(某个服务提供者的某个接口)某个方法的调用并发数,在调用之前+1 调用之后-1的一个计数器。其实最少活跃数(并发数)算法字面上来说就是获取那个活跃

2020-08-09 18:40:02 133

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

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

2020-10-20

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

JAVA核心知识点整理 这个涵盖了老多的JAVA知识点, 面试前看看有好处,可以说是JAVA的面试宝典,从jvm到各种框架,看完无敌了

2020-10-19

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

空空如也

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