【Dubbo】Dubbo源码环境与开发环境搭建

news2024/9/25 9:28:06

📫作者简介:小明java问道之路2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于知名金融公司后端高级工程师。

        

📫 热衷分享,喜欢原创~ 关注我会给你带来一些不一样的认知和成长。

        

🏆 2022博客之星TOP3 | CSDN博客专家 | 后端领域优质创作者 | CSDN内容合伙人

🏆 InfoQ(极客邦)签约作者、阿里云专家 | 签约博主、51CTO专家 | TOP红人、华为云享专家

        

🔥如果此文还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主~ 


🍅 文末获取联系 🍅  👇🏻 精彩专栏推荐订阅收藏 👇🏻

专栏系列(点击解锁)

学习路线(点击解锁)

知识定位

🔥Redis从入门到精通与实战🔥

Redis从入门到精通与实战

围绕原理源码讲解Redis面试知识点与实战

🔥MySQL从入门到精通🔥

MySQL从入门到精通

全面讲解MySQL知识与企业级MySQL实战

🔥计算机底层原理🔥

深入理解计算机系统CSAPP

以深入理解计算机系统为基石,构件计算机体系和计算机思维

Linux内核源码解析

围绕Linux内核讲解计算机底层原理与并发

🔥数据结构与企业题库精讲🔥

数据结构与企业题库精讲

结合工作经验深入浅出,适合各层次,笔试面试算法题精讲

🔥互联网架构分析与实战🔥

企业系统架构分析实践与落地

行业最前沿视角,专注于技术架构升级路线、架构实践

互联网企业防资损实践

互联网金融公司的防资损方法论、代码与实践

🔥Java全栈白宝书🔥

精通Java8与函数式编程

本专栏以实战为基础,逐步深入Java8以及未来的编程模式

深入理解JVM

详细介绍内存区域、字节码、方法底层,类加载和GC等知识

深入理解高并发编程

深入Liunx内核、汇编、C++全方位理解并发编程

Spring源码分析

Spring核心七IOC/AOP等源码分析

MyBatis源码分析

MyBatis核心源码分析

Java核心技术

只讲Java核心技术

本文目录

本文目录

本文前言

一、Dubbo开发环境搭建

1、下载并安装JDK

2、Maven下载与配置

3、Zookeeper下载与配置

4、IDE安装

二、Dubbo源码环境搭建

1、环境准备

2、下载源码

3、导入工程

4、代码调试

5、dubbo的核心模块

5.1、dubbo-common 模块

5.2、dubbo-remoting 模块和dubbo-rpc 模块

5.3、dubbo-cluster 模块和dubbo-registry 模块

5.4、monitor 、config、metadata、configcenter模块

总结


本文前言

本文实战与理论相结合,先讲解Dubbo开发环境搭建下载并安装JDK、Zookeeper、IDE、Maven等等,在讲解ubbo源码环境搭建的环境准备,如何下载源码、导入工程并代码调试,最后分析dubbo项目中的核心模块。

一、Dubbo开发环境搭建

1、下载并安装JDK

在 Java Downloads | Oracle 中下载最新的JDK8,并且需要做一些手动配置,可以参考以下操作:环境变量 JAVA_HOME 、CLASSPATH 设置

检查系统是否已经安装好了JDK,在终端输入命令:java -version

2、Maven下载与配置

Maven 可以在 http://maven.apache.org/ 中下载,和配置JDK一样简单,首先将下载的Maven解压缩到任意目录。

将环境变量M2_HOME指向该安装目录,将%MAVEN_HOME%\bin添加到可执行路径,方便在终端执行 Maven命令。

3、Zookeeper下载与配置

在生产环境中已经大量使用ZooKeeper作为注册中心,配置单机 ZooKeeper的步骤,方便本地启动Dubbo。在 http://mirrors.shu.edu.cn/apache/zookeeper/中下载最新的版本,解压缩zookeeper-*.tar.gz文件到任意目录,成为安装目录。

