开篇之前,先来了解下dubbo服务治理与技术架构,直接看图

dubbogo 调用java List结构_ide

dubbo技术架构图:

dubbogo 调用java List结构_ide_02

1. 新建dubbo项目,目录结构如下

dubbogo 调用java List结构_ide_03

代码说明:

1.代码分为Provider(服务提供方)与consumer(服务订阅方)两块
2.服务提供方Provider提供服务,服务通过接口定义,订阅方也需要引入接口定义,故可以把接口定义拿出来,单独创建项目存放,构建好后,可以放到私有仓库中,供各个相关服务项目引用
3.dubbo通过动态代理方式,构建服务接口的实例对象进行服务调用

2. 添加dubbo依赖,采用consul做注册中心,默认zookeeper

dubbogo 调用java List结构_zookeeper_04

3. 服务注册方式,先采用推荐方式xml,没有使用注册中心

在resource文件夹下,创建META-INF.spring文件夹,在文件夹下,创建provider.xml文件

dubbogo 调用java List结构_配置文件_05

dubbogo 调用java List结构_ide_06

创建service接口及实现

dubbogo 调用java List结构_zookeeper_07

dubbogo 调用java List结构_配置文件_08

4. 创建consumer客户端程序,配置好文件,同provider

在resource文件夹下,创建META-INF.spring文件夹,在文件夹下,consumer.xml文件

dubbogo 调用java List结构_ide_09

在程序注入口出,构建IHelloService服务,调用服务方法

dubbogo 调用java List结构_zookeeper_10

5. 运行provider和consumer

Provider:

dubbogo 调用java List结构_ide_11

Consumer客户端:

dubbogo 调用java List结构_ide_12

成功调用了helloBoy方法

6. 使用zookeeper为注册中心

修改配置文件,zookeeper地址:192.168.231.132:2181
修改provider和consumer配置文件:

dubbogo 调用java List结构_zookeeper_13

如果是 zookeeper 集群的话,使用下面的方式
<dubbo:registry protocol="zookeeper" address="192.168.11.129:2181,192.168.11.137:2181,192.168.11.138:2181"/>
运行provider,报错

dubbogo 调用java List结构_配置文件_14

需要引入curator包(curator-framework和curator-recipes)

dubbogo 调用java List结构_配置文件_15

dubbogo 调用java List结构_配置文件_16

运行还报错(zookeeper not connected)

dubbogo 调用java List结构_配置文件_17


解决:配置文件,添加超时时间

dubbogo 调用java List结构_ide_18

运行provider成功

dubbogo 调用java List结构_配置文件_19

运行Consumer成功

dubbogo 调用java List结构_ide_20

参考文献:

Demo代码仓库:
https://gitee.com/xujk-27400861/springboot-dubbo/