![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Dubbo 笔记衍生篇
文章平均质量分 96
衍生
猫吻鱼
不是我鸽,是我太忙。
感觉要猝死
展开
-
Dubbo笔记衍生篇⑩:2.7 版本的动态配置监听
一、前言二、提供者1. Dubbo 2.7 之前RegistryProtocol#export 中的 registry.subscribe(overrideSubscribeUrl, overrideSubscribeListener);2. Dubbo 2.7 之后ServiceConfigurationListener private class ServiceConfigurationListener extends AbstractConfiguratorListener原创 2021-12-15 17:22:03 · 3022 阅读 · 0 评论 -
Dubbo笔记衍生篇⑨:Dubbo 线程模型
一、前言本系列为个人Dubbo学习笔记衍生篇,是正文篇之外的衍生内容,内容来源于《深度剖析Apache Dubbo 核心技术内幕》, 过程参考官方源码分析文章。仅用于个人笔记记录。本文分析基于Dubbo2.7.0版本,由于个人理解的局限性,若文中不免出现错误,感谢指正。本篇本来是 Dubbo笔记 ⑥ : 服务发布流程 - NettyServer 中 的内容,为了方便日后查找和修改,还是单独成文。二、Dubbo线程模型1. Reactor 线程模型Netty线程模型的时候,一般首先会想到的是经典的原创 2021-09-09 14:47:35 · 1044 阅读 · 0 评论 -
Dubbo笔记衍生篇⑧:事件通知 FutureFilter
FutureFilter 的功能比较简单,完成了事件回调的功能,可以借此完成一些通知功能等。具体来说为在调用之前、调用之后、出现异常时,会触发 oninvoke、onreturn、onthrow 三个事件,可以配置当事件发生时,通知哪个类的哪个方法。原创 2021-07-29 20:35:31 · 518 阅读 · 0 评论 -
Dubbo笔记衍生篇⑦:异步场景下的问题
一、前言二、过滤器链以下内容摘自《深度剖析Apache Dubbo 核心技术内幕》:在2.7.0版本之前,在消费端采用异步调用后,由于异步结果在异步线程(Dubbo框架线程模型线程池中的线程)中单独执行,因此DubboInvoker的invoke()方法在发起远端请求后,会将空的RpcResult对象返回Filter调用链,也就是说,Filter链上的所有Filter获取的远端调用结果都是null,最终null值也直接返回给调用方法。而真正的远端调用结果需要调用方从RpcContext获取future原创 2021-07-27 19:53:22 · 737 阅读 · 0 评论 -
Dubbo笔记衍生篇⑥:本地Mock 和服务降级
一、前言1. 本地Mock服务消费端本地服务mock主要用来做本地测试用,当服务提供端服务不可用时,使用本地mock服务可以模拟服务提供端来让服务消费方测试自己的功能,而不需要发起远程调用。要实现Mock功能,首先需要消费端先实现服务端的 mock 实现类,需要注意的是Mock实现类必须要符合 接口包名.类名Mock格式。需要注意的是,在执行Mock服务实现类 mock() 方法前,会先发起远程调用,当远程服务调用失败时,才会降级执行mock功能。开启mock 功能需要设置 : // 设置启原创 2021-06-22 19:55:04 · 1043 阅读 · 1 评论 -
Dubbo笔记衍生篇⑤:MergeableClusterInvoker
一、前言二、多分组调用首先需要明确在Dubbo中是通过 服务接口 + 服务分组 + 服务版本号确定唯一服务。当一个接口有多种实现时,可以用group区分,所以一个服务可能存在多个不同分组,而一个消费者可以同时引用一个接口的不同分组实现。 // 引用服务分组为 aaa, bbb 的 demeService 服务 @Reference(version = "1.0.0", group = "aaa,bbb") private DemoService demoService;默认情况下,原创 2021-06-04 16:19:17 · 526 阅读 · 1 评论 -
Dubbo笔记衍生篇④:ChannelHandler
一、前言二、ChannelHandler三、1. MultiMessageHandlerMultiMessageHandler 仅仅针对了 received 方法做了处理,对MultiMessage 消息类型进行了支持。如下:public class MultiMessageHandler extends AbstractChannelHandlerDelegate { public MultiMessageHandler(ChannelHandler handler) {原创 2021-05-07 10:29:09 · 762 阅读 · 0 评论 -
Dubbo笔记衍生篇③:ProtocolWrapper
QosProtocolWrapper : Dubbo QOS 功能的处理 https://blog.csdn.net/qq_33513250/article/details/102978132ProtocolListenerWrapper :ProtocolFilterWrapper原创 2021-04-01 20:32:20 · 1174 阅读 · 1 评论 -
Dubbo笔记衍生篇②:Dubbo SPI 原理
一、前言Dubbo 为每一个功能点提供了一个SPI 扩展接口。而为了为了不加载不使用SPI 实例,Dubbo通过适配器模式和动态编译技术,加载指定的SPI 实现。二、Dubbo适配器原理二、动态编译众所周知,Java 程序想要运行首先需要将Java源代码编译成字节码文件,然后JVM把字节码文件加载到内存创建Class 对象后,使用Class对象创建实例。正常情况下,我们是将所有源文件编译为字节码文件,然后由JVM统一加载,而动态编译则是在JVM进程运行时把源文件编译为字节码文件,然后使用字节码文件原创 2021-03-15 18:08:25 · 3482 阅读 · 3 评论 -
Dubbo笔记衍生篇①:JDK SPI机制
一、前言SPI, 全名 service provider interface,是JDK内置的中服务发现机制, 是一种动态替换发现的机制JDK 中的 SPI 是面向接口编程的,服务规则提供者会在JRE 的核心中提供访问接口,而具体实现则由其他开发商提供。使用方式是,在META-INF/services文件夹下 建立一个文件,以暴露接口全路径名为文件名,内容是需要加载的实现类的全路径名。随后通过 ServiceLoader.load(接口.class) 进行加载。比如规范开发者在 rt.jar 中定义原创 2021-03-15 18:07:43 · 564 阅读 · 2 评论