简介:java系列技术分享(持续更新中…)
初衷:一起学习、一起进步、坚持不懈
如果文章内容有误与您的想法不一致,欢迎大家在评论区指正
希望这篇文章对你有所帮助,欢迎点赞 收藏 ⭐留言更多文章请点击
Dubbo官网
:https://cn.dubbo.apache.org
RPC框架
Nacos安装查看
:Docker如何安装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
引入依赖
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-spring-boot-starterartifactId>
<version>2.7.8version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-registry-nacosartifactId>
<version>2.7.8version>
dependency>
需要远程调用的接口添加@DubboService
注解
添加配置
dubbo:
protocol:
name: dubbo #协议
port: 20881 #端口从20880开始
registry:
address: nacos://127.0.0.1:8848
scan:
base-packages: com.use.service #@DubboService注解所在包
因为在DubboAdmin使用的接口全类名,所以调用接口服务提供者和消费者包名必须一致
引入依赖
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-spring-boot-starterartifactId>
<version>2.7.8version>
dependency>
<dependency>
<groupId>org.apache.dubbogroupId>
<artifactId>dubbo-registry-nacosartifactId>
<version>2.7.8version>
dependency>
@DubboReference
注解dubbo:
registry:
address: nacos://127.0.0.1:8848
服务提供者和消费者调用接口包名必须一致,为了保证双方接口一致,则抽取公共接口模块
在提供者和消费者中引入公共接口模块依赖,实现复用
如果要传输对象, 对象必须实现序列化接口implements Serializable
因为:RPC通信,采用二进制数据格式,所以需要进行序列化处理。
如果先启动服务消费者,@DubboReference
引入远程服务时,因为提供者还没有启动,所以找不到提供者,则会抛出异常
在消费者
添加如下配置即可:
dubbo:
registry:
address: nacos://127.0.0.1:8848
consumer:
check: false #关闭启动检查
@DubboService(version = "2.0.0")
@DubboReference(version = "2.0.0")
1000毫秒
默认是3次
,可以通过配置进行修改。@DubboReference(retries = 0)
dubbo:
registry:
address: nacos://127.0.0.1:8848
consumer:
check: false #关闭启动检查
retries: 0 # 重试次数为0
按权重随机
分配给不同的服务节点。按权重轮训
到不同的服务节点上。最少活跃调用数,相同的活跃数随机
。一致性hash,相同参数的请求总是发到同一提供者。
在服务消费者端:
@DubboReference(loadbalance= "random")
SpringCloud整合Dubbo只需要在nacos中查看即可,不需要在DubboAdmin中查看
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-dubboartifactId>
dependency>
@DubboService
注解注意区别
spring:
application:
name: consumer-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
#配置dubbo,注册中心,暴露的端口和协议,dubbo注解的包扫描
dubbo:
protocol:
name: dubbo
port: 20881
registry:
address: spring-cloud://localhost #使用SpringCloud中的注册中心
scan:
base-packages: com.use.service #dubbo中包扫描
引入依赖
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
dependency>
<dependency>
<groupId>com.alibaba.cloudgroupId>
<artifactId>spring-cloud-starter-dubboartifactId>
dependency>
@DubboReference
注解spring:
application:
name: provider-service
cloud:
nacos:
discovery:
server-addr: localhost:8848
#配置dubbo,注册中心,暴露的端口和协议,dubbo注解的包扫描
dubbo:
registry:
address: spring-cloud://localhost #使用SpringCloud中的注册中心
consumer:
check: false #关闭启动检查
retries: 0 # 重试设置为0