![](https://img-blog.csdnimg.cn/direct/f4e2e24682de4a3fb40717281f638723.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
dubbo
文章平均质量分 91
dubbo 使用相关说明和源码分析
吴法刚
从现在我下了一个决定把自己学习过的东西都写成文章发表出来,大家共同学习共同探讨,知识无边界。。欢迎交流技术
展开
-
一文带你学dubbo,从小白到大神
了解一下spi是啥解决什么问题。原创 2023-06-19 08:45:53 · 158 阅读 · 0 评论 -
9.2-源码分析:Dubbo Remoting 层 Buffer 缓冲区
AbstractChannelBuffer 抽象类实现了 ChannelBuffer 接口的大部分方法,其核心是维护了以下四个索引。readerIndex、writerIndex(int 类型):通过 readBytes() 方法及其重载读取数据时,会后移 readerIndex 索引;通过 writeBytes() 方法及其重载写入数据的时候,会后移 writerIndex 索引。原创 2024-03-30 18:18:01 · 645 阅读 · 0 评论 -
9.0-源码分析:Dubbo Remoting 层核心接口分析
如上图所示,这里的 get*() 方法是获得 Endpoint 本身的一些属性,其中包括获取 Endpoint 的本地地址、关联的 URL 信息以及底层 Channel 关联的 ChannelHandler。send() 方法负责数据发送,两个重载的区别在后面介绍 Endpoint 实现的时候我们再详细说明。最后两个 close() 方法的重载以及 startClose() 方法用于关闭底层 Channel ,isClosed() 方法用于检测底层 Channel 是否已关闭。原创 2024-03-30 18:17:10 · 763 阅读 · 0 评论 -
9-Dubbo源码分析之:Remoting层:Dubbo Serialize 层:多种序列化算法,总有一款适合你
在本课时,我们首先介绍了 Java 序列化的基础知识,帮助你快速了解序列化和反序列化的基本概念。然后,介绍了常见的序列化算法,例如,Arvo、Fastjson、Fst、Kryo、Hessian、Protobuf 等。最后,深入分析了 dubbo-serialization 模块对各个序列化算法的接入方式,其中重点说明了 Hessian2 序列化方式。原创 2024-03-28 20:48:55 · 672 阅读 · 0 评论 -
8.2-简易版 RPC 框架实现 2.0 -netty实现
当前已经有很多成熟的协议了,例如 HTTP、HTTPS 等,那为什么我们还要自定义 RPC 协议呢?从功能角度考虑,HTTP 协议在 1.X 时代,只支持半双工传输模式,虽然支持长连接,但是不支持服务端主动推送数据。从效率角度来看,在一次简单的远程调用中,只需要传递方法名和加个简单的参数,此时,HTTP 请求中大部分数据都被 HTTP Header 占据,真正的有效负载非常少,效率就比较低。原创 2024-03-16 16:02:43 · 1202 阅读 · 0 评论 -
8-简易版 RPC 框架实现 1.0 -http实现
其实这个在一定意义上算不上rpc 框架, 只能说是帮我们简单的理解rpc工作的流程,比只看概念具体一点,方便理解。原创 2024-03-16 14:51:51 · 1257 阅读 · 0 评论 -
7.4-dubbo源码阅读之-dubbo-spi机制中的配置文件都可以存放再哪个路径下
可以看出来是用的java原生的ServiceLoader 加载所有的加载策略,最后存储到一个数组中。根据上图可以知道 存放的路径和优先级,我们也可以自定义一个路径。原创 2023-06-11 08:59:07 · 266 阅读 · 0 评论 -
7.3-dubbo源码之-ExtensionInjector
其实ExtensionInjector 非常简单, 我们知道dubbo有ioc注入的功能, 是靠的set方法注入,对应的底层源码主要是ExtensionInjector如果不知道dubbo的ioc 参考dubbo源码阅读之-java spi, dubbo spi 和 Spring spi 到底有啥区别。原创 2023-06-16 07:56:14 · 292 阅读 · 0 评论 -
7.2-dubbo源码阅读之-ExtensionLoader
ExtensionLoader 在dubbo中是一个很重要的类,其实也是一个工具类,根据名字我们知道就是复杂扩展点加载,我们也知道dubbo是微内核,良好的扩展机制,主要是依赖ExtendsionLoader。原创 2023-06-18 06:00:00 · 420 阅读 · 0 评论 -
7.1-dubbo源码阅读之-java spi, dubbo spi 和 Spring spi 到底有啥区别
Dubbo 并未使用 Java SPI,而是重新实现了一套功能更强的 SPI 机制。Dubbo SPI 的相关逻辑被封装在了 ExtensionLoader 类中,通过 ExtensionLoader,我们可以加载指定的实现类。原创 2023-06-11 08:47:46 · 515 阅读 · 0 评论 -
6-dubbo框架,应用程序,模块领域模型Model对象的初始化
在上一章中我们详细看了服务配置ServiceConfig类型的初始化,不过我们跳过了AbstractMethodConfig的构造器中创建模块模型对象的过程那为什么会在Dubbo3的新版本中加入这个域模型呢,主要有如下原因之前dubbo都是只有一个作用域的,通过静态类 属性共享增加域模型是为了:1.让Dubbo支持多应用的部署,这块一些大企业有诉求2.从架构设计上,解决静态属性资源共享、清理的问题3.分层模型将应用的管理和服务的管理分开可能比较抽象,可以具体点来开Dubbo3中在启动时候需要启动配原创 2023-06-19 08:49:07 · 564 阅读 · 0 评论 -
5-dubbo源码:启动服务前服务配置ServiceConfig类型是如何初始化的
ServiceConfig,服务配置实现类, 上面的类型都是抽象类型不能做为具体存在的事物,这个类型是我们出现的第一个服务配置实现类型,服务配置实现类已经从父类型中继承了这么多的属性,这里主要为实现服务提供了一些配置如服务的协议配置,服务的代理工厂JavassistProxyFactory是将生成导出服务代理的ProxyFactory实现,是其默认实现,服务提供者模型,是否导出服务,导出的服务列表,服务监听器等等.注意, ServiceMetadata这个类目前在Dubbo中没有用法。原创 2023-06-19 08:45:10 · 274 阅读 · 0 评论 -
3-dubbo源码 : Dubbo 的配置总线:抓住 URL,就理解了半个 Dubbo
在本课时,我们重点介绍了 Dubbo 对 URL 的封装以及相关的工具类,然后说明了统一契约的好处,当然也是 Dubbo 使用 URL 作为统一配置总线的好处,最后我们还介绍了 Dubbo SPI、Provider 注册、Consumer 订阅等场景中与 URL 相关的实现,这些都可以帮助你更好地感受 URL 在其中发挥的作用。这里你可以想一下,在其他框架或是实际工作中,有没有类似 Dubbo URL 这种统一的契约?欢迎你在留言区分享你的想法。高版本的Url已经做了一定的改造,后面再做一个记录。原创 2024-03-16 14:24:27 · 902 阅读 · 0 评论 -
2-dubbo源码 : 源码环境搭建
为便于你更好理解和学习,在开始搭建 Dubbo 源码环境之前,我们先来简单介绍一下 Dubbo 架构中的核心角色,帮助你简单回顾一下 Dubbo 的架构,也帮助不熟悉 Dubbo 的小伙伴快速了解 Dubbo。下图展示了 Dubbo 核心架构:Dubbo 核心架构图Registry:注册中心。负责服务地址的注册与查找,服务的 Provider 和 Consumer 只在启动时与注册中心交互。原创 2024-03-24 08:41:06 · 726 阅读 · 0 评论 -
1-dubbo源码从一个简单的服务提供者Demo开始
如果自己平时经常使用dubbo,这个对您来说是非常的简单,如果平时不怎么用,或者在公司里面有封装好的平台,自己使用的时候,只需要引入一下bean或者写一些配置就可以使用了,我建议还是看看下面的,毕竟学习还是系统的用比较好,我就是属于公司有自己的rpc框架平台,自己只需要进入sdk,稍微配置一下就可以,完全是高度封装的产品。原创 2024-03-24 08:37:12 · 882 阅读 · 0 评论 -
dubbo 源码系列之-集群三板斧---负载均衡(二)
我们紧接上一课时介绍了 LoadBalance 接口的剩余三个实现。我们首先介绍了LeastActiveLoadBalance 实现,它使用最小活跃数负载均衡算法,选择当前请求最少的 Provider 节点处理最新的请求;接下来介绍了 RoundRobinLoadBalance 实现,它使用加权轮询负载均衡算法,弥补了单纯的轮询负载均衡算法导致的问题,同时随着 Dubbo 版本的升级,也将其自身不够平滑的问题优化掉了;原创 2024-03-23 15:16:24 · 1384 阅读 · 0 评论 -
dubbo 源码系列之-集群三板斧---负载均衡(-)
负载均衡集群容错服务路由这3个概念容易混淆。他们都描述了怎么从多个 Provider 中选择一个来进行调用。那他们到底有什么区别呢?下面我来举一个简单的例子,把这几个概念阐述清楚吧。有一个Dubbo的用户服务,在北京部署了10个,在上海部署了20个。根据配置的路由规则,如果杭州发起的调用,会路由到比较近的上海的20个 Provider。根据配置的随机负载均衡策略,在20个 Provider 中随机选择了一个来调用,假设随机到了第7个 Provider。原创 2024-03-23 15:10:33 · 1242 阅读 · 0 评论 -
netty源码学习之-HashedWheelTimer
该部分源码是netty的时间轮,netty的时间轮是单轮,其他时间轮是多轮设计,今天先了解下netty的时间轮设计。原创 2023-04-22 16:30:00 · 589 阅读 · 0 评论 -
Registry dubbo的注册中心
在 Dubbo 中,一般使用 Node 这个接口来抽象节点的概念。Node不仅可以表示 Provider 和 Consumer 节点,还可以表示注册中心节点。Node 接口中定义了三个非常基础的方法(如下图所示):getUrl() 方法返回表示当前节点的 URL;isAvailable() 检测当前节点是否可用;destroy() 方法负责销毁当前节点并释放底层资源。AbstractRegistry 本地缓存:降低 ZooKeeper 压力的一个常用手段。原创 2024-03-16 16:52:04 · 1177 阅读 · 0 评论 -
Zookeeper 作为Dubbo端注册中心基础知识
ZooKeeper 集群中三种角色的节点(Leader、Follower 和 Observer)都可以处理 Client 的读请求,因为每个节点都保存了相同的数据副本,直接进行读取即可返回给 Client。对于写请求,如果 Client 连接的是 Follower 节点(或 Observer 节点),则在 Follower 节点(或 Observer 节点)收到写请求将会被转发到 Leader 节点。原创 2024-03-16 11:26:13 · 1108 阅读 · 0 评论 -
javassist 入门以及dubbo中的使用案例
学习javassite 不得不提的javaagent 技术,字节码插桩 如果不太了解的可以参考Javaagent入门这一篇文章自己有一个简单的大致了解Javassist是一个开源的分析、编辑和创建Java字节码的类库。其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成Javassist 应用场景:监控、动态代理dubbo、myBatis、Spring 都有不同程度的应用。原创 2023-06-10 14:20:19 · 1001 阅读 · 0 评论 -
dubbo源码阅读: dubbo的xml文件如何解析的?
我们在使用dubbo的时候,更多的是用spring的xml配置方式,我们今天了解下这些配置文件是如何解析的。原创 2023-05-28 10:30:32 · 899 阅读 · 0 评论