dubbo 服务拆分和调用

news2024/11/24 18:37:56

序言:dubbo 是阿里巴巴开发的一款开源的java rpc 框架,也就是远程调用框架。本文将说明dubbo服务拆分的实现思路。

本文是基于黑马探花交友前置课程dubbo做出的笔记记录。
完整视频和资料
通过百度网盘分享的文件:黑马

链接:https://pan.baidu.com/s/1zDHmtJi53q49Hsz3kBfjuA?pwd=1234
提取码:1234
复制这段内容打开「百度网盘APP 即可获取」

案例采用的注册中心是nacos,服务提供者用于向注册中心注册自己提供的服务,消费者用户向注册中心订阅服务。,都需要注册到nacos上面。然后通过dubbo中的admin进行监控。
在这里插入图片描述
首先需要将nacos和dubbo-admin启动起来,然后再进行将传统架构的springboot后端三层架构包模式进行拆分。

首先nacos,我们需要进入nacos 配置文件的bin目录
在这里插入图片描述
然后在终端中打开该目录,进行命令启动。
因为我们是单机,所以这样启动就好了

startup.cmd -m standalone

在这里插入图片描述
这样就启动好了
在这里插入图片描述
访问路径 http://127.0.0.1:8848/nacos 这样就打开了。现在还没有服务注册,所以没有任何服务列表。
在这里插入图片描述

下面需要去启动dubbo-admin,用于监控服务和后面的服务拆分和调用

#1、下载代码:
git clone https://github.com/apache/dubbo-admin.git
#2、在 dubbo-admin-server/src/main/resources/application.properties中指定注册中心地址
#3、构建
mvn clean package -D maven.test.skip=true
#4、启动
mvn --projects dubbo-admin-server spring-boot:run
#或者
cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.1.jar
#5、访问 http://localhost:8080

第二个步骤是需要配置nacos注册中心的地址的,因为我们的dubbo-admin需要去监控注册中心的服务,所以需要有这个配置。下面就是启动dubbo-admin。
在该位置打开终端然后执行上面的命令。第一步是下载用的,下载好了不用执行。

在这里插入图片描述在构建的过程中可能出现问题。
在这里插入图片描述
但是看这个报错,没有什么影响,我的dubbo-admin构建好了。然后启动
在这里插入图片描述
浏览器输入路径访问,这样也启动好了,这个默认的登录账号密码都是root

在这里插入图片描述
下面进行服务拆分
看案例代码,我们主要是对该目录结构进行拆分。拆分为服务提供者和服务消费者。还有就是我们需要抽取公共部分的代码单独放在一个模块里面。
在这里插入图片描述
那么需要考虑的是服务提供者是那个部分呢?其实就是负责业务的。我们把mapper和service作为提供者部分,然后消费就是controller部分。主要就是这样。
每一个模块都需要去单独配置一下yml 和maven。maven中的依赖一些需要重复使用的我们可以放在父模块中,作为公共依赖,然后在子模块中引入。

这里设计到的就是一个maven的知识, dependencyManagement 和 dependencies。

Dependencies相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
dependencyManagement里只是声明依赖,并不自动实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

我们的服务提供者拆分了原来的impl和mapper,注意service接口我们将会做成公共api模块
在这里插入图片描述
然后就是yml 配置

server:
  port: 18081
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/dubbo-demo?useSSL=false
    username: root
    password: admin123
    driver-class-name: com.mysql.jdbc.Driver
#    应用名称
  application:
    name: user-provider
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: HH:mm:ss:SSS
#配置dubbo提供者
#dubbo协议和访问端口
dubbo:
  protocol:
    name: dubbo
    port: 20881
#配置注册中心地址
  registry:
    address: nacos://127.0.0.1:8848
  scan:
    base-packages: cn.itcast.user.service