将环境变量 ZK_HOME指向[安装目录]/zookeeper-3.4.13,将${ZK_HOME}/bin添加到可执行路径,方便在终端执行 ZooKeeper命令。在复制一份配置文件zoo_samplecfg 并重命名为 zoo.cfg,然后在终端执行zkServer.sh start 即可,默认会监听 2181端口。

4、IDE安装

目前流行的IDE工具下载地址是IntellijIDEA:www.jetbrains.com。IntellijIDEA具有广泛的功能,也符合主流习惯。

二、Dubbo源码环境搭建

1、环境准备

JDk 1.8.0_515、maven 3.3.9、工具:IntelliJ IDEA 2023、Zookeeper、Dubbo 2.6.x

2、下载源码

// 搭建Dubbo源码环境,到自己的仓库,直接执行下面的命令去下载代码:https://github.com/apache/dubboFork
git clone git@github.com:xxxxxxxx/dubbo.git 

// 然后切换分支,因为目前最新的是 Dubbo 2.7.7 版本,所以这里我们就用这个新版本:
git checkout -b dubbo-2.7.7 dubbo-2.7.7 

// 执行 mvn 命令进行编译
mvn clean install -Dmaven.test.skip=true 

// 最后,在 IDEA 中导入源码(导入过程中会下载所需的依赖包)
mvn idea:idea // 或者执行这个 mvn idea:workspace 

3、导入工程

在 IDEA 成功导入 Dubbo 源码之后,可以看到的项目结构,如下图所示:

4、代码调试

Dubbo调用演示可以使用Dubbo演示模块。该模块可以演示一个完整的消费者调用服务提供商的过程。首先启动dubbo-demo-provider,然后启动dubbo-demo-consumer消费程序,直接运行相应模块的main方法。

如果我们想直接调试某个模块的代码,我们需要做什么?在Dubbo的每个模块中,除了主目录中的源代码外,还有一个测试目录,其中包含完整的单元测试代码。在调试某个函数的源代码时,建议先读取相应的单元测试代码,然后在相应的源代码中断点并运行单元测试。例如,如果我们想调试用于负载平衡的源代码,我们可以使用LoadBalanceTest单元测试类。

5、dubbo的核心模块

5.1、dubbo-common 模块

dubbo-common 模块 是Dubbo的公共模块,它有许多工具类和公共逻辑,如Dubbo SPI实现、时间轮实现、动态编译器等。

5.2、dubbo-remoting 模块和dubbo-rpc 模块

1、dubbo-remoting模块(Dubbo远程模块)

Dubbo 的远程通信模块,其中的子模块依赖各种开源组件实现远程通信。在 dubbo-remoting-api 子模块中定义该模块的抽象概念,在其他子模块中依赖其他开源组件进行实现,例如,dubbo-remoting-netty4 子模块依赖 Netty 4 实现远程通信,dubbo-remoting-zookeeper 通过 Apache Curator 实现与 ZooKeeper 集群的交互。

2、dubbo-rpc 模块(Dubbo-rpc模块)

Dubbo 中对远程调用协议进行抽象的模块,其中抽象了各种协议,依赖于 dubbo-remoting 模块的远程调用功能。dubbo-rpc-api 子模块是核心抽象,其他子模块是针对具体协议的实现,例如,dubbo-rpc-dubbo 子模块是对 Dubbo 协议的实现,依赖了 dubbo-remoting-netty4 等 dubbo-remoting 子模块。 dubbo-rpc 模块的实现中只包含一对一的调用,不关心集群的相关内容。

5.3、dubbo-cluster 模块和dubbo-registry 模块

1、dubbo-cluster 模块(Dubbo集群模块)

Dubbo中负责管理集群的模块,提供了一系列与集群相关的功能,如负载平衡、容错和路由。最终目标是将多个Provider 提供者伪装成一个Provider 提供者,这样Consumer 消费者就可以像调用单个Provider 提供者一样调用Provider 集群。

2、dubbo-registry 模块(Dubbo注册模块)

