0%

Dubbo+zookeeper

狂神说SpringBoot17:Dubbo和Zookeeper集成
https://mp.weixin.qq.com/s?__biz=Mzg2NTAzMTExNg==&mid=2247483947&idx=1&sn=0c8efabbaf9b8ca835d862e6e0a2254f&scene=19#wechat_redirect

微服务的论文(必看):

英文:https://martinfowler.com/articles/microservices.html
中文:https://www.cnblogs.com/liuning8023/p/4493156.html

架构演进:

三层ORM——>三层MVC——>分布式RPC——>分布式微服务SOA

Dubbo是分布式微服务架构,他需要你额外的添加一个注册中心,一般推荐使用zookeeper。
Dubbo服务的注册与发现流程:

zookeeper的官网:

http://www.apache.org/dyn/closer.cgi/zookeeper/
如果你自己去下载,请将默认的zoo_sample.cfg 改名为 zoo.cfg。
zookeeper的配置文件zoo.cfg:
端口(默认2181)、心跳时间等信息

服务提供者:

需要添加的依赖(pom.xml)

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
<!--添加dubbo相关依赖-->
<dependency>
<groupId>com.alibaba.spring.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.0.0</version>
<!-- 排除依赖 -->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.netty</groupId>
<artifactId>netty</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--zookeeper-->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>

修改配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
#springboot集成dubbo的配置
#发布的服务名称 名称可改
spring.dubbo.application.id=dubbo_provider
spring.dubbo.application.name=dubbo_provider
#连接注册中心
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#表示服务提供者
spring.dubbo.server=true
#指定用dubbo协议 不能改
spring.dubbo.protocol.name=dubbo
#指定服务提供者的端口 可以改
spring.dubbo.protocol.port=20880

在spring boot的启动类上贴注解@EnableDubboConfiguration // 表示开启dubbo
在业务类(服务)上面贴注解
@Service(interfaceClass = HelloService.class,timeout = 1000)
@Component // 添加到bean容器

服务消费者:

依赖同上,只需要少量的配置即可。

1
2
3
4
#springboot整合dubbbo
spring.dubbo.application.name=dubbo-consumer
spring.dubbo.application.id=dubbo-consumer
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181

同样在启动类上面贴注解@EnableDubboConfiguration
在调用服务(Controller)上,我们通过贴注解
@Reference(interfaceClass = 接口类.class,check = false)

监控中心dubbo admin:

1:下载地址:
https://github.com/apache/dubbo-admin/tree/master
2:教程(本文最开始的地方,或点我,或就看老王的教程)
执行jar包或者war包(需要在tomcat开启),如果是war包,tomcat的端口需要配置为7001。
3:访问地址(如果是线上,自行更换IP):
http://localhost:7001/dubbo-admin-2.5.6

服务抽取:

我们可以将实体、接口抽取成两个模块,分别使服务的提供者和消费者来导入依赖并使用他们。
需要注意的是,实体需要序列化,实现Serializable接口即可。
(简单图示)

抽取的关键在于分离关注点。