
dubbo source code
文章平均质量分 82
dubbo源码系列
乌托邦钢铁侠
Practice makes perfect, fighting with my time .
1. Java
2. English foolish
3. Love riding
展开
-
Dubbo源码(十一) Dubbo与SpringBoot整合时是如何管理Bean的?
本文由于涉及到Spring 框架内容比较多,看此篇文章的同学需要具备对Spring框架比较深刻的理解能力。原创 2023-02-06 14:56:16 · 1211 阅读 · 1 评论 -
Dubbo源码(十) 与Spring一起学习Dubbo里的Aware
现在很多同行做java开发几年了,被迫停留在curd的层面上"拧螺丝",对SpringAware可能只停留在怎么用的层面上,那我们用Spring时可以通过Aware能获取到容器工厂、应用上下文、Bean的类加载器等。那Spring 开发者为什么要设计这些Aware呢?那跟着这篇文章去一探究竟吧!原创 2022-11-17 16:36:23 · 859 阅读 · 0 评论 -
Dubbo源码学习(九) 详解Dubbo里的SPI
SPI是中间件设计不可缺少的一项,SPI能提高应用的可插拔性,SPI的英文全称: Service Provider Implementation, 我们可以在META-INF目录里配置SPI, ServiceLoader会根据配置来找到接口的实现,那Dubbo里的@SPI又是什么呢?Dubbo的Common模块里,定义了一个@SPI注解,该注解在extension包里,作用是标记一个接口为可扩展性的接口,具体的用法在下文里演示,被@SPI标记的接口默认的作用范围ExtensionScope是应用级别的。原创 2022-11-02 16:37:17 · 1243 阅读 · 0 评论 -
Dubbo源码学习(八)ScopeBeanFactory对比Spring 的BeanFactory
ScopeBeanFactory在Dubbo里的职责是充当着管理Dubbo里的bean, 类似于Spring 的BeanFactory注册管理Bean, 不同的是Spring BeanFactory是一个接口,主要实现是DefaultListableBeanFactory。原创 2022-10-31 16:57:11 · 667 阅读 · 0 评论 -
Dubbo源码学习(七)整合Spring 容器实现服务优雅启动和停止
一、整合Spring 1. 扫描包 使用AnnotationConfigApplicationContext类应用包,指定包的根路径即可。 // 5. 整合spring容器 AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext("com.example.dubbo"); context.start(); 包的路...原创 2021-05-18 21:59:05 · 544 阅读 · 3 评论 -
Dubbo源码学习系列(六) 手写简易RPC
前言 此文为了加深对RPC的理解,运用Socket网络编程技术手写一个简易版的RPC框架。一、项目工程目录二、手写服务端package com.example.rpc.server;import com.example.rpc.api.UserInterface;import com.example.rpc.client.Invocation;import java.io.IOException;import java.io.ObjectInputStre...原创 2021-05-04 16:38:34 · 396 阅读 · 0 评论 -
Dubbo 源码学习系列(五) 优化篇《工厂模式在Dubbo中的应用》
前言 前四篇实现了基于zookeeper和Netty的远程调用的流程,我们可以继续对代码进行优化,利用简单工厂模式使其支持两种协议,代码会更加简洁、有层次感。可以将共有方法抽离出来成一个接口,我在用Http实现的时候,服务端使用了start(URL url)方法,客户端实现了send(URL url,Invocation invocation)方法,同样使用netty时,用Start()方法启动nettyServer, 用nettyClient去发送Invocation对象。 ...原创 2021-05-03 18:36:24 · 383 阅读 · 3 评论 -
Dubbo源码学习系列(四) 整合网络框架Netty
1. Netty简介原创 2021-05-03 13:36:47 · 1361 阅读 · 2 评论 -
Dubbo源码学习系列(三) 整合zookeeper注册中心并提供watcher机制
1. 使用zookeeper注册中心替换map 在上一篇文章中,用到了RemoteRegistryMap替换了zookeeper实现服务的缓存,此方式的缺点是需要通过文件来共享map,如果服务提供者接口列表发生变化,那么也不能及时修改,那么我们怎么使用zookeeper注册中心实现服务注册和发现功能? zookeeper 本身是一个文件系统,可以在将服务的url相关信息挂载到指定节点目录下,然后通过watch机制监听服务提供者接口服务是否发生变化,如果有变化,那么watcher将...原创 2021-05-02 06:58:35 · 893 阅读 · 5 评论 -
Dubbo 源码学习系列(二) 动手写dubbo核心原理
前言 我们只有学习源码,才能获取到与大师交流的机会,优秀的设计能让我们在编程思想上得到锻炼提升,也会让我们更去注重自己的代码质量 !一、Dubbo 架构详解 理解Dubbo前,最好先手动画一下dubbo的架构图,画图理解架构是最清晰有效地方式。各模块的职责:注册中心: 提供服务发现与注册功能, 如果服务发生变动通过watch机制通知服务消费方。 服务消费者: 服务的调用方,在启动的时候会从注册中心拉取到服务地址列表通过Map缓存到本地。 服务提...原创 2021-04-30 16:10:57 · 1995 阅读 · 6 评论 -
Dubbo 源码学习系列(一) 浅析远程调用的核心流程
一、Dubbo 官方架构图 官方给的架构图主要分为了4个版块: 注册中心Registry、监视器Monitor、服务提供者Provider、服务消费者Consumer。二、功能解析在学习Dubbo 源码前,需要了解Dubbo是一个用Java实现的高可用的RPC框架, 主要功能包含服务注册与发现、集群容错、远程调用、负载均衡、高度可扩展、运行期流量调度、可视化的服务治理与运维等功能。三、从消费方解析Dubbo 源码首先我们先看一下Cons...原创 2021-04-27 18:03:45 · 1485 阅读 · 0 评论