Dubbo中负责与多个开源注册表交互的模块提供了注册中心的功能。其中,Dubbo注册中心 dubbo-registry-api 是一个顶级抽象,而其他子模块是特定开源注册中心组件的特定实现。例如,dubbo-registry-zookeeper 子模块是Dubbo集成到zookeeper中的具体实现。

5.4、monitor 、config、configcenter模块

1、dubbo-monitor模块(Dubbo监控模块)

Dubbo 的监控模块,主要用于统计服务调用次数、调用时间以及实现调用链跟踪的服务。

2、dubbo-config 模块(Dubbo配置模块)

Dubbo 对外暴露的配置都是由该模块进行解析的。例如,dubbo-config-api 子模块负责处理 API 方式使用时的相关配置,dubbo-config-spring 子模块负责处理与 Spring 集成使用时的相关配置方式。有了Dubbo配置模块,用户只需要了解Dubbo的配置规则,而不需要了解Dumbo的内部细节。

Dubbo的元数据模块(元数据的内容将在本课程后面详细介绍)。dubbo元数据模块的实现例程还具有一个用于抽象的API子模块,然后是用于特定实现的其他子模块。

3、dubbo-configcenter 模块(Dubbo配置中心模块)

Dubbo的动态配置模块主要负责服务治理规则的外部配置、存储和通知,并提供多个子模块用于访问各种开源服务发现组件。

总结

本文实战与理论相结合,先讲解Dubbo开发环境搭建下载并安装JDK、Zookeeper、IDE、Maven等等,在讲解ubbo源码环境搭建的环境准备,如何下载源码、导入工程并代码调试,最后分析dubbo项目中的核心模块。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/657777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库信息速递 为何你的公司应从以数据驱动为核心向以决策驱动为核心的转变 --所谓AI项目是垃圾堆 (译)...

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

结构体内存对齐与联合体

目录 前言 结构体大小的计算 修改默认对齐数 前言 当我们了解结构体的声明,结构体的自引用,结构体变量的定义和初始化,如何计算结构体的大小呢?结构体类型的数据是在内存中如何存放的呢?这也是本文需要讨论的问题;…

CVPR 2023 | 图像超分,结合扩散模型/GAN/部署优化,low-level任务,视觉AIGC系列

1、Activating More Pixels in Image Super-Resolution Transformer 基于Transformer的方法在低级别视觉任务中,如图像超分辨率,表现出了令人印象深刻的性能。Transformer的潜力在现有网络中仍未得到充分发挥。为了激活更多的输入像素以实现更好的重建&a…

Ansible配置和模块

Ansible是一个基于Python开发的配置管理和应用部署工具,现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点,Pubbet和Saltstack能实现的功能,Ansible基本上都可以实现。 Ansible能批量配置、部署、管理上千台主机。比如以前需…

Python自动化测试基础必备知识点总结

一、自动化测试的概念 性能系统负载能力稳定性过载操作下的系统瓶颈自动化测试,使用程序代替人工,可以提高测试效率性,自动化测试能自动化使用代码模拟大量用户,让用户请求多页和多用户并发请求收集参数,并对系统负载…

使用UnityXR配置PICO开发环境

效果展示: 一、说明 本文环境搭建测试基于Unity2021.3.26版本进行的,插件版本为当前官方最新版本PICO_SDK_v2.1.5,根据官方的描述,PICO Unity Integration SDK v2.x.x 系列是长期维护版本,支持 PICO Neo3 和 PICO 4 全…

VFP提取源码中各项信息,快速转换语言,时间比钱值钱

您辛苦了很长时间,编写了一套很不错的管理软件,行业使用很不错,代码行10万,有一天一位外国客户找到您,说想购买使用您的软件,但显示语言需要是英语的,三五天内就要使用,你怎么办&a…

Windows 禁止 IE 自动跳转 Edge「整合方案」

前言 IE 已经合并进 Edge 浏览器,IE「正式入土」 RESPECT ​ 昨晚,公司系统更新(Edge)结束后,原本正常运行的 RPA 全部下线,原因如图: ​ 早上起来,又是充满希望的一天,于…

