专栏首页Java编程技术Dubbo剖析-搭建一个简单的分布式系统(1)

Dubbo剖析-搭建一个简单的分布式系统(1)

一、前言

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

image.png

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

二、服务注册中心

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

image.png

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

  • 首先你需要在 http://zookeeper.apache.org/releases.html 下载一个zk的包,并解压,本文作者使用的是zookeeper-3.4.11这个版本
  • 然后修改zookeeper-3.4.11/conf文件夹里面的zoo.cfg文件里面的dataDir为一个存在的以data结尾的文 件

image.png

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

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

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

三、服务提供与消费

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

image.png

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

3.1 SDK模块

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

image.png

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

3.2 服务提供模块

在该模块引入SDK模块,其实是为了使用UserServiceBo这个接口。 然后UserServiceImpl实现代码如下:

image.png

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

image.png

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

image.png

测试类TestProvider代码如下:

image.png

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

image.png

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

3.2 服务消费模块

首先引入SDK 二方包 配置文件consumer.xml内如如下:

image.png

测试类代码如下:

image.png

执行代码输出如下:

image.png

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

四、总结

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Dubbo剖析-搭建一个简单的分布式系统(2)

    前面时间基于Spring的xml配置的方式搭建了一个简单的包含服务提供(Provider),服务注册中心(Registry),服务消费(Consumer)的分布...

    加多
  • 实战Jmeter压测Dubbo服务接口

    最近在做一些业务上云的项目,其中远程Rpc调用方式我们选择了Dubbo,为便于收集压测信息,我们选择了使用Jmeter来做压测工具,本文就来简单介绍如何使用Jm...

    加多
  • 实战Jmeter压测Dubbo服务接口

    最近在做一些业务上云的项目,其中远程Rpc调用方式我们选择了Dubbo,为便于收集压测信息,我们选择了使用Jmeter来做压测工具,本文就来简单介绍如何使用Jm...

    加多
  • 工具使用

    <colgroup><col span="1" width="134"><col span="1" width="134"><col span="1" widt...

    OPice
  • IDEA 配置Tomcat,并发布项目

    week
  • SAP Spartacus CmsComponentConnector

    this.cmsStructureConfigService.getComponentsFromConfig(ids):

    Jerry Wang
  • Docker 日志管理

    用户5760343
  • 树莓派4b烧机+第一次远程连接建立

    tf卡(大于等于8g)、系统、烧写软件(win32diskimager-binary)、PUTTY

    李小白是一只喵
  • 将现有项目上传至github

    1、在github上新建远程仓库(空库),注意不要填写readme,不然github会初始化一个仓库,会和本地仓库产生版本冲突。

    week
  • DevOps 代码质量实战(PHP 版)

    查看完整直播回放:https://cloud.tencent.com/edu/learning/live-2857

    腾讯云大学

扫码关注云+社区

领取腾讯云代金券