勾哥:Dubbo 是一款高性能、轻量级的 RPC 框架,由阿里开源,从 Apache 孵化毕业并成为顶级项目。之后很快就成为阿里、京东、小米、携程等大厂热衷的技术栈。使用 Dubbo 和对其感兴趣的 Java 开发者非常多,所以我们请杨大从 Dubbo 基础开始讲起,想进大厂的同学跟住!

下面我将从示例来简单介绍 Dubbo 的基本使用。

首先,你需要启动 ZooKeeper 作为注册中心,然后编写一个业务接口作为 Provider 和 Consumer 的公约。

启动 ZooKeeper

Provider 的地址以及配置信息是通过注册中心传递给 Consumer 的。Dubbo 支持的注册中心尽管有很多,但在生产环境中,基本都是用 ZooKeeper 作为注册中心。

那怎么去启动 ZooKeeper 呢?

首先,你得下载 包(下载地址:)。下载完成之后执行如下命令解压缩:

tar -zxf

解压完成之后,进入 目录,复制 conf/ 文件并重命名为 conf/,之后执行如下命令就可以启动 ZooKeeper了。

>./bin/zkServer.sh start

# 下面为输出内容

ZooKeeper JMX enabled by default 

Using config: /Users/xxx//bin/../conf/ # 配置文件 

Starting zookeeper ... STARTED # 启动成功

业务接口

在使用 Dubbo 之前,你还需要一个业务接口,这个业务接口可以认为是 Dubbo Provider 和 Dubbo Consumer 的公约,反映出很多信息:

  • Provider ,如何提供服务、提供的服务名称是什么、需要接收什么参数、需要返回什么响应

  • Consumer ,如何使用服务、使用的服务名称是什么、需要传入什么参数、会得到什么响应

dubbo-demo-interface 模块就是定义业务接口的地方,如下图所示:

e327130415741a6db5f1fb3fb6c6c1e2.png

其中,DemoService 接口中定义了两个方法:

public interface DemoService {

    String sayHello(String name); // 同步调用

    // 异步调用

    default CompletableFuture<String> sayHelloAsync(String name) {

          return CompletableFuture.completedFuture(sayHello(name));

    }

 }

Demo:基于 XML 配置

在 dubbo-demo 模块下的 dubbo-demo-xml 模块,提供了基于 Spring XML 的 Provider 和 Consumer。

  • dubbo-demo-xml-provider 模块

e4d1330f3dd59d546f6d3edbfe1a0db7.png

在其 中除了一堆 dubbo 的依赖之外,还有依赖了 DemoService 这个公共接口:

<dependency>

    <groupId>

    <artifactId>dubbo-demo-interface</artifactId>

    <version>${}</version>

 </dependency>

DemoServiceImpl 实现了 DemoService 接口,sayHello() 方法直接返回一个字符串,sayHelloAsync() 方法返回一个 CompletableFuture 对象。

在 配置文件中,会将 DemoServiceImpl 配置成一个 Spring Bean,并作为 DemoService 服务暴露出去:

<!-- 配置为 Spring Bean -->

<bean class=""/>

<!-- 作为 Dubbo 服务暴露出去 --> 

<dubbo:service interface="" ref="demoService"/>

还有就是指定注册中心地址(就是前面 ZooKeeper 的地址),这样 Dubbo 才能把暴露的 DemoService 服务注册到 ZooKeeper 中:

<!-- Zookeeper 地址 --> 

<dubbo:registry address="zookeeper://"/>

最后,在 Application 中写个 main() 方法,指定 Spring 配置文件并启动 ClassPathXmlApplicationContext 即可。

  • dubbo-demo-xml-consumer 模块

6fe58bd15a01ce0e78a91d0a97ee491b.png

在 中同样依赖了 dubbo-demo-interface 这个公共模块。

在 配置文件中,会指定注册中心地址(就是前面 ZooKeeper 的地址),这样 Dubbo 才能从 ZooKeeper 中拉取到 Provider 暴露的服务列表信息:

<!-- Zookeeper地址 -->

 <dubbo:registry address="zookeeper://"/>

还会使用 dubbo:reference 引入 DemoService 服务,后面可以作为 Spring Bean 使用:

<!--引入DemoService服务,并配置成Spring Bean--> 

<dubbo:reference check="false"

                   interface=""/>

最后,在 Application 中写个 main() 方法,指定 Spring 配置文件并启动 ClassPathXmlApplicationContext 之后,就可以远程调用 Provider 端的 DemoService 的 sayHello() 方法了。

最近每天都有不少同学加我,受众若惊哈哈。关注我的朋友们不如说说自己想看啥,什么深度,或者提提意见。抽两个朋友赠珍藏大厂面试视频资料(本周五开)!

bb026e41822ae050f0dcd324f3d57957.png
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