- 博客(32)
- 问答 (1)
- 收藏
- 关注
原创 Dubbo源码解析-Netty
接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。因为篇幅问题,本文主要分析一下Dubbo消费端和服务端使用Betty的原理,从dubbo源码角度进行解析。不过不用担心,如果需要Spring的源码知识,文章中也会进行Spring源码铺垫介绍的。如果内容中有没描述清楚的,或者大家在阅读源代码有疑问的,欢迎留言,看到就会及时回复。Dubbo源码解析-负载均衡-CSDN博客。上篇我们介绍了消费端负载均衡的原理。
2024-07-18 10:15:59
1019
原创 Dubbo源码解析-过滤器Filter
上篇我们介绍了消费端负载均衡的原理因为篇幅问题,本文主单独Dubbo消费端负载均原理,从dubbo源码角度进行解析。大家可以好好仔细读一下本文。有疑问欢迎留言。接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。不过不用担心,如果需要Spring的源码知识,文章中也会进行Spring源码铺垫介绍的。如果内容中有没描述清楚的,或者大家在阅读源代码有疑问的,欢迎留言,看到就会及时回复。
2024-07-08 15:12:08
1071
原创 Dubbo源码解析-集群容错
上篇我们介绍了消费端负载均衡的原理因为篇幅问题,本文主单独Dubbo消费端负载均原理,从dubbo源码角度进行解析。大家可以好好仔细读一下本文。有疑问欢迎留言。接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。不过不用担心,如果需要Spring的源码知识,文章中也会进行Spring源码铺垫介绍的。如果内容中有没描述清楚的,或者大家在阅读源代码有疑问的,欢迎留言,看到就会及时回复。
2024-06-24 10:19:31
1595
原创 Dubbo源码解析-负载均衡
上篇我们介绍了消费端mock原理因为篇幅问题,本文主单独Dubbo消费端负载均原理,从dubbo源码角度进行解析。大家可以好好仔细读一下本文。有疑问欢迎留言。接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。不过不用担心,如果需要Spring的源码知识,文章中也会进行Spring源码铺垫介绍的。如果内容中有没描述清楚的,或者大家在阅读源代码有疑问的,欢迎留言,看到就会及时回复。
2024-06-20 00:34:08
1188
原创 Dubbo源码解析-mock原理
上篇我们介绍了消费端调用流程因为篇幅问题提,本文主单独Dubbo消费端mock原理,从dubbo源码角度进行解析。大家可以好好仔细读一下本文。有疑问欢迎留言。接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。不过不用担心,如果需要Spring的源码知识,文章中也会进行Spring源码铺垫介绍的。如果内容中有没描述清楚的,或者大家在阅读源代码有疑问的,欢迎留言,看到就会及时回复。
2024-06-13 10:06:02
1418
原创 Dubbo源码解读-Dubbo心跳机制
上篇我们介绍了消费端DubboInvoker的调用流程解析本文主要针Dubbo消费端/服务端心跳机制,从dubbo源码角度进行解析。大家可以好好仔细读一下本文。有疑问欢迎留言。接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。不过不用担心,如果需要Spring的源码知识,文章中也会进行Spring源码铺垫介绍的。如果内容中有没描述清楚的,或者大家在阅读源代码有疑问的,欢迎留言,看到就会及时回复。
2024-06-03 14:16:53
1502
原创 Dubbo源码解读-Dubbo启动、下线过程,以及优雅下线解决方案
AbstractConfig类中静态代码块,然后将DubboShutdownHook类,注册到虚拟机关闭钩子中,当虚拟机关闭时,就会调用对应的钩类。Java虚拟机会关闭以响应两种类型的事件:当最后一个非守护进程线程退出或调用exit(相当于System.exit)方法时,程序正常退出,或者虚拟机在响应用户中断(如键入^C)或系统范围事件(如用户注销或系统关闭)时终止。
2024-05-28 09:56:06
2240
原创 Dubbo阅读源码记录
1.ReferenceBeanInvocationHandler.invoker()->InvokerInvocationHandler.invoker()->MockClusterInvoker.invoke()->FailOverClusterInvoker.invoker()[或者是其他集群容错配置类]->DubboInvoker.doInvoke()->.完成服务注册和监听:register(registryUrl, registeredProviderUrl)。.SPI方式获取Protocol。
2024-05-21 22:37:35
1616
原创 Dubbo源码解读-消费端DubboInvoker的调用流程解析
消费端调用流程消费端依赖注入服务端后,当消费端请求服务端时,调用流程为:MockClusterInvoker->FailOverClusterInvoker->DubboInvokerr.doInvoke().最终回调DubboInvoker类。DubboInvoker调用前的详细流程可跳转至ExchangeClient初始化过程。DubboInvoker调用流程总结和铺垫。
2024-05-13 09:00:00
2066
原创 Dubbo源码解读-DubboInvoker总结和调用流程铺垫
DubboInvoker对象初始化时,getClient()创建Client和handler的执行连主要类:HeaderExchangeChannel.request():发送请求HeaderExchangeHandler.receive():接受服务端响应DefaultFeature.doReceive():设置response,唤醒get方法发起请求是会生成一个流水号ID,即request对象id属性。服务端响应也会带上这个IDDefaultFeature有两个全局变量。
2024-05-13 08:15:00
489
原创 Dubbo源码解读-Exchangeclient初始化
本文主要针Dubbo消费端Exchange初始化过程,从dubbo源码角度进行解析。大家可以好好仔细读一下本文。有疑问欢迎留言。接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。不过不用担心,如果需要Spring的源码知识,文章中也会进行Spring源码铺垫介绍的。如果内容中有没描述清楚的,或者大家在阅读源代码有疑问的,欢迎留言,看到就会及时回复。
2024-05-06 08:45:00
2449
原创 Dubbo源码解读-Mock原理和消费端服务列表刷新
上篇我们介绍了Consumer消费端调用流程流程,本文主要对消费端服务列表刷新以及服务调用流程的基础知识进行汇总一下,在了解基础知识的前提下,再回头看Dubbo服务列表刷新和Mock原理以及服务调用流程,理解起来就会更清楚。大家可以好好仔细读一下本文。有疑问欢迎留言。接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。不过不用担心,如果需要Spring的源码知识,文章中也会进行Spring源码铺垫介绍的。
2024-04-29 08:30:00
1563
原创 Dubbo源码解读-Consumer调用流程解析
消费端依赖代理对象,代理调用的入口为MockClusterInvoker.invoke持有集群容错类Cluster,默认FailOverCluster。MockClusterInvoker实现了Mock调用的原理从Url上获取配置的mock信息如果没有mock走远程RPC。获取服务列表(订阅事件,服务列表本地缓存)获取负载均衡算法。抽象类AbstractClusterInvoker调用子类具体集群容错类的doInvoke(),实现远程服务调用。调用负载均衡算法选择一个Invoker.
2024-04-22 08:30:00
2376
原创 Dubbo源码解读-Consumer消费端服务列表刷新
RegistryDirectory.notify(List invokerUrls)监听三个节点providers,configurators,routers根据Url中的目录(category),设置具体协议urlinvokerUrls:dubbo协议:providers目录routerUrls:router协议:routes目录configuratorsUrl:overide协议:configurators处理协议:routerUrls:routes目录变动。
2024-04-15 13:29:34
2654
原创 Dubbo源码解读-Consumer消费端@Reference服务端引用流程
其实就是注册节点到consumers节点下,然后订阅了providers/configurators/routers节点事件,创建Invoker代理。负责@Reference属性的收集和依赖注入postProcessPropertyValues()负责对收集好的@refer注解进行依赖注入。AnnotatedFieldElement和.AnnotatedMethodElement。inject()负责方法和属性上的依赖注入。下面以字段依赖注入为例接下来创建依赖bean。会使用双重代理。
2024-04-08 18:29:49
2707
1
原创 Dubbo源码解析-Provider端监听注册中心动态配置原理
verride协议中修改或者添加的属性合并到originUrl中,生成新的URL比较新的URL和当前URL是否相同不相同则重新完成服务暴露:其实就是创建一个新的DubboExport对象。服务端只做了一件事,根据新的URL,创建新的DubboExport对象。
2024-04-03 21:07:15
1941
原创 Dubbo源码解析-Provider服务暴露Export源码解析
服务暴露的核心流程在RegistryProtocol.export中,概括如下ServiceBean即成ApplicationListener。Spring启动后会触发onApplicationEvent事件加载所有Registry,将zookeeper协议URL变为registry协议URL。(多注册中心)遍历Protocols.(多协议)收集配置信息到map,把map转化为Dubbo协议URL。遍历registryURLs.将DubboUrl地址绑定到registryUrl属性中。
2024-03-25 18:40:41
1415
原创 Dubbo源码-Provider服务端ServiceBean初始化和属性注入
上篇我们介绍了Dubbbo的SPI机制,地址如下本文主要针对@Service解析Bean初始化和属性注入,从dubbo源码角度解析。本篇文章内容相对比较简单,所以读者可以轻松愉快阅读。Dubbo SPI机制,是Dubbo中比较重要的技术手段,也是面试过程中比较常问的技术问题,大家可以好好仔细读一下本文。有疑问欢迎留言。接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。
2024-03-20 14:09:52
1062
原创 Dubbo源码解读-dubbo启动与Spring整合之@ DubboComponentScan
本文主要@ DubboComponentScan注解功能进行源码说明。上篇我们介绍了Dubbbo整合Spring中的@EnableDubboConfig注解源码分析,地址如下。接着说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。不过不用担心,如果需要Spring的源码知识,文章中也会进行Spring源码铺垫介绍的。
2024-03-04 14:36:30
1218
原创 Dubbo源码解读-dubbo启动与Spring整合
首先跟大家做个说明,读Dubbo源码最好是先对Spring源码有一定的了解。如果大家需要,我也可以针对Spring框架做一系列源码的解读专栏。如果内容中有没描述清楚的,或者大家在阅读源代码有疑问的,欢迎留言,看到就会及时回复。为了更清楚的分析解释源码,源代码中部分不重要的内容可能会删减,保留重要内容方便大家理解。
2024-03-03 04:51:24
868
原创 分布式一致性方案
系统开发过程中,我们通常会遇到一个服务涉及到多个PRC调用的场景,例如下单/秒杀扣减库存,优惠卷等。那么如果保证多个RPC服务最终的数据一致性,就成了我们通常需要解决的问题。分布式系统中,RPC服务的调用通常存在三个状态,成功、失败和超时。超时场景时RPC可能是成功的,也肯能是失败的。针对上面这三种状态,在多个RPC调用或者本地数据与RPC如何保证一致的问题,存在已下多种解决方案。我们边学习,边记录。
2023-02-03 16:44:29
373
原创 HashMap查找get()扩容resize()位运算解释
铺垫1、a%=a&(-1)。即a与2的n次方的数取余,等于a与此值减一后的值按位取与。2、a%=x,则a%=x,或者a%=x+。3、a%=x,如果a&=0,则a%=x否则a%=x+。上述铺垫内容,在后期博客证明:HashMap查找过程final Node<K,V> getNode(int hash, Object key) { ...
2020-01-10 18:59:46
374
原创 Mybatis批量插入返回自增主键
我们都知道Mybatis在插入单条数据的时候有两种方式返回自增主键:1、对于支持禅城自增主键的数据库:useGenerateKeys和keyProperty。2、不支持生成自增主键的数据库:。但是怎对批量插入数据返回自增主键的解决方式网上看到的还是比较少,至少百度的结果比较少。Mybatis官网资料提供如下:First, if your database support...
2016-07-25 15:18:54
32418
24
原创 Spring 异常处理器 源码分析总结
异常处理的作用可以拦截制定异常,并进行处理返回到制定页面。需求举例如我的需求当用户请求不存的页面时不能出现浏览器默认的404页面,而出现我自己定义的html也面。当出现A类异常时返回到a.html。出现B类异常返回带b.html。项目实例例如:当为我根本没有ind123ex.html服务请求时。如果我不自定义错误处理器。返回404页面当自定义错误处理器,处理No
2015-10-30 16:00:11
759
Spring MVC Converter
2016-09-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人