深圳专门做兼职的网站,一个完整的网站推广方案,苏州网站的建设,学生个人网站建设方案书框架栏目#x1f3f7;️个人主页#xff1a;鼠鼠我捏#xff0c;要死了捏的主页 #x1f3f7;️系列专栏#xff1a;Golang全栈-专栏 #x1f3f7;️个人学习笔记#xff0c;若有缺误#xff0c;欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站#xff0c;通俗易懂️个人主页鼠鼠我捏要死了捏的主页 ️系列专栏Golang全栈-专栏 ️个人学习笔记若有缺误欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站通俗易懂风趣幽默忍不住分享一下给大家。点击跳转到网站AI学习网站。 目录
前言
快速上手
创建示例项目
导入依赖
编写配置
添加启动类注解
编写服务接口与服务实现类
引入common项目
新建common项目
总结 前言
随着互联网技术的飞速发展越来越多的企业和开发者开始关注微服务架构。微服务架构可以将一个大型的应用拆分成多个独立、可扩展、可维护的小型服务每个服务负责实现应用的一部分功能。这种架构方式可以提高开发效率降低系统复杂度方便团队协作同时也有利于资源的合理利用和弹性伸缩。
在微服务架构中服务之间的通信是一个关键问题。传统的HTTP通信方式在高并发、高性能的场景下存在性能瓶颈因此越来越多的开发者开始采用RPC远程过程调用技术来实现服务之间的通信。Dubbo是一款高性能、轻量级的开源Java RPC框架它提供了丰富的服务治理功能如服务注册、服务发现、负载均衡、容错等被广泛应用于微服务架构中。
Nacos是阿里巴巴开源的一个动态服务发现、配置管理和服务管理平台它支持基于DNS和基于RPC的服务发现具有跨语言、跨平台、灵活扩展的特点。网上很多都是Springcloud整合Dubbo本文讲解如何将Spring Boot与Dubbo和Nacos整合实现RPC调用。
快速上手
在实现DubboRPC服务调用时我们首先需要一个服务注册中心常用的服务注册中心有ZookeeperNacos等我们这里采用Nacos没有部署Nacos的请先自行教程部署这里不细讲
创建示例项目
我们这里创建两个名为ProviderDemo和ConsumerDemo的项目 导入依赖
整合nacos和dubbo主要需要nacos-client和dubbo这两项依赖 !--这里对应的Springboot版本为2.7.6--dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo/artifactIdversion3.0.9/version/dependencydependencygroupIdcom.alibaba.nacos/groupIdartifactIdnacos-client/artifactIdversion2.1.0/version/dependency
ProviderDemo的maven配置信息如下
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.luckysj/groupIdartifactIdProviderDemo/artifactIdversion0.0.1-SNAPSHOT/versionnameProviderDemo/namedescriptionProviderDemo/descriptionpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version2.7.6/spring-boot.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo/artifactIdversion3.0.9/version/dependencydependencygroupIdcom.alibaba.nacos/groupIdartifactIdnacos-client/artifactIdversion2.1.0/version/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement/project
ConsumerDemo的配置信息如下
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdcom.luckysj/groupIdartifactIdConsumerDemo/artifactIdversion0.0.1-SNAPSHOT/versionnameConsumerDemo/namedescriptionConsumerDemo/descriptionpropertiesjava.version1.8/java.versionproject.build.sourceEncodingUTF-8/project.build.sourceEncodingproject.reporting.outputEncodingUTF-8/project.reporting.outputEncodingspring-boot.version2.7.6/spring-boot.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo/artifactIdversion3.0.9/version/dependencydependencygroupIdcom.alibaba.nacos/groupIdartifactIdnacos-client/artifactIdversion2.1.0/version/dependency/dependenciesdependencyManagementdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion${spring-boot.version}/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement/project编写配置
consumerDemo项目的配置如下注意把nacos信息更改为自己的
server:port: 7777dubbo:application:#设置应用的名称name: dubbo-springboot-consumer#qos监控服务是否启动qos-enable: true#qos监控服务端口qos-port: 23456qos-accept-foreign-ip: false#指定使用Dubbo协议且端口设置为-1表示随机分配可用端口protocol:name: dubboport: -1registry:#配置注册中心为Nacosid: nacos-registryaddress: nacos://nacos服务的ip:nacos服务的端口username: nacos账户password: nacos密码parameters:namespace: f74484c1-02d8-4322-a50c-630bc814fe54 #nacos命名空间group: dubbo-demo #nacos分组config-center:timeout: 40000 #设置服务超时时间 providerDemo项目的配置如下
server:port: 6666
dubbo:application:#设置应用的名称name: dubbo-springboot-providerqos-enable: trueqos-port: 23444qos-accept-foreign-ip: false#指定使用Dubbo协议且端口设置为-1表示随机分配可用端口protocol:name: dubboport: -1registry:#配置注册中心为Nacosid: nacos-registryaddress: nacos://ip:端口username: 账户password: 密码parameters:namespace: f74484c1-02d8-4322-a50c-630bc814fe54 #nacos命名空间group: dubbo-demo #nacos分组config-center:timeout: 40000 #设置服务超时时间
添加启动类注解
我们要使用Dubbo服务的话需要在服务启动类上编写EnableDubbo注解提供者项目和消费者项目都需要 编写服务接口与服务实现类
我们在Provider项目中provider包下新建服务接口与实现类 PrintService接口内容如下
public interface PrintService {public void print(String str);
}
PrintServiceImpl接口内容如下我们通过DubboService注解暴露该服务
DubboService
public class PrintServiceImpl implements PrintService {Overridepublic void print(String str) {System.out.println(dubbo调用打印信息为 str);}
} 在服务消费方项目中也定义相同的接口 public interface PrintService {public void print(String str);
} 特别注意这里调用者与提供者的服务接口需要有相同的包路径否则无法找到对应服务我们后续通过引入一个common项目来解决这个问题 在服务消费方项目编写一个测试接口使用DubboReference注解声明引用的服务
RestController
RequestMapping(/demo)
public class DemoController {DubboReference //声明服务引用private PrintService printService;GetMapping(/test)public void testDubbo(String str){System.out.println(consumer开始RPC调用provider服务);printService.print(str);}
}
访问接口测试两项目之间的服务调用可以看到我们ConsumerDemo项目通过Dubbo成功的调用了ProviderDemo项目
http://localhost:7777/demo/test?str111 引入common项目
我们上面可以发现提供者和消费者的服务接口必须在相同的包路径下十分的不优雅故我们可以新建一个common项目在这个项目中定义双方服务调用的接口相当于定义了一种规范两边都采用common中的服务接口这样就不会因为包路径不同导致dubbo找不到对应服务
新建common项目 打包该项目到本地云仓库中在消费者和提供者项目中引入该项目 双方都使用common包内的服务接口 测试接口运行正常结束 总结
Dubbo是一个基于Java的RPC (远程过程调用)框架比OpenFeign支持更多的通讯协议且性能更高更加适应于大规模的分布式项目中。