依赖:
<!--dubbo依赖-->
<!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo-spring-boot-starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.6</version>
</dependency>
<!--zookeeper客户端依赖-->
<!-- https://mvnrepository.com/artifact/com.github.sgroschupf/zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>``
</dependency>
<!--日志冲突-->
<!-- 引入zookeeper -->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-recipes</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
<!--排除这个slf4j-log4j12-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
提供者配置文件
server:
port: 8001
dubbo:
application:
name: provider-server #提供者名字
registry:
address: zookeeper://127.0.0.1:2181 #zookeeper注册中心地址
scan:
base-packages: com.knight.service #需要注册
protocol:
name: dubbo
port: 20880 #如果要实现负载均衡效果,修改这里的端口,如果不配置,会显示端口占用
负载均衡的例子配置,与上面的提供者实现负载均衡,只需要修改两处端口号即可
server:
port: 8002
dubbo:
application:
name: provider-server #提供者名字
registry:
address: zookeeper://127.0.0.1:2181 #zookeeper注册中心地址
scan:
base-packages: com.knight.service #需要注册的包
protocol:
name: dubbo
port: 20881
消费者的配置
server:
port: 9001
dubbo:
application:
name: consumer-server
registry:
address: zookeeper://127.0.0.1:2181
提供者例子
@Component //这里相当于正常的@Service,避免与dubbo的@Service混了,建议用@Component
@Service //注意,此处的service注解是dubbo的
public class TicketServiceImpl implements TicketService{
@Value("${server.port}")
private String port;
@Override
public String getTicket() {
return "《德鲁大叔》"+port;
}
}
消费者调用提供者的例子,这里的TicketService接口的路径和提供者一致,不需要实现,即消费者和提供者的接口都是在com.*.service这个路径下,否则会找不到
@Service
public class UserService {
//获得provider提供的票
//想拿到provider提供的方法,要去注册中心拿到服务
@Reference //两种方法拿到注册中心的服务,1、pom坐标,2,定义路径相同的接口名
private TicketService ticketService;
public String getTicket(){
return ticketService.getTicket();
}
}
资料和参考的内容
链接:https://pan.baidu.com/s/1Dw-QMqjskPH_E2xUNgel4g
提取码:5va2