Autoware.universe中激光雷达感知部分简述,一看就懂,不懂请打我

文章目录 整体把握各部分阐述滤除多余的检测框 总结 整体把握 Autoware.universe中激光雷达感知部分的主要流程为: 将原始点云数据输入地面滤波器和深度学习检测算法,分别得到地面滤波后的点云points_no_ground和Object检测框(该检测框内包含中心点、位…

端午赠礼:软件测试万能面试脚本,一节课学会软件测试,欸嘿

​ 写在前面: 又到端午了,四舍五入接下来马上要过年了,新一波的跳槽旺季马上来临,不知道你是不是已经安于现状,还是蓄势待发呢?最近我和我的同事们一顿讨论,拟写了大家可能会遇到的面试情况&…

大数据基础平台实施及运维

一、大数据介绍 1、为什么使用大数据技术 数据量越来越大,数据分析的实时性越来越强,数据结果应用范围越来越广。(从用户的访问量、量、访问时间、访问频率,市场可以得到很多信息) 2、大数据的定义 数据收集、数据…

随机数发生器设计(五)

随机数发生器设计(五)- 重播种、输出、自测试 4 重播种函数5 输出函数6 自测试 4 重播种函数 重播种函数利用熵输入及额外输入更新种子,同时对内部状态进行更新。重播种操作函数如下: 函数定义:SM3_RNG_Reseed(workin…

【数据库原理与实践】记忆型章节作业汇总

填空题部分: Chp 8 安全性与完整性 part 1: 数据库的安全性是指保护数据库以防止不合法的使用所造成的( 数据泄露、更改或破坏 )。计算机系统有三类安全性问题,即( 技术安全 )、管理安全和…

【gitflow】 概念基本介绍

gitflow 简介 什么是gitflow? 我们大家都很会用git,但是我们很少去关心我们要怎么用branch和版本控制。 只知道master是第一个主分支,其他分支都是次要分支, 那你知道如下的问题如何回答吗? 如何保证主分支的稳定…

vue3+ts封装axios 配置BASE_URL拦截器 单个接口的拦截 全局拦截器

1. config.ts 书写BASE_URL ( service/request/config.ts) BASE_URL书写的方式很多 1: 直接在axios.create里面写死 ,在打包或者测试的时候手动进行修改BASE_URL 2:新建一个文件 在文件里面判断当前的环境 进行赋值BASE_URL 3:定义.env文件 …

线程间同步

线程间资源竞争 int count 0;void * add(void *arg){int val,i;for(i 0;i< 5000;i ){val count;printf("%p: %d\n",pthread_self(),val);count val 1;}return nullptr; }int main(){pthread_t tida,tidb;pthread_create(&tida,NULL,add,NULL);pthread_c…

python爬虫进行AES解密遇到的问题

1、TypeError: Object type <class ‘str’> cannot be passed to C code 报错如下&#xff1a; File "C:\Python311\Lib\site-packages\Crypto\Util\_raw_api.py", line 143, in c_uint8_ptrraise TypeError("Object type %s cannot be passed to C cod…

【改进算法】混合鲸鱼WOA和BAT算法(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

0101B站学习视频发留言找小伙伴-实用小工具系列

文章目录 1 起因2 找方法3 bilibili_api4 实现5 知识点结语 1 起因 经常在B站看学习视频&#xff0c;但是一个人学习&#xff0c;偶尔在想&#xff0c;我学的怎么样&#xff1f;有没有用&#xff1f;有没有谁可以一起交流下&#xff1f;好在现在有互联网&#xff0c;可以极大的…

WiFi各协议理论速度

一、总览 二、11b到11g提升点 802.11g工作在2.4G频段下&#xff0c;能够支持OFDM和CCK两种调制方式&#xff0c;提供16-QAM、64-QAM、BPSK和QPSK四种编码方式&#xff0c;我们通常说的54Mbps速率就是在2.4G频段下&#xff0c;通过OFDM调制&#xff0c;采用64-QAM编码的情况下实…