Dubbo源码:跟着Demo学习基本使用
Posted 勾勾的Java宇宙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo源码:跟着Demo学习基本使用相关的知识,希望对你有一定的参考价值。
勾哥:Dubbo 是一款高性能、轻量级的 RPC 框架,由阿里开源,从 Apache 孵化毕业并成为顶级项目。之后很快就成为阿里、京东、小米、携程等大厂热衷的技术栈。使用 Dubbo 和对其感兴趣的 Java 开发者非常多,所以我们请杨大从 Dubbo 基础开始讲起,想进大厂的同学跟住!
下面我将从示例来简单介绍 Dubbo 的基本使用。
首先,你需要启动 ZooKeeper 作为注册中心,然后编写一个业务接口作为 Provider 和 Consumer 的公约。
启动 ZooKeeper
那怎么去启动 ZooKeeper 呢?
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 模块就是定义业务接口的地方,如下图所示:
其中,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 模块
在其 pom.xml 中除了一堆 dubbo 的依赖之外,还有依赖了 DemoService 这个公共接口:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-demo-interface</artifactId>
<version>${project.parent.version}</version>
</dependency>
DemoServiceImpl 实现了 DemoService 接口,sayHello() 方法直接返回一个字符串,sayHelloAsync() 方法返回一个 CompletableFuture 对象。
在 dubbo-provider.xml 配置文件中,会将 DemoServiceImpl 配置成一个 Spring Bean,并作为 DemoService 服务暴露出去:
<!-- 配置为 Spring Bean -->
<bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/>
<!-- 作为 Dubbo 服务暴露出去 -->
<dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService"/>
<!-- Zookeeper 地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
最后,在 Application 中写个 main() 方法,指定 Spring 配置文件并启动 ClassPathXmlApplicationContext 即可。
dubbo-demo-xml-consumer 模块
在 pom.xml 中同样依赖了 dubbo-demo-interface 这个公共模块。
<!-- Zookeeper地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
还会使用 dubbo:reference 引入 DemoService 服务,后面可以作为 Spring Bean 使用:
<!--引入DemoService服务,并配置成Spring Bean-->
<dubbo:reference id="demoService" check="false"
interface="org.apache.dubbo.demo.DemoService"/>
最后,在 Application 中写个 main() 方法,指定 Spring 配置文件并启动 ClassPathXmlApplicationContext 之后,就可以远程调用 Provider 端的 DemoService 的 sayHello() 方法了。
最近每天都有不少同学加我,受众若惊哈哈。关注我的朋友们不如说说自己想看啥,什么深度,或者提提意见。抽两个朋友赠珍藏大厂面试视频资料(本周五开)!
以上是关于Dubbo源码:跟着Demo学习基本使用的主要内容,如果未能解决你的问题,请参考以下文章
Tensorflow 2.0—— 跟着官方demo学习Tensorflow 2.0框架基本API和用法