# 搭建Dubbo + Zookeeper
# 搭建Zookeeper
选择docker compose搭建。创建docker-compose.yml文件。执行docker-compose up -d
version: '3.5'
services:
zoo1:
image: wurstmeister/zookeeper
restart: always
container_name: zk1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
- dubbo-net
zoo2:
image: wurstmeister/zookeeper
restart: always
container_name: zk2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
- dubbo-net
zoo3:
image: wurstmeister/zookeeper
restart: always
container_name: zk3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
networks:
- dubbo-net
dubbo-admin:
image: apache/dubbo-admin
container_name: dubbo
ports:
- 8089:8080
networks:
- dubbo-net
environment:
- admin.registry.address=zookeeper://zoo1:2181?backup=zoo2:2181,zoo3:2181
- admin.config-center=zookeeper://zoo1:2181?backup=zoo2:2181,zoo3:2181
- admin.metadata-report.address=zookeeper://zoo1:2181?backup=zoo2:2181,zoo3:2181
depends_on:
- zoo1
- zoo2
- zoo3
networks:
dubbo-net:
name: dubbo-net
driver: bridge
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# SpringBoot集成dubbo
# 导入jar包(dubbo+zk)
<!--引入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.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</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>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 提供者
1.提供者的application.yml文件
server:
port: 8081
dubbo:
application:
name: provider-server #应用名称
registry:
address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183 #注册地址
scan:
base-packages: com.warren.providerserver.service # 扫描提供包
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
2.提供接口
@DubboService //可以被扫描到,在项目一启动就自动注册到注册中心
@Component //使用了Dubbo后尽量不要用service注解
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return "warre dubbo";
}
}
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 消费者
1.消费者的application.yml文件
server:
port: 8082
dubbo:
application:
name: provider-server
registry:
address: zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
2.消费接口
//放入容器中
@Service
public class UserService {
//想拿到提供的票
//引入
//引入pom坐标, 可以定义路径相同的接口
@DubboReference
// @Reference(version = "1.0.0")
TicketService ticketService;
public void buyTicket() {
ticketService.getTicket();
System.out.println("在注册中心");
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 总结步骤
1.提供者提供服务
1.导入依赖
2.配置注册中心的地址,以及服务发现名,和要扫描的包
3.在想要被注册的服务上面-增加一个注解@DubboService
2.消费者如何消费
1.导入依赖
2.配置注册中心的地址,配置自己服务名
3.从远处引入-@DubboReference
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 错误
问题1
log4j:WARN Please initialize the log4j system properly.
https://stackoverflow.com/questions/6608775/please-initialize-the-log4j-system-properly-while-running-web-service
问题2
java.lang.NoClassDefFoundError: org/apache/curator/framework/CuratorFrameworkFactory 缺少curator依赖
问题3
java.lang.NoClassDefFoundError: org/apache/curator/framework/listen/StandardListenerManager
问题4
dubbo admin如果没有展示服务 需要重启dubbo-admin服务,很坑 提供和接口名一定要一致
# 相关资料
全量分析 阅读量:
评 论:
← kafka搭建以及使用 xxl-job →