dubbo:dubbo整合nacos实现服务注册中心、配置中心(二)
文章目录
- 0. 引言
- 1. nacos简介及安装
- 2. 注册中心实现
- 3. 配置中心实现
- 4. 源码
- 5. 总结
0. 引言
之前我们讲解的是dubbo+zookeeper体系来实现微服务框架,但相对zookeeper很多企业在使用nacos, 并且nacos和dubbo都是阿里出品,所以具备一些天生的契合性,所以今天我们来讲解dubbo如何整合nacos实现服务注册、配置
首先如果对于dubbo完全没有概念的同学,可以先学习下之前的文章再继续观看本文:
从零理解及搭建dubbo微服务框架(一)
1. nacos简介及安装
之前文章中已经介绍过nacos, 这里不再累述,大家可以参考文章:
springcloud:注册中心、配置中心组件nacos详解
2. 注册中心实现
1、我们先创建两个springboot项目user-server
和order-server
,将作为user-server
作为dubbo服务的提供者,order-server
作为消费者,通过dubbo调用user-server
的接口服务
2、在user-server项目中,引入依赖
<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.1.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.7.RELEASE</version></dependency><!--集成Nacos实现服务注册与发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.2.2.RELEASE</version></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.0.3</version></dependency>
注意这里要单独引入下nacos-client
的依赖,其版本与你安装的nacos版本保持一致,否则会导致各种NoClassDefFoundError
错误,或者你也可以提高spring-cloud-starter-alibaba-nacos-discovery
和spring-cloud-starter-alibaba-nacos-config
对应的版本,让其中包含的nacos-client
接近你安装的版本
3、修改配置文件application.yml
# 应用服务 WEB 访问端口
server:port: 8081spring:application:name: user-server-nacosdubbo:application:name: ${spring.application.name}protocol: # 指定通信规则name: dubbo # 通信协议port: -1 # dubbo协议端口,以供消费者访问,-1即为随机端口registry: # 注册中心id: nacos-registryaddress: nacos://localhost:8848
4、为了让我们的接口能被order-server更好的调用,我们先创建一个server-api模块,用于声明提供者的接口服务:
(1)创建一个maven空项目
(2)创建一个UserService
接口,用于声明user-server提供者接口
(3)在user-server中添加该模块的pom依赖
<dependency><groupId>wu.example</groupId><artifactId>service-api</artifactId><version>${parent.version}</version></dependency>
5、在user-server中创建UserServiceImpl
类,用于书写具体的提供服务,注意该类用@DubboService
注解标注为dubbo服务类,并且声明UserService
@DubboService
public class UserServiceImpl implements UserService {@Overridepublic String getUserById(Integer id){return "nacos用户" + id;}}
6、因为user-server是提供者,所以其启动类上要额外添加@EnableDubbo
注解
7、提供者的操作就处理完成了,我们将其启动,如果发现启动报错,可以根据报错信息具体排查
8、在order-server
项目中,引入依赖,需要注意order-server也引入了service-api
模块
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.3.7.RELEASE</version></dependency><dependency><groupId>wu.example</groupId><artifactId>service-api</artifactId><version>${parent.version}</version></dependency><!-- dubbo client dependencies --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.1.2</version></dependency><!--集成Nacos实现服务注册与发现--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>2.2.2.RELEASE</version></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.0.3</version></dependency>
9、修改order-server配置文件
# 应用服务 WEB 访问端口
server:port: 8082spring:application:name: order-server-nacosdubbo:application:name: ${spring.application.name}protocol: # 指定通信规则name: dubbo # 通信协议port: -1 # dubbo协议端口,以供消费者访问,-1即为随机端口registry: # 注册中心id: nacos-registryaddress: nacos://localhost:8848
9、在order-server中创建OrderController
类,用于模拟调用user-server
,注意引入dubbo提供者服务需要用@DubboReference
注解
@RestController
public class OrderController {@DubboReferenceprivate UserService userService;@GetMapping("createOrder")public String createOrder(Integer id){String userName = userService.getUserById(id);return userName + " createOrder success";}
}
10、启动order-server, 一定要先启动服务提供者user-server,再启动消费者order-server
11、观察nacos管理界面,可以看到user-server和order-server,以及具体的提供者服务UserService即说明启动正常
12、我们调用下orderController的接口,来验证下
如上图,可以看到order-server的服务正常调用到user-server提供的服务了,说明dubbo通信正常,我们的搭建即成功了
3. 配置中心实现
1、在dubbo项目中接入nacos实现配置中心实际上和springcloud是一样的,可参考
springcloud:注册中心、配置中心组件nacos详解
2、这里我们在order-server项目中简单示意下,引入config依赖
<!--集成Nacos实现动态配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId><version>2.2.2.RELEASE</version></dependency>
添加配置文件bootstrap.yaml
,注意不要在application.yml
中添加配置:
spring:cloud:nacos:config:server-addr: localhost:8848# 命名空间ID,默认为public命名空间,省略不写,命名空间ID在nacos-命名空间页面可以看到namespace:username: nacospassword: nacos# 文件名 如果没有配置则默认为服务名,即spring.appliction.nameprefix: order-server-nacos#指定文件后缀,默认propertiesfile-extension: yaml
3、在nacos配置管理中新建对应的配置文件,注意其命名格式为${prefix}-${spring.profile-active}.${file-extension}
4、在接口中直接引用该配置项
@Value("${user.age}")private Integer userAge;@Value("${user.name}")private String userName;@GetMapping("getUser")public String getUser(){return "用户信息为:name="+userName+",age="+userAge;}
5、调用测试,可以看到nacos上的配置项成果拿到了
6、更多关于nacos配置中心的使用,大家可以参考上述列举的文章
4. 源码
文中源码,可在https://gitee.com/wuhanxue/dubbo_wu_demo下载
5. 总结
本章节中我们讲解了dubbo集成nacos实现注册中心、配置中心的操作,后续我们将继续讲解dubbo框架集成网关的多种方案,大家有兴趣可关注专栏
相关文章:
![](https://i-blog.csdnimg.cn/direct/300ebc8d0eb143629bb75e7f63c85e30.png)
dubbo:dubbo整合nacos实现服务注册中心、配置中心(二)
文章目录 0. 引言1. nacos简介及安装2. 注册中心实现3. 配置中心实现4. 源码5. 总结 0. 引言 之前我们讲解的是dubbozookeeper体系来实现微服务框架,但相对zookeeper很多企业在使用nacos, 并且nacos和dubbo都是阿里出品,所以具备一些天生的契合性&#…...
![](https://www.ngui.cc/images/no-images.jpg)
个人博客指路
Pudding 个人博客 比较懒,直接 github page 了,没国内代理加速。 欢迎大佬们,踩一踩 没做留言,觉得很鸡肋。有问题可以在本文底下评论、或者直接邮件...
![](https://i-blog.csdnimg.cn/direct/38702d5bc8b349b39c65fc861fbb2546.png)
【STM32 HAL】多串口printf重定向
【STM32 HAL】多串口printf重定向 前言单串口printf重定向原理实现CubeMX配置Keil5配置 多串口printf重定向 前言 在近期项目中,作者需要 STM32 同时向上位机和手机发送数据,传统的 printf 重定向只能输出到一个串口。本文介绍如何实现 printf 同时输出…...
![](https://img-blog.csdnimg.cn/img_convert/dbd60d15ab53239ab4f2d3c11c52aae6.png)
帆软报表,达梦数据库驱动上传失败
1、按照正常操作新建数据库连接,上传准备好的达梦驱动时,提示如图一需要修改SystemConfig.driverUpload为true才可以。 2、FineDB存储了数据决策系统中除平台属性配置以外的所有信息。详情请参见: FineDB 数据库简介。 3、因此管理员可通过…...
![](https://www.ngui.cc/images/no-images.jpg)
CSS选择器的优先级是如何确定的?有哪些方法可以提高选择器的效率?
CSS选择器的优先级是如何确定的? CSS选择器的优先级决定了当多个选择器同时应用于一个元素时,哪个选择器将最终生效。CSS选择器的优先级由多个因素决定,主要包括以下几个方面: 特殊性(Specificity) 特殊性…...
![](https://www.ngui.cc/images/no-images.jpg)
【MySQL】基础入门(第二篇)
1.MySQL基本数据类型 数值类型 MySQL 支持所有标准 SQL 数值数据类型。 这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。 关键字INT是INTEGER的同义词,关键字DEC是D…...
![](https://i-blog.csdnimg.cn/direct/ec33eaf8a0b248fc9cea77835cf9f344.jpeg)
勇闯机器学习(第二关-数据集使用)
以下内容,皆为原创,重在无私分享高质量知识,制作实属不易,请点点关注。 好戏开场了~~~(这关涉及到了加载数据集的代码,下一关,教你们安装机器学习库) 一.数据集 这一关的目标 知道数据集被分为训练集和测…...
![](https://i-blog.csdnimg.cn/direct/1ec3df83882747a0a450865c8f7665f8.jpeg#pic_center)
数据库学习(进阶)
数据库学习(进阶) Mysql结构:连接层:服务层(核心层):存储引擎层:系统文件层: 存储引擎(概述):存储引擎特点:InnoDB存储引擎:(为并发条…...
![](https://www.ngui.cc/images/no-images.jpg)
redis的数据结构——跳表(Skiplist)
跳表(Skiplist)是一种用于有序数据存储的高效数据结构,它在Redis中用于实现有序集合(Sorted Set,zset)的底层存储。当有序集合中的数据较多时,Redis会选择使用跳表来存储元素,以便在保持数据有序的同时提供高效的插入、删除、查找操作。 跳表的基本结构 跳表是一种多…...
![](https://www.ngui.cc/images/no-images.jpg)
Docker服务迁移
1 备份当前服务器上的 Docker 数据 1.1 停止 Docker 服务 为了确保数据一致性,在备份之前先停止 Docker 服务: sudo systemctl stop docker1.2 备份 Docker 数据 Docker 的数据通常位于 /var/lib/docker 目录。你可以使用 tar 命令将该目录压缩成一个…...
![](https://i-blog.csdnimg.cn/direct/1fd013dd677b41cda4a03df81c7de58b.jpeg)
机器学习:逻辑回归实现下采样和过采样
1、概述 逻辑回归本身是一种分类算法,它并不涉及下采样或过采样操作。然而,在处理不平衡数据集时,这些技术经常被用来改善模型的性能。下采样和过采样是两种常用的处理不平衡数据集的方法。 2、下采样 1、概念 下采样是通过减少数量较多的类…...
![](https://i-blog.csdnimg.cn/direct/6030a516e40f437b9ef057ff1bd7cdfc.png)
React原理之Fiber双缓冲
前置文章: React原理之 React 整体架构解读React原理之整体渲染流程React原理之Fiber详解 -----读懂这一篇需要对 React 整体架构和渲染流程有大致的概念 😊----- 在前面的文章中,简单介绍了 Fiber 架构,也了解了 Fiber 节点的…...
![](https://www.ngui.cc/images/no-images.jpg)
机器学习笔记三-检测异常值
检测异常值是数据预处理中非常重要的一步,因为异常值可能会影响模型的训练效果,甚至导致错误的结论。以下是几种常见的检测异常值的方法: 1. 箱线图(Box Plot): 箱线图是一种简单的统计图形,可…...
![](https://www.ngui.cc/images/no-images.jpg)
如何评估Redis的性能
导语 Redis是一款高性能的内存数据库,被广泛用于缓存、持久化、消息队列等各种场景。为了确保Redis的高性能运行,评估Redis的性能是非常重要的。本文将介绍如何评估Redis的性能,并从问题解决的角度探讨如何优化Redis的性能。 1. 性能评估指…...
![](https://i-blog.csdnimg.cn/direct/06a65db9bc6e4dc5a888dcda99cda190.png)
RabbitMQ发布订阅模式Publish/Subscribe详解
订阅模式Publish/Subscribe 基于API的方式1.使用AmqpAdmin定制消息发送组件2.消息发送者发送消息3.消息消费者接收消息 基于配置类的方式基于注解的方式总结 SpringBoot整合RabbitMQ中间件实现消息服务,主要围绕3个部分的工作进行展开:定制中间件、消息发…...
![](https://www.ngui.cc/images/no-images.jpg)
Android8.1源码下对APK进行系统签名
在Android8.1上面对APK进行Android系统源码环境下的签名,发现签名时出现如下错误: Exception in thread "main" java.lang.ExceptionInInitializerError at org.conscrypt.OpenSSLBIOInputStream.(OpenSSLBIOInputStream. at org.conscrypt.OpenSSLX509Certificat…...
![](https://www.ngui.cc/images/no-images.jpg)
2024年城市客运安全员考试题库及答案
一、单选题 376.根据《机动车运行安全技术条件》(GB7258---2017),每个应急出口应在其附近设有"应急出口"字样,字体高度应大于或等于()mm。 A.20 B.30 C.40 D.50 答案:C 377.根…...
![](https://i-blog.csdnimg.cn/direct/ade168f886de4e7eb41d58ec5fcd1b31.png)
全网最全面的Nginx内容(理论与实践相结合)
一、Web服务 1.1 web服务访问流程 1.2 Web服务 1.2.1 Web服务器分类 Web服务分为Apache和Nginx 1.2.2 Apache经典的Web服务器 1.2.2.1 Apache介绍 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以…...
![](https://www.ngui.cc/images/no-images.jpg)
(七)Flink Watermark
Flink 的 Watermark 是用来标识数据流中的一个时间点。Watermark 的设计是为了解决乱序数据处理的问题,尤其是涉及到多个分区的 Kafka 消费者时。在 Watermark 的作用下,即使某些数据出现了延迟到达的情况,也不会导致整个处理流程的中断。此外,Watermark 还能防止过期的数据…...
![](https://www.ngui.cc/images/no-images.jpg)
springboot 上传文件失败:The temporary upload location
Caused by: java.io.IOException: The temporary upload location [/tmp/tomcat.379776875189163783.8081/work/Tomcat/localhost/jcys-core] is not valid 原因: Linux下会自动清除tmp目录下10天没有使用过的文件,SpringBoot启动的时候会在/tmp目录下生…...
![](https://i-blog.csdnimg.cn/direct/02da319aac394ee6895e40f3d5a2f085.png)
UNiapp之微信小程序导出Excel
效果如下 参考小程序:日常记一记 ---账单页面 主要功能是根据筛选条件导出账单明细列表,实现该功能主要借助一个工具(excel.js),可在文章顶部下载或者一下网盘下载 https://pan.baidu.com/s/1RLisuG4_7FGD0Cnwewyabg?pwdpd2a 提取码: pd2a…...
![](https://www.ngui.cc/images/no-images.jpg)
fsadsadsad
adsadsafsada...
![](https://i-blog.csdnimg.cn/direct/16ff564a63964d0daef603bd6a248a92.png)
高效录制新选择:2024年Windows录屏软件
录屏能帮助我们捕捉屏幕上的精彩瞬间,作为老师可以用来录制课程,作为会议记录员可以用来录制远程会议。那么有什么软件是适合windows录屏的呢?这次我们一起来探讨一下吧。 1.福昕录屏大师 链接:www.foxitsoftware.cn/REC/ 这款软…...
![](https://www.ngui.cc/images/no-images.jpg)
Java技术面试(一面)
1、相面对象 1、面相对象语言/Java三大特性是什么? 引出 封装、继承和多态。 2、多态有哪些形式?多态使用过吗? 重载、重写,接口和抽象类的多个实现。考察工作经验、代码重构经验、习惯。 3、Java接口和抽象类有什么区别?你是如何选择使用的? 考察OOP的理解和工作…...
![](https://www.ngui.cc/images/no-images.jpg)
docker修改数据目录
新建docker数据目录 mkdir /data/docker-data停止docker服务 systemctl stop docker把docker数据迁移到新目录 cp -r /var/lib/docker/* /data/docker-data/修改docker配置 vi /etc/docker/daemon.json #添加data-root参数 {"data-root":"/data/docker-dat...
![](https://www.ngui.cc/images/no-images.jpg)
Appium学习
一、基础配置 import unittest from appium import webdriver from appium.options.android import UiAutomator2Options from appium.webdriver.common.appiumby import AppiumBy from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support …...
![](https://img-blog.csdnimg.cn/img_convert/6afa128dc174faa15172370f5484b508.jpeg)
回顾 | 瑞云科技亮相ICIC2024,虚拟仿真实训云平台引关注
2024年8月7日,天津市虚拟仿真学会主办的第二十届智能计算国际会议(ICIC2024)——虚拟仿真技术交流平行会议暨天津市虚拟仿真学会2024年暑期技术交流会在天津盛大召开。本次大会汇聚来自全国的顶尖专家、学者和行业领袖,共同探讨虚…...
![](https://i-blog.csdnimg.cn/direct/c66c00ebd89f4e08af86d8338edbcfaa.png)
libLZMA库iOS18平台编译
1.下载xz源码: 使用autogen.sh生成configure文件 2.生成makefile rm -rf ./build/iOS && mkdir -p ./build/iOS && cd ./build/iOS && ../../configure --host=arm-apple-darwin64 --prefix=`pwd`/Frameworks/lzma CC="xcrun -sdk iphoneos cl…...
![](https://www.ngui.cc/images/no-images.jpg)
《AI办公类工具PPT系列之二——iSlide AI》
一.简介 官网:iSlide- 让PPT设计简单起来 | PPT模板下载平台 iSlide AI是一款基于人工智能技术的PPT制作工具,它可以帮助用户快速高效地创建演示文稿 二.功能介绍 1. AI一键生成PPT 文档导入与解析:用户可以直接上传本地文档(如Word、Markdown、思维导图等),iSlide A…...
![](https://i-blog.csdnimg.cn/direct/507ace58965143bbb936d439dbddfabb.png)
C语言基础(六)
一维数组: C语言中的数组是一种基本的数据结构,用于在计算机内存中连续存储相同类型的数据。 数组中的每个元素可以通过索引(或下标)来访问,索引通常是从0开始的。 数组的大小在声明时确定,并且之后不能改…...
![](http://acm.hdu.edu.cn/data/images/C21-1005-1.gif)
做英剧网站的设计思路/百度问一问免费咨询
漂亮面料的设计 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 549 Accepted Submission(s): 206 Problem Description现在的CAD技术已经能够很方便地设计出漂亮的面料,如图(b&#x…...
![](/images/no-images.jpg)
自己怎么做网站链接/搜索引擎有哪些分类
目录 1、协程概念 2、使用goroutine 1、协程概念 协程其实可以认为是比线程更小的执行单元。为啥说他是一个执行单元,因为他自带CPU上下文。这样只要在合适的时机,我们可以把一个协程 切换到 另一个协程。只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。 协程…...
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
网站制作商业模式/sem代运营费用
题目大意:有N个点,M条路,如果两条路不连通的话,就将这两条路的距离设置为L 现在要求你求出每两点之间的最短距离和 接着要求 求出炸断 给出的M条路中的一条路后,每两点之间的最短距离和的最大值(翻译来自…...
![](https://yqfile.alicdn.com/7054172ef3f0bd4819c899ce6a698f889e575c3a.png)
wordpress 文本编辑插件/网盘资源大全
在最近的一份报告中,Canonical 的 Will Cooke 透露,Ubuntu Desktop 团队正在考虑在即将推出的 Ubuntu 17.10 版本中以 GDM(GNOME显示管理器)取代 LightDM 登录管理器。本周早些时候已经有传闻表示 Ubuntu 17.10 将采用 GNOME GDM …...
![](https://img-blog.csdnimg.cn/img_convert/f3db85d9bb8ba3bfdc8b7cbe51d3016d.png)
前端做的比较好的网站/兰州网络推广的平台
发动机变速箱底盘,构成了传统汽车的三大件。电动化将“发动机变速箱”变成了三电系统(电池、电机、电控),而底盘系统仍旧包含了悬架、制动、转向等传统的几大子系统,影响着整车的舒适性、安全性与操控性。 近年来&…...
![](https://img-blog.csdnimg.cn/7538165d2acb4641818ba073c2b77608.png)
当阳网站建设/软件开发培训机构
文章目录前言创建项目并添加依赖编写代码并测试总结前言 在日常 Java 开发中,一般都需要进行单元测试,而 Mock 测试则是单元测试中的重要方法之一。所谓 Mock 测试,就是指在测试过程中,对于一些不容易构造或难以获取的较为复杂的…...