我们需要在实现类上对外暴露dubbo服务,在上面的yml中我们需要去配置扫描scan,也就是需要扫描到这个注解。所以我们只需要配置一下这个包路径让它扫描到。服务提供者需要注册nacos,所以需要配置注册中心的地址。然后上面还配置了dubbo的协议和端口。我们的服务提供者启动后访问端口就是我们的yml配置的server port,那么这里配置dubbo端口是干什么。其实这里dubbo-admin要监控的话其实也是一个服务。tomcat是作为外层的容器的,内部又运行了一个netty服务器。
在这里插入图片描述
然后就是消费者模块了。其实抽取出来一个controller。
在这里插入图片描述
我们这里需要调用service,这里是生产者的接口。dubboreference注解标注调用的生产者接口。在这里插入图片描述
在消费者的yml这里呢,我们只要去写上dubbo注册中心的地址就可以了。

server:
  port: 18080
spring:
  application:
    name: user-consumer
logging:
  level:
    cn.itcast: debug
  pattern:
    dateformat: HH:mm:ss:SSS
dubbo:
  registry:
    address: nacos://127.0.0.1:8848

没有接口service和实体类是会报错的,但是我们都把它们抽取到一个单独的模块里面了。
在这里插入图片描述

然后呢,我们在提供者和消费者pom中引入该模块就可以了。
在这里插入图片描述
将提供者和消费者的服务都启动起来。可以在dubbo-admin和nacos去查看服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在注册中心我们也可以去查看
在这里插入图片描述
测试服务远程调用。没有问题。
在这里插入图片描述
案例拆分后的代码完整见github
dubbo服务拆分

有疑问欢迎联系我

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

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

相关文章

win10家庭版找不到组策略gpedit.msc的解决方法

废话不多说, 直接上方法;注意的事项我会再后面讲到。 1、打开记事本 在记事本中保存如下批处理内容 echo offpushd "%~dp0"dir /b %systemroot%\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mu…

损坏的二进制文件会导致“程序太大而无法放入内存”

不知道你是否做过这样的小实验:将一个可执行文件的头部写入一些无效的数据,或者将一个根本不是可执行文件的大型文件的扩展名改为”.exe”,然后执行它(警告,请记得先保存好工作文件)。 文件不会如预期般那样执行,你会…

【Python 随练】不相同的三位数字

题目: 有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?在控制台输出出来。 简介: 在本篇博客中,我们将使用Python代码解决一个数学问题:如何使用数字1、2、3和4组合成互不相同且无重复…

Vue 常用指令

指令介绍 指令 : 带有 v- 前缀的特殊属性。 指令的作用 : 当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM 。 在整个vue的编写过程当中,只要带v-的,那么都是常用的vue的指令。 v-text v-text作用与双大花括号作用…

【已解决】“X-Content-Type-Options”头缺失或不安全

Appscan是一款安全漏洞扫描软件,由IBM公司研发,后又被卖给了印度公司HCL。 在web安全测试中,今天我们说下扫描结果中包含X-Content-Type-Options请求头header的缺失或不安全的时候,我们该如何应对。 风险:可能会收集…

华为OD机试真题 JavaScript 实现【猴子爬山】【2023 B卷 100分】,附详细解题思路

一、题目描述 一天一只顽猴想去从山脚爬到山顶,途中经过一个有个N个台阶的阶梯,但是这猴子有一个习惯: 每一次只能跳1步或跳3步,试问猴子通过这个阶梯有多少种不同的跳跃方式? 二、输入描述 输入只有一个整数N&…

使用Linux系统命令对后门端口进行查杀

第一步,打开网络拓扑,启动实验虚拟机,查看虚拟机IP地址: Centos Linux 第二步,进入靶机服务器CentOS Linux,调用实验环境。使用docker images命令查看靶机服务器上的Docker镜像环境,找到本次实…

《水经注地图服务》横向扩展部署说明

在地图服务器中,随着数据量的不断增大,可能会存在原有的存储设备空间不够的情况,或无法承受高并发请求的情况。 此时,我们就可以通过横向扩展部署,增加新的设备来进行分担缓减,从而达到动态扩展存储设备以…

华为流程体系:IPD流程框架(限制版)

目录 前言 详细内容 专栏列表 CSDN学院课程地址 前言 今天主要来谈谈 IPD 体系的主体框架所涉及的一些相关内容。 其实关于 IPD 体系,我在之前的文章或课程中都有过不同程度的讲解。 但是,由于这个体系所涉及的面是非常广泛的。 这个时候就必须通…

加固你的数据防线:避免成为SQL注入攻击的下一个目标

