门户网站建设情况简介,网址大全汽车之家,linux系统中wordpress,html业务网站源码目录1、dubbo简介2、dubbo解决了什么问题3、环境准备4、项目搭建5、总结springboot整合feign可参考我另外一篇文章SpringBoot集成Feign
1、dubbo简介
Apache Dubbo 最初在 2008 年由 Alibaba 捐献开源#xff0c;很快成为了国内开源服务框架选型的事实标准框架 #xff0c;…
目录1、dubbo简介2、dubbo解决了什么问题3、环境准备4、项目搭建5、总结springboot整合feign可参考我另外一篇文章SpringBoot集成Feign
1、dubbo简介
Apache Dubbo 最初在 2008 年由 Alibaba 捐献开源很快成为了国内开源服务框架选型的事实标准框架 得到了各行各业的广泛应用。在 2017 年Dubbo 正式捐献到 Apache 软件基金会并成为 Apache 顶级项目目前 Dubbo3 已经是一站式的微服务解决方案。可以看到自 SpringCloud Alibaba 2021.0.1.0 起Dubbo已被移除SpringCloud Alibaba 。目前基本都是使用org.apache.dubbo而com.alibaba.dubbo已被弃用。
2、dubbo解决了什么问题
分类dubbo的特性高性能RPC调用(主)提供高性能的基于代理的远程调用能力服务以接口为粒度为开发者屏蔽远程调用底层细节服务自动注册与发现支持多种注册中心服务服务实例上下线实时感知运行期流量调度内置条件、脚本等路由策略通过配置不同的路由规则轻松实现灰度发布、同机房优先等功能智能负载均衡内置多种负载均衡策略智能感知下游节点健康状况显著减少调用延迟提高系统吞吐量高度可扩展能力遵循微内核插件的设计思想所有核心能力如Protocol、Transport、Serialization被设计为扩展点平等对待内置实现和第三方实现可视化的服务治理与运维提供丰富服务治理、运维工具随时查询服务元数据、服务监控状态以及调用统计实时下发路由策略调整配置参数
3、环境准备
系统windows JDK1.8 Maven3.8.1 Nacos2.2.0 (下载和使用介绍【Nacos】SpringBoot集成Nacos)
项目下载模板地址https://github.com/shengwanping/SpringBoot-dubbo-demo.git
4、项目搭建
1、首先创建一个基于Maven的工程
2、然后创建三个子项目springboot-dubbo-provider、springboot-dubbo-interface、springboot-dubbo-consumer如下 3、每个子项目分别创建如下三个目录org.dubbo.consumer; org.dubbo; org.dubbo.provider
4、父项目中添加Maven依赖
!--dependencyManagement 依赖管理子项目不会继承父依赖需要重新声明--dependencyManagementdependencies!-- spring-boot依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-dependencies/artifactIdversion2.3.12.RELEASE/versiontypepom/typescopeimport/scope/dependency!-- spring-cloud alibaba依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2.2.7.RELEASE/versiontypepom/typescopeimport/scope/dependency/dependencies/dependencyManagement!--com.alibaba.cloud 2.2.7版本有个坑需要把spring-context-support升到1.0.11才能启动项目--dependenciesdependencygroupIdcom.alibaba.spring/groupIdartifactIdspring-context-support/artifactIdversion1.0.11/version/dependency/dependencies5、然后在 springboot-dubbo-consumer 和 springboot-dubbo-provider 两个模块 pom.xml 中进行具体依赖的配置
dependencies!--引入 springboot-dubbo-interface 接口服务--dependencygroupIdorg.example/groupIdartifactIdspringboot-dubbo-interface/artifactIdversion1.0-SNAPSHOT/version/dependency!-- springboot 依赖--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!-- nacos 服务的注册发现 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency!-- nacos 配置中心做依赖管理 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-dubbo/artifactId/dependency!-- dubbo-apache --dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactIdversion2.7.8/version/dependency/dependencies6、定义服务接口 package org.dubbo;public interface DemoService {String sayHello(String name);
}7、配置服务端yml文件 server:port: 8010spring:# 应用名称nacos会将改名称作为服务名称application:name: springboot-dubbo-providercloud:nacos:server-addr: localhost:8848# 注册中心discovery:namespace: public #命名空间如proddev默认public# 配置中心config:server-addr: localhost:8848dubbo:protocol:name: dubboport: -1registry:address: nacos://localhost:88488、配置消费端yml文件 server:port: 8011spring:# 应用名称nacos会将改名称作为服务名称application:name: springboot-dubbo-consumercloud:nacos:server-addr: localhost:8848# 注册中心discovery:namespace: public #命名空间如proddev默认public# 配置中心config:server-addr: localhost:8848dubbo:protocol:name: dubboport: -1registry:address: nacos://localhost:88489、定义服务端的实现 和 服务端启动类 实现类
package org.dubbo.provider;import org.apache.dubbo.config.annotation.DubboService;
import org.dubbo.DemoService;DubboService
public class DemoServiceImpl implements DemoService {Overridepublic String sayHello(String name) {return Hello name;}
}启动类
package org.dubbo.provider;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
EnableDubbo
SpringBootApplication
public class ProviderApplication {public static void main(String[] args) {SpringApplication.run(ProviderApplication.class, args);}
}10、定义消费端 启动类和调用类 启动类
package org.dubbo.consumer;import org.apache.dubbo.config.spring.context.annotation.EnableDubbo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
EnableDubbo
public class ConsumerApplication {public static void main(String[] args) {SpringApplication.run(ConsumerApplication.class, args);}
}调用类
package org.dubbo.consumer;import java.util.Date;import org.apache.dubbo.config.annotation.DubboReference;
import org.dubbo.DemoService;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;Component
public class Task implements CommandLineRunner {DubboReferenceprivate DemoService demoService;Overridepublic void run(String... args) throws Exception {String result demoService.sayHello(world);System.out.println(Receive result result);new Thread(()- {while (true) {try {Thread.sleep(1000);System.out.println(new Date() Receive result demoService.sayHello(world));} catch (InterruptedException e) {e.printStackTrace();Thread.currentThread().interrupt();}}}).start();}
}11、分别先后启动 服务启动类 和 消费启动类当消费启动类控制台看到如下信息则说明成功了。 还可在nacos中看到注入的两个服务
5、总结
简单理解在微服务中使用Dubbo实现RPC远程接口调用只需要满足如下几个条件
1、导入org.apache.dubbo maven依赖。 2、配置基于dubbo的yml配置文件 3、在启动类加上EnableDubbo注解 4、被调用接口实现类使用DubboService注解 5、调用接口时使用DubboReference注解
参考地址 https://cn.dubbo.apache.org/zh-cn/overview/what/overview/ https://spring.io/projects/spring-cloud https://blog.csdn.net/x734400146/article/details/108087926