依赖配置
1. Dubbo 起步依赖
Dubbo 是一款高性能的 Java RPC 框架,用于快速开发高性能的服务。
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>${dubbo.version}</version>
</dependency>
2. ZooKeeper API 管理依赖
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>${curator.version}</version>
</dependency>
3. ZooKeeper 依赖
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
4.版本管理
<properties>
<dubbo.version>2.7.8</dubbo.version>
<curator.version>5.1.0</curator.version>
<zookeeper.version>3.7.0</zookeeper.version>
</properties>
项目文件目录架构
1. API模块
此模块包含Dubbo服务的接口定义和共享模型。
2. 实体模块
此模块包含实体类,与数据库模型相对应。
3. 服务提供者模块
此模块实现Dubbo服务接口,并配置Dubbo提供者的相关属性。
pom.xml
中添加Dubbo和ZooKeeper依赖。application.properties
或application.yml
中配置Dubbo和ZooKeeper的连接信息。
4. 服务消费者模块
此模块使用Dubbo服务接口,并配置Dubbo消费者。
pom.xml
中添加Dubbo依赖。application.properties
或application.yml
中配置Dubbo和ZooKeeper的连接信息。
配置Dubbo和ZooKeeper的连接信息配置
provider配置
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://${local.ip}:3306/dubbotest?useSSL=false
username: root
password: 123456
#dubbo服务提供者的配置:应用名称、注册中心地址、扫描的包; 可选配置:rpc协议和版本
dubbo:
application:
name: dubbo2-provider #应用名称,要求不重复
registry:
address: zookeeper://${local.ip}:2181
scan:
base-packages: com.codeT.dubbo.service #扫描的包
protocol:
name: dubbo #rpc协议
port: 20880 #rpc端口
dev:
ip: 192.168.160.128 #服务器ip
local:
ip: 127.0.0.1
comsumer配置
server:
port: 80
servlet:
context-path: /
#dubbo的消费者配置:应用名称、注册中心地址、扫描的包; 可选配置:启动时检查、超时时间、重试次数
dubbo:
application:
name: dubbo2-consumer #应用名称
registry:
address: zookeeper://${local.ip}:2181 #注册中心地址
scan:
base-packages: com.codeT.dubbo.controller #扫描的包
consumer:
check: false #启动时检查
timeout: 30000 #rpc调用的超时时间
retries: 0 #调用失败后的生效次数
dev:
ip: 192.168.160.128 #服务器ip
local:
ip: 127.0.0.1
提供者和消费者是如何进行通信的?
核心注解
服务提供者(Provider)
@Service
注解
- 作用:将一个类标记为Dubbo服务提供者。
服务消费者(Consumer)
@Reference
注解
- 作用:注入远程服务引用。
启动Dubbo自动配置
@EnableDubbo
注解
@EnableDubbo
@SpringBootApplication
public class ConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(ConsumerApplication.class, args);
}
}
或者在配置文件进行扫描
scan:
base-packages: com.codeT.dubbo.controller #扫描的包
项目demo地址
https://gitee.com/yellowpeng/dubbo-demo-springboot-master