Dubbox入门之环境搭建

springboot整合dubbox 简介今天咱们来看看怎么利用Spring Boot整合Dubbox来开发去中心化的微服务。系统环境本文基于Jdk1.8/Maven 3.3.9/Spring Boot 1.4.2.RELEASE/Dubbo 2.8.5.SNAPSHOT(Dubbox后续开源版本)/ZooKeeper3.4.8Zookeeper环境搭建下载并安装启动下载 wget http://mirrors.hust.edu.cn 阅读详情

**DubboxDemo之环境搭建(Maven多模块项目)**

在之前的 [Dubbox入门配置](http://tycoding.cn/2018/06/20/Dubbox/) 中我们已经了解了怎么配置和部署Dubbox,那么作为一个分布式框架,其核心就是将项目部署到不同的服务器上,然后通过注册中心进行调用。

所以,我们必须了解一下怎么在本地部署一个分布式项目,即利用maven实现的多模块项目,这样多个模块间是相互独立的(属于不同的项目),但是又可以相互依赖(通过pom配置模块间的相互依赖)

下面我们将利用IDEA构建一个maven分布式项目。
<!--more-->

源码,点击进入我的 [GitHub](https://github.com/TyCoding/dubboxdemo-parent)

# 创建`parent`项目

`parent`项目就是一个父类项目,他存在的意义就是管理其所有子项目的`pom`依赖。

**1.新建**



这里需要**注意**:上面我们已经提到了`parent`项目存在的意义就是管理子项目的`pom`依赖,所以这里不需要勾选`Create from archetype`,即我们不需要在`parent`父类项目中写代码。
然后我们继续`next`。



我们将父类项目名设置为`dubbboxdemo-parent`



**2.修改**
我们将创建好的父类项目的`src`包删除,因为这个父类项目只需要管理`pom`依赖即可,不需要写代码。
那么我们的`parent`父类项目就完成了创建。
最终项目结构


## 创建`pojo`模块

`pojo`项目顾名思义就是存放Java实体类的项目,对于分布式项目而言,很多模块都可能需要调用同一个`pojo`类,所以我们将pojo类单独提取出来供其他模块项目调用访问。

**1.新建**

右键点击我们的父类项目`dubboxdemo-parent`选择`new Module`新建一个模块。这里我们需要使用模板,选择`maven-archetype-webapp`




新的项目名称我们设置为`dubboxdemo-pojo`,并且IDEA帮我们自动关联了父类项目`dubboxdemo-parent`



### 介绍



如上图所示为我们创建第一个子项目`debboxdemo-pojo`后的完整项目结构。

**观察两者pom文件的变化**

1. 在`debboxdemo-pojo`子项目的pom文件中可以发现存在一个`<parent>`节点,就是表明此子项目依赖于父项目`dubboxdemo-parent`。并注意:此处的`debboxdemo-pojo`的打包方式是`jar`
2. 在`dubboxdemo-parent`父项目中我们发现多了一个`<modules><modele>`节点,其就标明了这个`dubboxdemo-pojo`模块是自己的子项目。并注意:此处的`dubboxdemo-parent`的打包方式为`pom`

### packing打包篇

maven常见的打包方式是:pom、jar、war。对于IDEA而言,新建的项目默认的打包方式是`war`。但是如果不写`<packaging>`节点,maven默认将项目打包成`jar`包。

我们需要的就是告诉maven,我这个项目是什么类型的。如果你设置为`jar`或者不添加`<packaging>`节点,maven就会帮你把项目打包为一个jar文件;如果你设置为`war`,maven就会将你的项目打包成一个`war`文件;如果你设置为`pom`,maven不会生成任何东西。

注意以下规则:

- `jar`: 是maven的默认打包类型,一般此模块中的代码是需要被其他各个模块共用的,并也不是父类模块,就用这中打包方式,可添加可不添加。
- `war`: 如果你的这个项目模块是web项目,即是需要用来运行在Tomcat服务器上的,就将此项目打包成这种类型。
- `pom`: 如果这个项目是父类项目,即如我们的案例中所有的子项目的最上层都是一个`parent`项目,这个项目不用来写程序,仅仅用来管理jar包,所以需要打包成`pom`类型。

## 创建`interface`模块

仍和上面创建`pojo`项目的步骤类似,我们创建的`dubboxdemo-interface`接口模块需要使用maven的模板,选择`maven-archetype-webapp`选项。

`dubboxdemo-interface`接口模块,顾名思义就是用来定义接口的,在以前已经提到了,模块化的项目中,各个部分都应该定义在不同的模块中,目的就是提高重用率。



如上所示,新创建的`dubboxdemo-interface`接口模块打包类型应该设为`jar`。

## 创建`service`模块

上面我们已经创建了`dubboxdemo-interface`接口模块,下面我们当然要创建对应的实现类模块`dubboxdemo-service`。

和创建`interface`模块步骤是相同的,我们在项目中创建`dubboxdemo-service`模块。这里需要注意的是`service`实现类模块打包类型是`war`类型。



## 创建`dao`模块

创建了`service`层模块了,下面就需要创建`dao`层模块了,即`dao`层模块是用来和数据库打交道的,用来持久化数据等。

我们创建`dubboxdemo-dao`模块,并注意这里的打包方式应该设置为`jar`类型。



## 创建`web`模块

创建了`service`层模块、创建了`dao`层模块。下面当然是创建`web`层模块了。

我们创建`dubboxdemo-web`模块。并注意这里的打包方式是`war`类型。



## 总览

到现在为止,我们已经创建了常见的分布式模块了,当然实际项目中,你还可能创建其他模块项目,比如`common`模块等,可以将通用的程序抽取出来,提高重用率。



如上是整体项目结构。其中`dao` `interface` `pojo`三个模块都是打包成`jar`类型、`service` `web`两层是需要打包成`war`类型。

# 配置项目

上面我们已经完成了基本的项目创建,回过头来想想:我们本次创建的是一个基于dubbox的分布式项目,项目首先需要启动`Service`模块,向`zookeeper`注册远程服务地址;然后启动`Web`模块,并中服务地址列表中随机选取一个分配给`Web端`调用。

那么我们需要配置各个模块之间的关系,不然就无法实现各个模块之间的关联,也就无法实现调用。

## 图解各模块间关系



如上,其实就是我们常见的三层架构,而在这里的区别之处就是各层都使用模块隔离出来了。我们需要知道的就是怎样在IDEA上建立这些模块之间的联系关系。

## 配置

### web模块





**注意** 各个模块都是打开这个`Open Module settings`,下面我不在截图。

之后建立模块间的依赖。





如上,点击`+`,选择`Module Dependency` 添加模块依赖。但是这里呢,因为我们还没有写代码,可能不知道应该怎样建立依赖,**注意**,这里的依赖设置和前面说的三层架构之间的调用有区别,这里建立的依赖相当于**Jar的依赖关系**,即我们需要使用另一个模块之间的接口、方法对象…的时候就添加对应的模块的依赖。**比如**,通常而言,我们会在web层调用service层,而需要这时需要依赖`interface`模块,而我们还需要调用`pojo`进行`装配Bean`,那么还需要依赖`pojo`模块。



除了上面的依赖配置还不行的,我们还需要手动在`pom`中建立依赖关系,注意,这里就是传说的三层架构设计了。



`groupId`以及`artifactId`使我们之前建立父模块`parent`已经设置好的。如上,我们只需要配置一个依赖关系即可,也就是`web-service-dao`的设计。这个配置与上面的模块配置是不同的,而且如果你重复配置了`pom`中的依赖关系,运行项目的时候是肯定会报错的,这个与`eclipse`是不同的。

### interface模块

在`interface`中,这里我们可能会用到`pojo`对象,所以建立与`pojo`的依赖关系。







### service模块

`service`模块即是`interface`模块的实现类,他既需要继承`interface`,又需要调用`dao`,所以我们给`service`配置与这两者之间的关系。





### dao和pojo模块

pojo模块不需要和依赖其他模块,所以无需配置。

`dao`模块,在这里可能需要`pojo`模块,所以建立与`pojo`模块间的依赖关系,这里我不在贴图。

### 终

到此为止我们基本算是配置好了各个模块间的依赖关系,需要注意的就是,在`Module setting`中,我们需要使用哪个模块中的方法,我们就配置依赖哪个模块,而在`pom`文件中我们需要遵循三层架构的调用关系即可。

当然,如果我们没有配置对应的模块依赖,我们也可以根据idea报错自动添加对应的依赖,但是注意盲目的根据idea的报错任其生成自动生成配置,可能会产生依赖重复注入的问题,总之,配置依赖前先考虑各个模块间的关系。

<br/>

# 交流

如果大家有兴趣,欢迎大家加入我的Java交流群:671017003 ,一起交流学习Java技术。博主目前一直在自学JAVA中,技术有限,如果可以,会尽力给大家提供一些帮助,或是一些学习方法,当然群里的大佬都会积极给新手答疑的。所以,别犹豫,快来加入我们吧!

<br/>

# 联系

If you have some questions after you see this article, you can contact me or you can find some info by clicking these links.

- [Blog@TyCoding's blog](http://www.tycoding.cn)
- [GitHub@TyCoding](https://github.com/TyCoding)
- [ZhiHu@TyCoding](https://www.zhihu.com/people/tomo-83-82/activities)
WRF所需气象数据的下载方法 #数据下载是个大问题,巧妇难为无米之炊,没有数据就无法模拟啦,疫情期间国外服务器响应慢,打开网页慢都很正常啦~ WRF数据所需要的外部数据分为两种:静态地理数据,grib格式的气象数据(NAM、GFS、RUC、AGRMET等)。静态地理数据可以从WRF官网获得,比较简单,这里不做介绍。所以这篇日志重点介绍的是气象数据的获取。 提前说明,WRF官网不提供气象数据,但WRF官网提供各类气象数据的下载网址链接,所以我们下载一般还是从WRF官网开始。首先进入WRF官网,然后点击WRF ARW Uusres’ . 阅读详情

相关推荐

从SPI到JTAG:玩转FT2232H的MPSSE多协议切换指南(附配置代码)

本文详细介绍了如何利用FT2232H芯片的MPSSE技术实现SPI与JTAG协议的无缝切换,提供配置代码和调试技巧。通过解析MPSSE引擎架构和硬件特性,帮助开发者灵活应对多种串行协议需求,提升嵌入式开发效率。特别适合FPGA调试和物联网设备开发场景。

sun99的博客 254

手把手教你使用Springboot整合dubbo,搭建一个微服务

由于dubbo的注册中心用的是zookeeper,所以首先需要。

lianaozhe的博客 8756

BUUCTF reverse题解汇总

BUUCTF平台刷题过程中做的一些逆向题解的总结归类

于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。 1万+

dubbo环境的搭建及详解

一、dubbo架构 高性能的Java RPC框架,dubbo被阿里捐献给了apache。dubbo架构: 节点角色说明 Provider 暴露服务的服务提供方 Consumer 调用远程服务的服务消费方 Registry 服务注册与发现的注册中心 Monitor 统计服务的调用次数和调用时间的监控中心 Container 服务运行容器 调用关系说明 服务容器负责启动,加载,运行服务提供者。 服务提供者在启动时,向注册中心注册自己提供的服务。 服务消费者在启动时,向注册中心订阅自己所需的服务。 注册中

一个喜欢诗和远方的程序媛 2597

Python逻辑回归——以车险定价为例(附代码)

保费定价也成为费率厘定,是保险公司运营的环节之一。其过程是根据保单(被保险人)的损失经验和其他相关信息建立模型,并且对未来的保险成本(赔款、代理人佣金、一般管理费用、理赔费用以及支持该业务所需的资本金成本)进行预测的过程。保险公司实际使用的费率还会受到市场供求关系和公司自身发展战略的影响。汽车保险也称机动车辆保险,失意机动车辆本身及其第三者责任等为保险标的的一种运输工具险,在非寿险井算领域中占有重要地位。

m0_62929945的博客 1984

激光雷达接收芯片选型指南:APD、SiPM、SPAD阵列的优缺点对比

本文深入对比了激光雷达接收芯片APD、SiPM和SPAD阵列的核心技术原理与性能差异。APD作为线性模式工作的稳健选择,动态范围大;SiPM具备单光子探测和高增益优势;而SPAD阵列凭借像素级数字读出和集成TDC,在时间分辨率与系统集成度上领先。文章从灵敏度、时间精度、动态范围及系统成本等多维度剖析,为不同应用场景(如车载雷达、Flash LiDAR、消费电子)的芯片选型提供实战指南。

ik6789012的博客 655

超简单,手把手教你搭建Dubbo工程(内附源码)

今天又是手把手教程的一篇————手把手教你搭建Dubbo项目,边搭建边教,一共两种模式的工程,文中还有工程源码压缩包,也欢迎下载

战斧的博客 7万+

EV1527、PT2262傻傻分不清?一文讲透常见315/433MHz遥控编码协议区别与选型

本文深度对比了EV1527、PT2262和SC5262三种常见的315/433MHz遥控编码协议,详细解析了它们的技术特点、成本效益和适用场景。EV1527作为低成本方案的首选,特别适合智能家居和简易安防设备;PT2262在稳定性和兼容性上表现优异;而SC5262则在安全性方面具有显著优势。文章还提供了实用的选型框架和工程建议,帮助开发者在不同应用场景中做出最优决策。

weixin_33640562的博客 349

本地搭建 Dubbo 开发环境及服务配置全攻略

本文介绍了如何在本地搭建 Dubbo 开发环境,创建和配置 Dubbo 服务,并使用 Zookeeper 或 Nacos 作为注册中心,以及 Spring Cloud Config 作为配置中心。Dubbo 的使用为开发分布式、高并发的微服务应用提供了极大的便利,而 Zookeeper 和 Nacos 等注册中心则帮助实现了服务的动态管理与高可用性。功能使用 Zookeeper使用 Nacos服务注册与发现支持,基于 Zookeeper 的强一致性保障支持,具有更灵活的配置管理和动态服务发现。

一碗黄焖鸡三碗米饭的博客 1892

Python爬虫实战:利用Playwright与反反爬技术抓取Crunchbase企业数据

在当今数据驱动的商业环境中,获取准确的企业信息对于市场分析、竞争情报和投资决策至关重要。Crunchbase作为全球领先的企业信息平台,包含了数百万家公司、投资者和关键人员的详细数据。本文将深入探讨如何使用Python最新爬虫技术Playwright,结合多种反反爬策略,高效抓取Crunchbase企业数据。我们将从爬虫基础概念讲起,逐步深入到高级技巧,并提供完整的代码实现,帮助读者掌握现代网络数据采集的核心技术。网络爬虫技术自互联网诞生以来经历了显著演变。

2201_76125261的博客 1832

【PX4学习笔记】1. ROS及PX4环境搭建

环境 Ubuntu18.04 安装教程参考 https://www.guyuehome.com/8983 安装过程中问题的解决 问题1 rosdep init 错误的终极解决方法 注意etc/下的ros和rostep文件夹要自己建 问题2 Ubuntu安装ROS报错 sudo: rosdep:找不到命令 问题3(更好地解决了问题1、2)【推荐】 解决GitHub的raw.githubusercontent.com无法连接问题 问题4:GeographicLib的安装 教程中安装GeographicLib d

【人工智障 | 计算鸡视觉 | 机器孩】 8230

本地搭建一个简单的dubbo服务(手把手)

(前提是你的电脑已经装过maven,可以使用相关maven的命令) 在 E:/Dubbo/InstallSurround/incubator-dubbo-ops-master/dubbo-admin 目录下,使用maven的命令 mvn package就可打包,最后就在E/:Dubbo/InstallSurround/incubator-dubbo-ops-master/dubbo-admin/target 目录下出现打包好的jar包(dubbo-admin-0.0.1-SNAPSHOT.jar)

u012408145的博客 1831

Python 爬虫实战:就业市场趋势数据抓取与行业洞察

在当今竞争激烈的就业市场中,了解行业趋势和就业形势对于求职者、学生以及人力资源专业人士来说至关重要。通过获取和分析就业市场数据,我们可以深入了解不同行业的招聘需求、薪资水平、技能要求等关键信息,从而为职业规划和人才发展提供有力支持。

yansideyucsdn的博客 1406

大数据开发前置技能__Dubbox快速入门

1.Dubbox简介 1.1什么是SOA架构 SOA是Service-Oriented Architecture的首字母简称,它是一种支持面向服务的架构样式。从服务、基于服务开发和服务的结果来看,面向服务是一种思考方式。其实SOA架构更多应用于互联网项目开发。 为什么互联网项目会采用SOA架构呢?随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,迫切需一个治理系统确保架构有条不紊的演进。 我们看一下开发架构的演进过程。如下图:  单一应用架构

Maynor的博客 772

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

dubbox简单使用

文章目录dubbox的介绍注册中心Zookeeper介绍在Linux系统中安装入门案例服务方创建Maven工程(WAR)dubboxdemo-service ,消费方创建Maven工程(WAR)dubboxdemo-web管理端安装环境准备 dubbox的介绍 Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维...

weixin_43912805的博客 381

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Dubbox快速入门:10分钟搭建你的第一个RPC服务

想要快速上手分布式服务框架吗?Dubbox作为阿里巴巴开源的RPC服务框架,能够帮助你轻松构建高性能的分布式应用。本文将带你用10分钟时间,从零开始搭建第一个Dubbox RPC服务,让你快速掌握这个强大的分布式服务框架的核心用法。🚀 ## 什么是Dubbox? Dubbox是基于Dubbo的扩展版本,主要增加了REST风格的远程调用、Kryo和FST序列化等特性。它提供了完整的服务治理能力

gitblog_01046的博客 794

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

如何快速掌握Dubbox:微服务开发的完整入门指南

Dubbox是一个高性能的分布式服务框架,它为微服务架构提供了完整的解决方案,包括服务注册、发现、负载均衡和配置管理等核心功能。本教程将帮助你快速入门Dubbox,从环境搭建到服务部署,轻松掌握微服务开发的关键技能。 ## 📋 准备工作:环境搭建步骤 在开始使用Dubbox之前,需要确保你的开发环境满足以下要求: - JDK 1.8或更高版本 - Maven 3.0+ - Git 首先,通

gitblog_00595的博客 468

双十一抢购项目实战I一文搞懂Dubbox、SpringBoot、Docket微服务架构

给大家送一个小福利附高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、准备面试跳槽、自身职业规划迷茫的朋友们。片转存中…(img-tuHQWYni-1714640557408)]附高清脑图,高清知识点讲解教程,以及一些面试真题及答案解析。送给需要的提升技术、准备面试跳槽、自身职业规划迷茫的朋友们。[外链图片转存中…(img-xBqLCzcR-1714640557409)]本文已被。

2301_76348206的博客 325

java web微服务架构设计,微服务架构师 架构设计+高并发+微服务架构+Dcoker+Springboot+分布式项目 基于Dubbox...

微服务架构师 架构设计+高并发+微服务架构+Dcoker+Springboot+分布式项目 基于Dubbox这是成为微服务架构师的必修课程或者说是必修内容,因为想要完全掌握微服务架构设计,本课程内涵盖的所有课程都是必修的技术点。课程内容有一定的台阶,不是入门的基础学习课程,如果恰好已经具备了基础的技术课程,那么就可以开始进行微服务架构课程的学习,课程内容包含了架构设计的业务,应用和技术,高并发测试...

weixin_29474859的博客 254

dubbo 编译

最近想研究下公司用的dubbo 结果发现不是想象中的那么简单,已经停止维护好长时间了,哎。。。 这里推荐用dubbox 比较简单 ,也属于dubbo的升级版 这个简单介绍只是方便大家运行了解dubbo以及rest功能 步骤如下: git clone https://github.com/dangdangdotcom/dubbox 在checkout出来的dubb...

weixin_34259559的博客 69

品优购-Day01

学习目标: 目标1:了解电商行业特点以及理解电商的模式 B2B:企业对企业 C2C:个人对个人 B2C:企业对个人 C2B:个人对企业 O2O:线上到线下 F2C:工厂到个人 B2B2C:企业-企业-个人(品优购) 目标2:了解整体品优购的架构基本分三个子系统 网站前台:首页,商家首页,商品详细页,搜索页,会员中心,订单支付 运营商后台:商家审核,品牌管理,规格管理,模版管理,商品分类,商品审...

x_Lever的博客 347

idea下用maven创建并搭建dubbox微服务环境项目(一)

提醒:各位看官,这个项目环境搭建将采用分时完成,因为有很多技术需要学习补充,也是对自己的检验,所以需要持续更新! 前提准备: 1.概述 1.1 传统架构(B/S):传统架构即单体架构。开发中控制器、service等都在一个项目中开发,一起部署在一个服务器上。 1.2 微服务架构(B/S):将控制器、service等分布式开发,隔离部署,通过通信中间件(我们的tomcat、maven、z...

gaofengyan的博客 5273

Dubbox简介与入门实战

前言 什么是Dubbox?Dubbox是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo,被国内电商及互联网项目中使用,后期阿里巴巴停止了Dubbo项目的维护(现Dubbo已捐献给Apache基金会),因为阿里巴巴内部的HSF框架比Dubbo更高效,更贴合他们业务。当当网便在Dubbo基础上进行优化,并继续进行维护,为了与原有的Dubbo区别,故将其命名为Dubbox。 Dubbox作用 d...

Wim的博客 7743

Dubbox 环境搭建

第一章:Dubbox简介 Dubbox是一个开源的RPC(Remote ProcedureCall Protocol)远程调用框架,是由dangdang对阿里的Dubbo的升级,可以被视为Dubbo的增强版,基本架构没有变动,升级spring2.x到spring3.x,支持restful风格的调用调试方式,丰富了序列化的方式,提高了序列化的性能。 Dubbox的Githu...

dianliu5718的博客 145

Dubbox简单入门

dubbox是分布式框架,让我们一起来简单搭建一个小demo Dubbox简介 Dubbox 是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbo ,被国内电商及互联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护,为了与原有的Dubbo区分,故将其命名为Dubbox。 Dubbox 致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbox就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才.

小金的博客 1824
上一篇: Dubbox入门配置
下一篇: HEXO博客项目
TyCoding
博客等级 码龄9年 316粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值