一、前言

随着阿里巴巴开源的分布式RPC框架Dubbo成为Apache开源卵化器项目,Dubbo有火了一把。在接下来的一段时间本公众号将会时不时的发布一些dubbo使用与原理剖析的文章。

0082656809a27586c1700bf151a4637c.png

image.png

dubbo架构如上图,本文作为一个开始先讲讲使用dubbo搭建一个简单的含有服务提供(Provider),服务注册中心(Registry),服务消费(Consumer)的分布式系统。

二、服务注册中心

服务注册中心常见的有下面几种实现

2d09558430e2c44140c47387cff5b75c.png

image.png

本文讲解使用zookeeper实现服务注册中心。

首先你需要在 http://zookeeper.apache.org/releases.html 下载一个zk的包,并解压,本文作者使用的是zookeeper-3.4.11这个版本

然后修改zookeeper-3.4.11/conf文件夹里面的zoo.cfg文件里面的dataDir为一个存在的以data结尾的文

af52ca5b891d8c8ce56d4545d39cc795.png

image.png

然后在zookeeper-3.4.11/bin 下运行sh zkServer.sh start-foreground 就会启动zk,会有下面输出

04e3a8613bd39c3b0d58c8ce6d867b5a.png

image.png

可知zk在端口2181进行监听。

至此服务注册中心搭建完毕

三、服务提供与消费

本demo使用maven聚合功能,demo目录如下

d1e40f9027223ea3c867102696aaef80.png

image.png

其中Consumer模块为服务消费者

其中Provider模块为服务提供者

其中SDK模块是一个二方包,用来存放服务提供者所有的接口,是为了代码复用使用。

3.1 SDK模块

里面就定义了一个接口,代码如下:

d00073d9cdcab7dc2f485648b605774e.png

image.png

在该模块执行mvn clean install 命令会按照该模块的jar到本地仓库。

3.2 服务提供模块

在该模块引入SDK模块,其实是为了使用UserServiceBo这个接口。

然后UserServiceImpl实现代码如下:

d151b60cdb70ed43ac795d665eb8d567.png

image.png

配置文件provider.xml内容如下:

3aefd7b287b5af3b7f7e55aa67e5c8ae.png

image.png

日志文件log4j.properties内容如下:

fb469604b0ef996dbaf61270a416cc0d.png

image.png

测试类TestProvider代码如下:

c4f3c6c28dd0b0f691cc17222c4438fa.png

image.png

运行上面代码,在控制台会输出如下:

1a99a9eaf1eadac7d4e8ddd4e81a7199.png

image.png

说明该服务已经注册到了zk.

3.2 服务消费模块

首先引入SDK 二方包

配置文件consumer.xml内如如下:

14d7828c0d468f1d310b28ee08eac5d0.png

image.png

测试类代码如下:

764aaa787610eb32bef900cc97fd0b4e.png

image.png

执行代码输出如下:

95b3ecba9262396d7c069dd32fbdd827.png

image.png

说明已经消费到了服务提供者的服务了。

四、总结

本节作为一个引子,简单介绍了Dubbo架构里面的服务提供者,消费者,服务注册中心的简单使用。后期会在本公众号 ‘技术原始积累’ 的精品区下分析dubbo实现原理,敬请期待。

d0c1501a6d8bb921cf36400dc89de69f.png

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