Dubbo小记

Apache Dubbo |ˈdʌbəʊ| 提供了六大核心能力:面向接口代理RPC调用、负载均衡、服务发现、搞扩展、流量调度、服务治理
Dubbo作为springcloud的二进制方案来发挥Dubbo的性能优势
dubbo有是个角色:注册中心,服务的提供者,服务的消费者,监控中心,其中监控中心可以省略
一.Dubbo基础搭建环境:
1. 搭建注册中心,启动nacos, 执行 startup.bat -m standalone
2. 搭建监控中心,启动 dubbo-admin
资料提供 dubbo-admin-server-0.3.0-SNAPSHOT.jar
执行 java -jar dubbo-admin-server-0.3.0-SNAPSHOT.jar 启动。
监控中心会去注册中心获取使用服务信息,通过UI界面展示。
监控中心 需要 知道 注册中心的地址。
例如:java -jar dubbo-admin-server-0.3.0-SNAPSHOT.jar --server.port=8090
--server.port覆盖jar中的application.yml文件中的参数配置
--admin.registry.address=nacos://127.0.0.1:8848
--admin.config-center=nacos://127.0.0.1:8848
--admin.metadata-report.address=nacos://127.0.0.1:8848
3. 基于提供的 user-server 模块,改造出两个模块 user-consumer、user-provider
`user-provider`
(1)导入dubbo相关的坐标
<!--dubbo的起步依赖-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>2.7.8</version>
</dependency>
(2)yml配置文件
配置dubbo协议、端口20880、扫描dubbo注解包、nacos注册中心
dubbo:
protocol:
name: dubbo
port: 20880
#注册中心的地址
registry:
address: nacos://127.0.0.1:8848
#dubbo注解的包扫描
scan:
base-packages: cn.itcast.user.service
(3)修改UserServiceImpl类上的注解@DubboService
`user-consumer`
(1)导入dubbo相关的坐标(同上)
(2)yml配置文件,只需要配置dubbo的注册中心,除非将来自己被其它模块调用
dubbo:
registry:
address: nacos://127.0.0.1:8848
入门案例:提供者的坐标可以优化,提供者根本不需要spring-boot-start-web
可以使用 spring-boot-start 替换 spring-boot-start-web
同时 server.port 也可以不需要。
dubbo内置netty服务器,一直运行
序列化:java实体类需要实现序列化接口,因为在dubbo远程调用中,会经过网络传输。
二.dubbo高级特性
1. 超时重试
消费者 调用 提供者。
在消费者端配置
dubbo:
registry:
address: nacos://127.0.0.1:8848
consumer:
check: false #关闭了启动检查
retries: 0
timeout: 1000
2. 多版本
在暴露服务时,可以指定服务的版本
@DubboService(version = "1.0")
在服务发现,也要指定对应的版本
@DubboReference(version = "1.0")
作用:灰度测试,平滑升级
3. 负载均衡
dubbo框架号称服务治理,可以对每个服务单独管理。
可以通过dubbo-admin查看该服务有哪些提供者、哪些消费者。
某个服务有多个提供者,消费者在调用的时候,怎么选择??? dubbo决策。
基于权重随机 random @DubboReference(version = "1.0", loadbalance = "random")
基于权重轮询 roundrobin
最小活跃次数 leastactive
一致性HASH consistenthash @DubboReference(version = "1.0", loadbalance = "consistenthash")
4. 启动检查
check: false #关闭了启动检查
在启动消费者的时候,不报错了。
三、spring cloud 整合 dubbo
1. 服务消费者 order
1. 导入坐标
<!--spring cloud alibaba-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
2. 修改配置文件
server:
port: 8082
spring:
datasource:
url: jdbc:mysql://localhost:3306/dubbo-demo?useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
cloud:
nacos:
discovery:
server-addr: localhost:8848
application:
name: order-service
#dubbo消费者
dubbo:
registry:
address: spring-cloud://localhost
consumer:
check: false
retries: 0
3. 注解
@DubboReference(version = "1.0", loadbalance = "random")
private UserService userService;
2. 服务提供者 user
注意:spring cloud 和 dubbo整合后, dubbo-admin失效了。应该去nacos看

浙公网安备 33010602011771号