技术栈说明
Dubbo:Dubbo作为RPC框架,能在多个服务之间实现远程服务的调用。比如有两个独立的微服务A和B,A服务想要调用B服务时,因为两者不在同个内存空间中,不能直接调用,所以可以通过Dubbo实现这点。
功能和Spring Cloud的Feign相同,两者都是应用于微服务架构的远程调用框架
Zookeeper:作为注册中心去管理Dubbo服务,这点和Eureka、Nacos相同。
概述
通过一个示例说明Dubbo+Zookeeper在Spring Boot中的应用。
现有两个服务provider和consumer,即生产者和消费者:
实现步骤
- 搭建Zookeeper集群服务作为注册中心(docker-compose)
- Spring Boot项目,添加依赖,并创建三个Module: api:提供Service接口,但不实现 provider:实现api的Service接口 consumer:调用api的Service接口,并对外提供访问接口
期望结果
调用consumer服务的访问接口,能访问到数据,则说明provider实现的服务成功注册到zookeeper注册中心,并被consumer获取到。
实现
Zookeeper集群搭建(docker-compose)
zookeeper.yml:
yml复制代码version: "3"
services:
zk1:
image: zookeeper
network_mode: mynetwork
container_name: zk1
restart: always
hostname: zk1
# 端口映射,三个容器的对外端口是不同的
ports:
- 2181:2181
- 8081:8080
# 路径映射,路径也要注意不同
volumes:
- /etc/localtime:/etc/localtime
- /home/mycontainers/zk1/data:/data
- /home/mycontainers/zk1/datalog:/datalog
environment:
# 当前zk实例的id
- ZOO_MY_ID=1
# 整个zk集群的机器、端口列表
- ZOO_SERVERS=server.1=0.0.0.0:2888:3888;2181 server.2=zk2:2888:3888;2181 s