SQL注入是一种常见的Web应用程序安全漏洞,攻击者利用该漏洞通过构造恶意的SQL查询语句,以执行未经授权的操作或获取敏感数据。本文将介绍SQL注入的概念、攻击原理以及常见的防范方案,帮助开发人员和系统管理员加强对Web应用程序的安全性。 1、…

深入理解迭代器,笛卡尔积,from itertools import product 小白一看就会

文章目录 一、product()是什么?二、product()的具体使用案例代码详细分析 总结 一、product()是什么? 在Python中,product()是内置函数itertools提供的一个工具函数,可以计算多个可迭代对象的笛卡尔积。product()接受一个或多个可…

7、微服务组件gateway

1、引入gateway 在原来的项目中添加gateway模块 gateway是springcloud中的组件&#xff0c;所以要确保父项目的pom.xml中引入了springcloud 那么在gateway模块的pom.xml中引入gateway&#xff0c;如下&#xff1a; <?xml version"1.0" encoding"UTF-8&quo…

Jmeter集成到jenkins

Jmeter集成到Jenkins 序号 修改人 版本 创建日期 修改日期 备注 1 进击的雷神 V1.0 Jmeter集成到Jenkins. 1 软件下载... 4 一:环境配置... 4 1.JDK安装&#xff…

ADC动态指标

量化误差ADC输出-ADC模拟输入 量化噪声功率&#xff1a; 信噪比&#xff1a; 由于仅仅考虑了量化噪声&#xff0c;上式为ADC的SNDR所能达到的极限值 N8,SNDR_max50dB N12,SNDR_max74dB N16,SNDR_max98dB N20,SNDR_max122dB 实际ADC还需要考虑期间噪声和电路非理想特性&am…

Python10行以内代码能有什么高端操作

Python10行以内代码能有什么高端操作 Python凭借其简洁的代码&#xff0c;赢得了许多开发者的喜爱。因此也就促使了更多开发者用Python开发新的模块&#xff0c;从而形成良性循环&#xff0c;Python可以凭借更加简短的代码实现许多有趣的操作。下面我们来看看&#xff0c;我们…

关于组织申报国家重点研发计划“高性能制造技术与重大装备”等重点专项2023年度项目的通知

源自&#xff1a;上海市科学技术委员会 各有关单位&#xff1a; 根据《科技部关于发布国家重点研发计划“高性能制造技术与重大装备”等6个重点专项2023年度项目申报指南的通知》&#xff08;国科发资〔2023〕90号&#xff09;《科技部关于发布国家重点研发计划“文化科技与现…

Linux---端口(nmap、netstat)、进程管理(ps、kill)

1. 端口 端口&#xff0c;是设备与外界通讯交流的出入口。端口可以分为&#xff1a;物理端口和虚拟端口两类。 物理端口&#xff1a;又可称之为接口&#xff0c;是可见的端口&#xff0c;如USB接口&#xff0c;RJ45网口&#xff0c;HDMI端口等。 虚拟端口&#xff1a;是指计…

制定测试计划和测试用例

制定测试计划和测试用例 测试是软件开发过程中很重要的一环&#xff0c;通过测试可以发现和修复软件中的缺陷或错误&#xff0c;保证软件的质量和可靠性。在进行软件测试时&#xff0c;制定合理的测试计划和测试用例是非常必要的&#xff0c;下面我将从这两个方面分别进行讲解。…

第10篇:强化学习Q-learning求解迷宫问题 代码实现

你好&#xff0c;我是郭震&#xff08;zhenguo&#xff09; 今天重新发布强化学习第10篇&#xff1a;强化学习Q-learning求解迷宫问题 代码实现 我想对此篇做一些更加详细的解释。 1 创建地图 创建迷宫地图&#xff0c;包括墙网格&#xff0c;走到墙网格就是负奖励。 注意&…

使用JRS303校验对参数进行提前校验

文章目录 前言JRS303简单使用版本JRS303提供的常用校验注解 JRS303进阶使用版本情景一&#xff1a;对于一个主键id字段我想要新增的时候不校验 但是更新的时候进行校验情景二&#xff1a; 在实际项目中 我们有一些字段只能填入规定的几个值 类似于枚举 那么就需要我们编写自定义…