dubbo provider异步_Dubbo源码:跟着Demo学习基本使用

fc8b7a7498f26ce93e5c1d213d955767.png

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

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

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

启动 ZooKeeper

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

那怎么去启动 ZooKeeper 呢?

首先,你得下载 zookeeper-3.4.14.tar.gz 包(下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/)。下载完成之后执行如下命令解压缩:

tar -zxf zookeeper-3.4.14.tar.gz

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

>./bin/zkServer.sh start 
# 下面为输出内容 ZooKeeper JMX enabled by default 
Using config: /Users/xxx/zookeeper-3.4.14/bin/../conf/zoo.cfg # 配置文件 
Starting zookeeper ... STARTED # 启动成功

业务接口

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

  • Provider ,如何提供服务、提供的服务名称是什么、需要接收什么参数、需要返回什么响应
  • Consumer ,如何使用服务、使用的服务名称是什么、需要传入什么参数、会得到什么响应

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

a120436e47b58a63b223d4c3fdd2b94c.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 模块

dfcd773d0215d4892e7ce800cf8f865f.png

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

<

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

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

<!-- 

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

<!-- 

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

  • dubbo-demo-xml-consumer 模块

c02f9911282727c81e4fe88c1a80dc2a.png

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

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

<!-- 

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

<!--

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

最近每天都有不少同学加我,受众若惊哈哈。关注勾哥的朋友们不如说说自己想看啥,什么深度,或者提提意见。

本文转自公众号:勾勾的Java宇宙

欢迎大家来留言互动!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值