要搭建网站,镇江网站建设优化排名,沈阳网站优化排名,河北住房建设厅官方网站文章目录 0. 引言1. nacos简介及安装2. 注册中心实现3. 配置中心实现4. 源码5. 总结 0. 引言
之前我们讲解的是dubbozookeeper体系来实现微服务框架#xff0c;但相对zookeeper很多企业在使用nacos, 并且nacos和dubbo都是阿里出品#xff0c;所以具备一些天生的契合性#… 文章目录 0. 引言1. nacos简介及安装2. 注册中心实现3. 配置中心实现4. 源码5. 总结 0. 引言
之前我们讲解的是dubbozookeeper体系来实现微服务框架但相对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项目中引入依赖 dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactIdversion3.1.2/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion2.3.7.RELEASE/version/dependency!--集成Nacos实现服务注册与发现--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdversion2.2.2.RELEASE/version/dependencydependencygroupIdcom.alibaba.nacos/groupIdartifactIdnacos-client/artifactIdversion2.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:88484、为了让我们的接口能被order-server更好的调用我们先创建一个server-api模块用于声明提供者的接口服务 1创建一个maven空项目 2创建一个UserService接口用于声明user-server提供者接口 3在user-server中添加该模块的pom依赖 dependencygroupIdwu.example/groupIdartifactIdservice-api/artifactIdversion${parent.version}/version/dependency5、在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模块
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion2.3.7.RELEASE/version/dependencydependencygroupIdwu.example/groupIdartifactIdservice-api/artifactIdversion${parent.version}/version/dependency!-- dubbo client dependencies --dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactIdversion3.1.2/version/dependency!--集成Nacos实现服务注册与发现--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactIdversion2.2.2.RELEASE/version/dependencydependencygroupIdcom.alibaba.nacos/groupIdartifactIdnacos-client/artifactIdversion2.0.3/version/dependency9、修改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:88489、在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实现动态配置管理--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactIdversion2.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: yaml3、在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 用户信息为nameuserName,ageuserAge;}5、调用测试可以看到nacos上的配置项成果拿到了 6、更多关于nacos配置中心的使用大家可以参考上述列举的文章
4. 源码
文中源码可在https://gitee.com/wuhanxue/dubbo_wu_demo下载
5. 总结
本章节中我们讲解了dubbo集成nacos实现注册中心、配置中心的操作后续我们将继续讲解dubbo框架集成网关的多种方案大家有兴趣可关注专栏