
Dubbo源码
半岛铁板
努力的人总会得到帮助
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Dubbo源码学习19
本篇幅分析Dubbo接收到消费方发起的请求进行服务调用逻辑。在Dubbo源码学习18篇幅消费方发起的服务调用后,会将本次请求调用的有关参数方法、入参、附件参数attachments等信息通过网络通信框架Netty发送到服务端,在传输的过程中,服务消费方的请求有关参数会先经过Codec进行编码,服务提供者会对请求调用有关的参数通过Codec进行解码,但是这些不是我们本篇幅的重点所以直接略过。...原创 2019-12-10 09:28:57 · 385 阅读 · 0 评论 -
Dubbo源码学习18
服务的远程调用过程---消费方发起调用请求继Dubbo源码学习17,我们知道对于消费方发起的方法调用是通过代理对象的方法调用实现的,代理对象方法调用的入口为InvokerInvocationHandler.invoker(Object proxy, Method method, Object[] args)public class InvokerInvocationHandler...原创 2019-11-22 15:49:58 · 380 阅读 · 0 评论 -
Dubbo源码学习17
本篇幅分析Dubbo创建代理对象流程,我们在刚开始分析服务引用章节,提到了最终Dubbo会根据invoker使用proxyFactory创建代理对象,本篇幅主要目的就是为了分析proxyFactory.getProxy(invoker);ReferenceConfig.createProxy(Map<String,String> map)@SuppressWarnings...原创 2019-11-21 20:55:45 · 427 阅读 · 0 评论 -
Dubbo源码学习16
Dubbo 提供了4种负载均衡实现,分别是基于权重随机算法的 RandomLoadBalance、基于最少活跃调用数算法的 LeastActiveLoadBalance、基于 hash 一致性的 ConsistentHashLoadBalance,以及基于加权轮询算法的 RoundRobinLoadBalance。不难看出所有负载均衡类均继承自AbstractLoadBalance,A...原创 2019-11-21 10:58:40 · 245 阅读 · 0 评论 -
Dubbo源码学习15
本篇幅分析Dubbo的集群Cluster以及ClusterInvoker的实现。为了避免单点故障,现在的应用通常至少会部署在两台服务器上。对于一些负载比较高的服务,会部署更多的服务器。这样,在同一环境下的服务提供者数量会大于1。对于服务消费者来说,同一环境下出现了多个服务提供者。这时会出现一个问题,服务消费者需要决定选择哪个服务提供者进行调用。另外服务调用失败时的处理措施也是需要考虑的,是重试呢...原创 2019-11-19 08:48:05 · 300 阅读 · 0 评论 -
Dubbo源码学习14
本篇幅主要分析DubboProtocol.refer方法创建invokerDubboProtocol.refer(Class<T> serviceType, URL url)@Override public <T> Invoker<T> refer(Class<T> serviceType, URL url) throws Rp...原创 2019-11-14 17:31:30 · 349 阅读 · 0 评论 -
Dubbo源码学习13
本篇幅分析Dubbo的配置规则Configurators和路由规则Routers的使用以及源码实现Configurators覆盖规则是Dubbo设计的在无需重启应用的情况下,动态调整RPC调用行为的一种能力。向注册中心写入动态配置覆盖规则。该功能通常由监控中心或治理中心的页面完成。RegistryFactory registryFactory = ExtensionLoader....原创 2019-11-13 18:07:42 · 363 阅读 · 0 评论 -
Dubbo源码学习12
该篇幅分析RegistryDirectory.subscribe(URL url)方法RegistryDirectory.subscribe(URL url)public void subscribe(URL url) { //consumer://169.254.22.149/com.alibaba.dubbo.study.day01.xml.service.Ech...原创 2019-11-12 16:39:10 · 857 阅读 · 0 评论 -
Dubbo源码学习11
引入服务的入口ReferenceBean。ReferenceBean.java除了多实现了FactoryBean接口其他的结构与ServiceBean(参考https://blog.youkuaiyun.com/qq_23536449/article/details/102639873)几乎差不多。我们知道FactoryBean是一种特殊的bean是;它是一个能生产对象的工厂Bean,它的实现...原创 2019-11-12 15:58:46 · 222 阅读 · 0 评论 -
Dubbo源码学习10
RegistryProtocol.export服务导出流程:导出服务ExporterChangeableWrapper->注册服务到注册中心->订阅注册中心overrideSubscribeUrl数据;篇幅有限,本篇幅主要分析订阅override数据RegistryProtocol.export(final Invoker<T> invoker)@Overri...原创 2019-11-08 10:43:03 · 495 阅读 · 0 评论 -
Dubbo源码学习09
RegistryProtocol.export服务导出流程:导出服务ExporterChangeableWrapper->注册服务到注册中心->订阅注册中心overrideSubscribeUrl数据;篇幅有限,本篇幅主要分析注册服务到注册中心的实现RegistryProtocol.export(final Invoker<T> invoker)public ...原创 2019-11-05 10:55:11 · 358 阅读 · 0 评论 -
Dubbo源码学习08
Dubbo的网络传输层支持Netty、Mina、Grizzly类型的NIO框架;那么Dubbo是怎么屏蔽三种NIO框架底层细节实现,做到统一处理Channel的。下面我们拿Netty与Mina实现网络传输为例,来简单总结下NettyServer.java@Override protected void doOpen() throws Throwable { /...原创 2019-11-04 19:37:42 · 169 阅读 · 0 评论 -
Dubbo源码学习07
RegistryProtocol.export服务导出流程:导出服务ExporterChangeableWrapper->注册服务到注册中心->订阅注册中心overrideSubscribeUrl数据;篇幅有限,本篇幅主要分析导出服务ExporterChangeableWrapper源码实现RegistryProtocol.export(final Invoker<T&g...原创 2019-11-02 10:58:08 · 284 阅读 · 0 评论 -
Dubbo源码学习06
在doExportUrlsFor1Protocol方法中可以找到如下代码片段....此处省略 //为服务提供类(refer)生成Invoker //这里的proxyFactory为ProxyFactory$Adaptive Invoker<?> invoker = proxyFact...原创 2019-10-19 16:22:35 · 299 阅读 · 0 评论 -
Dubbo源码学习05
ServiceBean是暴露服务的入口ServiceBean看起来貌似很复杂的样子,其实都是纸老虎。我们分为将上述类分为如下几类 XxxAware:实现该接口的Bean均可以通过SetXxx方法,注入Xxx对象 XxxConfig:服务暴露方暴露服务需要的相关配置;这个继承关系也很有意思,类似 属性->方法->接口->服务的配置 ApplicationLis...原创 2019-10-19 16:21:30 · 263 阅读 · 0 评论 -
Dubbo源码学习04
本篇幅的主要目的是通过学习dubbo对自定义标签的解析,掌握各个配置类之间的关系。比如看得懂官方文档:http://dubbo.apache.org/zh-cn/docs/user/configuration/xml.html各个配置类之间的关系Dubbo自定义标签解析的入口DubboNamespaceHandler/** * dubbo命名空间解析 * * 各个类之间的关系...原创 2019-10-15 21:12:21 · 268 阅读 · 0 评论 -
Dubbo源码学习03
JDK的SPI机制:spi 的全称是 service provider interface, 它是jdk内置的一种服务提供发现机制。常用于框架设计中:运行时动态为接口提供实现。SPI的使用a.创建接口PrintService.javapackage com.alibaba.dubbo.study.day02.javaspi;/** * @author 周宁 * @Da...原创 2019-10-15 09:39:18 · 316 阅读 · 0 评论 -
Dubbo源码学习02
Dubbo的架构provider启动时会向注册中心把自己的元数据注册上去(比如服务ip和端口号),consumer在启动时从注册中心订阅(第一次订阅会全量拉取数据)服务提供方的元数据,注册中心发生数据变更会推送给订阅的Consumer。在获取服务元数据后,Consumer可以发起RPC调用,在RPC调用前后会向监控中心上报统计信息(比如并发数和调用的接口)Dubbo的分层Ser...原创 2019-10-12 15:03:56 · 309 阅读 · 0 评论 -
Dubbo源码学习01
RPC框架的实现原理服务暴露方通过Socket接受到服务消费方的请求方法调用,通过反序列化解析出消费方调用的方法、参数,通过反射调用服务实现类的方法获取方法调用的结果,将调用结果使用socket回写给服务消费方。服务消费方通过动态代理透明的对服务进行调用,其中代理对象的方法调用通过socket将方法、参数相关信息写给服务暴露方,在通过socket将暴露方的调用结果回写给消费者使用Net...原创 2019-10-09 14:00:01 · 442 阅读 · 0 评论